Matematické Fórum

Nevíte-li si rady s jakýmkoliv matematickým problémem, toto místo je pro vás jako dělané.

Nástěnka
22. 8. 2021 (L) Přecházíme zpět na doménu forum.matweb.cz!
04.11.2016 (Jel.) Čtete, prosím, před vložení dotazu, děkuji!
23.10.2013 (Jel.) Zkuste před zadáním dotazu použít některý z online-nástrojů, konzultovat použití můžete v sekci CAS.

Nejste přihlášen(a). Přihlásit

#1 29. 12. 2010 21:56 — Editoval karel88l (29. 12. 2010 22:06)

karel88l
Zelenáč
Příspěvky: 7
Reputace:   
 

Pascal - nejvetsi cislo

Uzivatel zada N cisel,program najde nejvetsi.Mel by se pouzit cyklus while,ale nenapada me podminka urceni toho cisla.

Offline

 

#2 29. 12. 2010 22:01 — Editoval mikl3 (29. 12. 2010 22:09)

mikl3
Příspěvky: 2635
Škola: FS ČVUT (12-16, TZSI, Bc.)
Pozice: Studuji magisterske
Reputace:   78 
 

Re: Pascal - nejvetsi cislo

↑ karel88l: quicksort?

Code:

procedure quicksort(l, r: integer);
var 
  i, j, pivot, pom: integer;
begin
  i := l; j := r;
  pivot := akt[(l + r) div 2];
  repeat
    while (i < r) and (akt[i] < pivot) do i := i + 1;
    while (j > l) and (pivot < akt[j]) do j := j - 1;
    if i <= j then 
    begin
      if i < j then
      begin
        pom := akt[i];
        akt[i] := akt[j];
        akt[j] := pom;
      end;
      i := i + 1;
      j := j - 1
    end
  until i > j;
  if j > l then quicksort(l, j);
  if i < r then quicksort(i, r)
end;

převzato z wikipedie, v quicku máš while, nebo jako nejsem zkušený programátor, ale tohle mě napadlo

Offline

 

#3 29. 12. 2010 22:10 — Editoval karel88l (29. 12. 2010 22:10)

karel88l
Zelenáč
Příspěvky: 7
Reputace:   
 

Re: Pascal - nejvetsi cislo

Neslo by to udelat jednodussi ? Tohle moc nechapu.

Offline

 

#4 29. 12. 2010 22:11 — Editoval mikl3 (29. 12. 2010 22:13)

mikl3
Příspěvky: 2635
Škola: FS ČVUT (12-16, TZSI, Bc.)
Pozice: Studuji magisterske
Reputace:   78 
 

Re: Pascal - nejvetsi cislo

↑ karel88l: jak jsem řekl, nejsem skill, ale jak jinak, než porovnávat hodnoty všech těch čísel, musíme to udělat, stačil by "půl quicksort" né rovnat je všechny, ale projet to, pokud narazím na větší, tak si ho "schovám" a jedu dál a potom po projetí všech ho vypsat

Offline

 

#5 29. 12. 2010 22:15 — Editoval Sulfan (29. 12. 2010 22:17)

Sulfan
Příspěvky: 373
Reputace:   23 
 

Re: Pascal - nejvetsi cislo

zavedeme proměnné:

pocet - v níž bude uloženo N
zadano - kolik čísel již uživatel zadal
nejvetsi - nejvetsi cislo
aktualnicislo - to, co prave uzivatel zadava

Code:

readln(pocet);      // kolik cisel budeme nacitat
zadano:=0;         // vynulujeme
nejvetsi:=0;        // za hodnotu nejvetsi dame nejakou malickou hodnotu

while pocet>=zadano do begin         // budeme postupne nacitat cisla, a zvetsovat pocet jiz projetych cisel
       readln(aktualnicislo);                // nacteme aktualni cislo
       zadano:=zadano+1;                // zvetsime pocet zadanych cisel pro podminku do whilu
       if aktualnicislo>nejvetsi then nejvetsi:=aktualnicislo;                  // kdyz bude aktualni cislo vetsi nez dosavadni nejvetsi tak ho zmenime
end;

writeln(nejvetsi);

Pokud by byla chyba v pascalovske syntaxi, tak se omlouvam, dlouho jsem v něm neprogramoval.

Ten postup, co radí mikl3 je na řazení čísel (tedy čísla seřadí od nejmenšího po největší pomocí metody rozděl a panuj), v tomto případě bych řekl že je až zbytečně komplikovaný a dělá příliš mnoho věcí navíc.

Offline

 

Zápatí

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson