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 24. 10. 2015 18:18

Freedy
Místo: Praha
Příspěvky: 2726
Škola: MFF UK (15-18, Bc.)
Pozice: student
Reputace:   166 
 

2 největší číslo pascal

Dobrý den, vím, že tato otázka je skutečně hloupá, ale já už zkusil opravdu všechno a pascal stále není spokojený
Nemůžete mi někdo prosím vás říct, co je na tomhle špatně?

Mám najít 2 největší číslo z řady celých čísel ukončených -1
Děkuji

Code:

var x, max,min: integer;

begin
    read(x);
    max:=x;
    min:=x;
        while x<>-1 do
            begin
                if x>max then max:=x else
                    begin
                        if x>min then min:=x
                    end;
                read(x);
            end;

    write(min);
    
end.

L'Hospitalovo pravidlo neexistuje. Byl to výsledek Johanna Bernoulliho

Offline

 

#2 24. 10. 2015 19:13

Stýv
Vrchní cenzor
Příspěvky: 5692
Reputace:   215 
Web
 

Re: 2 největší číslo pascal

otázka by spíš měla znít "co je na tomhle dobře?"

Offline

 

#3 24. 10. 2015 19:15

Freedy
Místo: Praha
Příspěvky: 2726
Škola: MFF UK (15-18, Bc.)
Pozice: student
Reputace:   166 
 

Re: 2 největší číslo pascal

↑ Stýv:
děkuju... já si sám nemyslím, že je to něco světoborného.
Jen nějak logicky nemůžu dospět k tomu, co tam teda chybí popřípadě má být jinak.

↑ Stýv:
co by jsi změnil?


L'Hospitalovo pravidlo neexistuje. Byl to výsledek Johanna Bernoulliho

Offline

 

#4 24. 10. 2015 19:38

Stýv
Vrchní cenzor
Příspěvky: 5692
Reputace:   215 
Web
 

Re: 2 největší číslo pascal

zkus si to použít třeba na vstup "1 2 3 4 -1", buď ručně, nebo krokuj pomocí debuggeru. co dělá proměnná min?

Offline

 

#5 24. 10. 2015 19:42 — Editoval Freedy (24. 10. 2015 19:53)

Freedy
Místo: Praha
Příspěvky: 2726
Škola: MFF UK (15-18, Bc.)
Pozice: student
Reputace:   166 
 

Re: 2 největší číslo pascal

No sice vidím ten problém a opravil jsem ho následovně:

Code:

var x, max,min: integer;

begin
    read(x);
    max:=x;
    min:=x;
        while x<>-1 do
            begin
                if x>max then 
                            begin
                                min:=max;
                                max:=x;
                            end;
                         else
                            begin 
                                if x>min then min:=x;
                            end;
                read(x);
            end;


    write(min);
    

end.

Teď zase nechápu, proč je tam špatně to else
Vždyť přece if (podmínka) then (udělej něco) else (pokud neplatí podmínky udělej toto)
A nedovolí mi to else tam nechat. Prý tam má být středních a ne else.
Vůbec nechápu co je na těch vnořených příkazech špatně...


L'Hospitalovo pravidlo neexistuje. Byl to výsledek Johanna Bernoulliho

Offline

 

#6 24. 10. 2015 23:25 — Editoval holyduke (24. 10. 2015 23:28)

holyduke
Příspěvky: 541
Škola: VUT FSI
Reputace:   51 
 

Re: 2 největší číslo pascal

↑ Freedy:
Zdar,
pokud máš víc ifů, tak středník píšeš až za posledním endem. Tzn. ten středník před else tam nemá být.

navíc pokud x>max tak taky automaticky x>min

Offline

 

#7 24. 10. 2015 23:50

Stýv
Vrchní cenzor
Příspěvky: 5692
Reputace:   215 
Web
 

Re: 2 největší číslo pascal

↑ holyduke: to je taková dost specifická poučka, tak bych to ještě trochu rozvedl: v Pascalu se středník používá k oddělování příkazů, na rozdíl od jazyků příbuzných s C, kde se používá k ukončování příkazů. Např. na řádku max:=x; by taky nemusel být středník, ale tady to nevadí, protože tam je prostě jakoby prázdnej příkaz. Mezi if a else ale druhej (prázdnej) příkaz vložit nemůžeš, proto tam nesmí bejt ten středník

Offline

 

#8 25. 10. 2015 00:30

Freedy
Místo: Praha
Příspěvky: 2726
Škola: MFF UK (15-18, Bc.)
Pozice: student
Reputace:   166 
 

Re: 2 největší číslo pascal

↑ Stýv: ↑ holyduke:
Díky moc za pomoc, už vše pracuje tak jak má :)
Já myslel že begin a end; je jakoby samostatnej vloženej příkat, proto za tím end musí být středník.
Ještě jsem tam vložil min:=-maxint. V tomto programu byl problém, že kdybych zadal první číslo maximální, druhé číslo by bylo také maximální. A to by byla chyba. Teď je vše ok.


A omlouvám se, jestli jsou to hloupé otázky :// bohužel zatím je to pro mě nové.
Příjemnej zbytek večera ;)


L'Hospitalovo pravidlo neexistuje. Byl to výsledek Johanna Bernoulliho

Offline

 

Zápatí

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson