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 08. 01. 2010 18:46

gajasek
Místo: Uničov
Příspěvky: 32
Reputace:   
 

Pascal-program na výpočet jízdenky

Ahoj! Jsem úplný začátečník v Pascalu a profesorka nám zadala samostatný úkol. Úkol jsem "skoro" udělal, jen tam mám jeden error, se kterým si nevím rady. Pracujeme v Delphi 7. Nechci aby za mě někdo napsal celý program, jen mi prosím řekněte, co tam mám špatně? Předem děkuji každemu za dobrou radu.

Zadání:
Napište program pro výpočet jízdného. Typ jízdného volíme pomocí jednoduchého menu      (J = jednosměrná, Z = zpáteční, jiná volba znamená ukončení programu). Dále zadáváme počet osob zákaznického jízdného, počet osob zlevněného jízdného a počet ujetých km. Na základě těchto informací program vypočítá celkovou částku, která se má zaplatit. Jízdné je dáno následující tabulkou:

Počet km              Jednosměrná                         Zpáteční
                   Zákaznické   Zlevněné        Zákaznické      Zlevněné
1 až 50               32,-            20,-                 58,-              29,-
51 až 100            62,-           44,-                112,-              56,-
101 až 200         114,-           81,-               208,-              104,-
201 až 300             168,-          112,-              316,-              158,-
301 až 500         294,-          212,-              500,-              250,-
501 a víc            396,-          293,-              704,-              352,-

Můj zdroják výpada takto:

program SP;

{$APPTYPE CONSOLE}

uses
  SysUtils;

var k,h,x,y,o,p:Integer;
    a,b,c:Char;
begin
writeln('Vitejte v programu pro vypocet jizdneho. Postupujte podle dale uvedenych pokynu.');
writeln('--------------------------------------------------------------------------------');
writeln('Vyberte si mezi jednosmernou(stisknete J) jizdenkou a zpatecni(stisknete Z)');
writeln('--------------------------------------------------------------------------------');
readln(c);
case c of
      'J':begin
      writeln('Zvolte mezi zakaznickou(stisknete Z) a zlevnenou(stisknete S) jizdenkou.');
      writeln('--------------------------------------------------------------------------------');
      readln(a);
      case a of
           'Z':begin
           writeln('Zadejte pocet osob.');
           readln(h);
           writeln('Zadejte pocet ujetych km.');
           readln(k);
           if (1<=k)and(k<=50) then x:=32*k*h
           else if (51<=k)and(k<=100) then x:=62*k*h
           else if (101<=k)and(k<=200) then x:=114*k*h
           else if (201<=k)and(k<=300) then x:=168*k*h
           else if (301<=k)and(k<=500) then x:=294*k*h
           else if (501<=k) then x:=396*k*h;
           writeln('---------------------------------');
           writeln('Celkova castka: ',x);
           readln;
           end;
           'S':begin
           writeln('Zadejte pocet osob.');
           readln(h);
           writeln('Zadejte pocet ujetych km.');
           readln(k);
           if (1<=k)and(k<=50) then y:=20*k*h
           else if (51<=k)and(k<=100) then y:=44*k*h
           else if (101<=k)and(k<=200) then y:=81*k*h
           else if (201<=k)and(k<=300) then y:=112*k*h
           else if (301<=k)and(k<=500) then y:=212*k*h
           else if (501<=k) then y:=293*k*h;
           writeln('---------------------------------');
           writeln('Celkova castka: ',y);
           readln;
           end;
           end;
      'Z':begin
      writeln('Zvolte mezi zakaznickou(stisknete Z) a zlevnenou(stisknete S) jizdenkou.');
      writeln('--------------------------------------------------------------------------------');
      readln(b);
      case b of
           'Z':begin
           writeln('Zadejte pocet osob.');
           readln(h);
           writeln('Zadejte pocet ujetych km.');
           readln(k);
           if (1<=k)and(k<=50) then o:=58*k*h
           else if (51<=k)and(k<=100) then o:=112*k*h
           else if (101<=k)and(k<=200) then o:=208*k*h
           else if (201<=k)and(k<=300) then o:=316*k*h
           else if (301<=k)and(k<=500) then o:=500*k*h
           else if (501<=k) then o:=704*k*h;
           writeln('---------------------------------');
           writeln('Celkova castka: ',o);
           readln;
           end;
           'S':begin
           writeln('Zadejte pocet osob.');
           readln(h);
           writeln('Zadejte pocet ujetych km.');
           readln(k);
           if (1<=k)and(k<=50) then p:=29*k*h
           else if (51<=k)and(k<=100) then p:=56*k*h
           else if (101<=k)and(k<=200) then p:=104*k*h
           else if (201<=k)and(k<=300) then p:=158*k*h
           else if (301<=k)and(k<=500) then p:=250*k*h
           else if (501<=k) then p:=352*k*h;
           writeln('---------------------------------');
           writeln('Celkova castka: ',p);
           readln;
           end;
           end;
      end;
    end
    else exit;
    end;
end.

Toto je chyba, která se zobrazí při kompilaci:

http://forum.matweb.cz/upload/1262972184-chyba.png


"Nemožné – to slovo najdeš jen ve slovníku hlupáků." - Napoleon Bonaparte

Offline

  • (téma jako vyřešené označil(a) byk7)

#2 08. 01. 2010 19:01

mikee
Veterán
Příspěvky: 533
Reputace:   12 
 

Re: Pascal-program na výpočet jízdenky

↑ gajasek:
Mne sa zda, ze ti pred tym cerveno vysvietenym riadkom chyba este jedno "end;", ale nie som si tym isty, vyskusaj.
Inak nic v zlom, ale mas to pomerne neprehladne :) Odporucam vynechavat riadky po nejakych blokoch, pretoze takto sa ti zleje vsetko dokopy a sa potom tazko hlada chyba :)

Offline

 

#3 08. 01. 2010 19:02 — Editoval BrozekP (08. 01. 2010 19:06)

Pavel Brožek
Místo: Praha
Příspěvky: 5694
Škola: Informatika na MFF UK
Pozice: Student
Reputace:   194 
 

Re: Pascal-program na výpočet jízdenky

↑ gajasek:

Já bych zase zvolil přehlednější odsazování (nějak odsadit jednotlivé části case) :-).

Myslím, že těch endů na konci máš moc. (Edit: Tak ne, mikee má pravdu a na konci jich je akorát :-) )

Offline

 

#4 08. 01. 2010 20:50

gajasek
Místo: Uničov
Příspěvky: 32
Reputace:   
 

Re: Pascal-program na výpočet jízdenky

↑ gajasek:

Zkoušel jsem různě experimentovat s "end;" ale bez úspěchu. Mě spíš vadí chyba ':='expected but ':' found, naprosto nechápu.


"Nemožné – to slovo najdeš jen ve slovníku hlupáků." - Napoleon Bonaparte

Offline

 

#5 08. 01. 2010 21:00 — Editoval LukasM (08. 01. 2010 21:03)

LukasM
Příspěvky: 3274
Reputace:   193 
 

Re: Pascal-program na výpočet jízdenky

↑ gajasek:
Pokud se nepletu, pravdu má mikee, napiš před ten řádek ještě jeden "end;" Každá větev příkazu case musí být uzavřena endem, a potom nakonec se musí uzavřit dalším endem (který tam nemáš) ten příkaz case.

Endy na konci jsem nepočítal, to už určitě zvládneš.
Edit: teď jsem přečetl edit od Pavla - takže endy na konci jsou v pořádku a nepletu se.

Offline

 

#6 08. 01. 2010 21:01

mikee
Veterán
Příspěvky: 533
Reputace:   12 
 

Re: Pascal-program na výpočet jízdenky

↑ gajasek:
No tou chybou sa velmi nezaoberaj, prekladac ti chce povedat ze tam mas vlozit to ':=' ako operator priradenia, ale to tam nechceme mat, takze treba len hladat chybu inde :)
Skus si to asi predsa len zprehladnit tymi vynechanymi riadkami a aj odsadenim ako radi BrozekP :) Ja by som sa s tym pohral sam, ale zial nemam nainstalovane Delphi a uz som v tom pomerne dlho nic nerobil, takze to takto nevidim. Ak nie je chyba v tom "end", tak potom asi uz iba nejaky preklep, ale nenasiel som ziadny.. Takze snad niekto iny pomoze :)

Offline

 

#7 08. 01. 2010 21:03 — Editoval Stýv (08. 01. 2010 21:08)

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

Re: Pascal-program na výpočet jízdenky

ona by se ta chyba hledala líp, kdyby tam nebylo všechno zbytečně čtyřikrát...

edit: jo, a opravdu tam chybí end;

Offline

 

#8 09. 01. 2010 14:36 — Editoval hradecek (09. 01. 2010 15:48)

hradecek
Příspěvky: 772
Pozice: Student
Reputace:   25 
Web
 

Re: Pascal-program na výpočet jízdenky

↑ gajasek: No tak ja som si to začal prepisovať, a nakoniec som to trochu štylisticky prerobil, ale návrh zostáva tvoj. Kompilátor mi nezistil žiadnu chybu.
Takže si to môžeš porovnať nie je tam veľký rozdiel. Keby niečo tak sa spýtaj.



Čo sa týka toho endu...a našiel som ti tam ešte pár ďaľších chýb(Napr: 4 riadok od konca)
http://forum.matweb.cz/upload/1263048395-Pascal.jpg


Netrápte sa nad svojimi problémami s matematikou, môžem vás uistiť, že tie moje sú ešte väčšie. ~~Albert Einstein~~
Jak spozná člověk, že není pitomec ? - Moudrý člověk to nepozná nikdy a blbci je to jedno. ~~Jak přicházejí básnici o iluze~~
Někteří lidi se nikdy nezmění. Anebo se rychle změní a pak se zase rychle změní nazpátek. ~~Homer Simpson~~

Offline

 

Zápatí

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson