Pascal Cyklus While chyba

Místo pro dotazy a rady ohledně programovacích jazyků (C++, C#, PHP, ASP, Javascript, VBS..) a tvorby webových stránek

Moderátor: Mods_senior

Uživatelský avatar
Akrej
Level 5.5
Level 5.5
Příspěvky: 2999
Registrován: 19 čer 2012 18:48

Pascal Cyklus While chyba

Příspěvek od Akrej »

Pracuji na takovem jednoduchem programu kde se vytvoři test potom se vrati člověk do menu a spusti test jenomže mi to nefunguje chcu tam doplnit cyklus while ale když ho tam tam tak mi jenom problikne cmd nebo to rozhodi celi program přidavam kod kdyby si někdo věděl rady tak diky mužete mi to tam klidně dopnit aby to bylo funkční bude jenom rad morduju se stim 20 minut

Kód: Vybrat vše

program Tester;

uses Crt;
var menu,volba:integer;
var ot1,ot2,ot3,ot4,ot5,odpo1,odpo2,odpo3,odpo4,odpo5,a,b,c,d,f:string;
begin
        writeln('Tester:');
     ClrScr;
     writeln('Vytvorit test [1]');
     writeln('Spustit test test [2]');
     readln(volba);
     readln();


     if (volba = 1) then
     begin
     writeln('Napis prvni otazku:  ');
     readln(ot1);
     writeln('Napis druhou otazku:  ');
     readln(ot2);
     writeln('Napis treti otazku:  ');
     readln(ot3);
     writeln('Napis cvrtou otazku:  ');
     readln(ot4);
     writeln('Napis patou otazku:  ');
     readln(ot5);
     clrscr;
     writeln('Napis spravnou odpoved na:', ot1);
     readln(odpo1);
      writeln('Napis spravnou odpoved na:', ot2);
     readln(odpo2);
      writeln('Napis spravnou odpoved na:', ot3);
     readln(odpo3);
      writeln('Napis spravnou odpoved na:', ot4);
     readln(odpo4);
      writeln('Napis spravnou odpoved na:',ot5);
     readln(odpo5);
     writeln('Ulozit test a vratit se do menu [3]');
     readln(menu);
     readln(volba);


     if (volba = 2) then
     begin
     write(ot1);
     read(a);
     write(ot2);
     read(b);
     write(ot3);
     read(c);
     write(ot4);
     read(d);
     write(ot5);
     read(f);
     end;


       end;
       end.
"Nejsem nerozumný. Jen nemám ten samý rozum jako vy."
Diogénes ze Sinopé
-------------------------------------
„Mějte dobrou náladu. Dobrá nálada vaše problémy sice nevyřeší, ale naštve tolik lidí kolem, že stojí za to si ji užít.“
Jan Werich
--------------------------------------
Snažím se psát bez chyb
-------------------------
Uživatelský avatar
faraon
Master Level 8.5
Master Level 8.5
Příspěvky: 7415
Registrován: 23 pro 2010 09:23

Re: Pascal Cyklus While chyba

Příspěvek od faraon »

Cyklus s podmínkou na začátku:

Kód: Vybrat vše

while (podmínka)
  begin
    ...
  end;
Dokud platí podmínka, provádí se pořád dokola ...
Z toho vyplývá, že pokud při vstupu do cyklu podmínka neplatí, neprovede se ani jednou!

Opravdu to chceš udělat tak, že volba 2 je vnořená ve volbě 1?

Kód: Vybrat vše

if (volba = 1) then
  begin
    ...
    readln(menu);
    readln(volba);

    if (volba = 2) then
      begin
        ...
      end;
  end;
Sice to není nejlepší způsob jak udělat nějaké vícenásobné větvení, ale neměly by ležet spíš za sebou?
"Král Lávra má dlouhé oslí uši, král je ušatec!

(pravil K. H. Borovský o cenzuře internetu)
Uživatelský avatar
Akrej
Level 5.5
Level 5.5
Příspěvky: 2999
Registrován: 19 čer 2012 18:48

Re: Pascal Cyklus While chyba

Příspěvek od Akrej »

I když tma dam cyklus while stale jenom problikne cmd
přidavam upraveny kod něco jsem i přidal doporučuji vyzkoušet

Kód: Vybrat vše

program Tester;

uses Crt;
var volba:integer;
var ot1,ot2,ot3,ot4,ot5,odpo1,odpo2,odpo3,odpo4,odpo5,a,b,c,d,f:string;
begin

        writeln('Tester:');
       readln();
     ClrScr;
     writeln('Vytvorit test [1]');
     writeln('Spustit test test [2]');
     readln(volba);

     if (volba = 1) then
     begin
     writeln('Napis prvni otazku:  ');
     readln(ot1);
     writeln('Napis druhou otazku:  ');
     readln(ot2);
     writeln('Napis treti otazku:  ');
     readln(ot3);
     writeln('Napis cvrtou otazku:  ');
     readln(ot4);
     writeln('Napis patou otazku:  ');
     readln(ot5);
     clrscr;
     writeln('Napis spravnou odpoved na:', ot1);
     readln(odpo1);
      writeln('Napis spravnou odpoved na:', ot2);
     readln(odpo2);
      writeln('Napis spravnou odpoved na:', ot3);
     readln(odpo3);
      writeln('Napis spravnou odpoved na:', ot4);
     readln(odpo4);
      writeln('Napis spravnou odpoved na:',ot5);
     readln(odpo5);
     writeln('Ulozit test a vratit se do menu [3]');
     readln(volba);

      if (volba = 3) then
     begin
          ClrScr;
          writeln('Vytvorit test [1]');
     writeln('Spustit test test [2]');
     readln(volba);
     end
     else
          writeln('Program bude ukoncen');





     end;
     if (volba = 2) then
     begin
     writeln(ot1);
     readln(a);
     writeln(ot2);
     readln(b);
     writeln(ot3);
     readln(c);
     writeln(ot4);
     readln(d);
     writeln(ot5);
     readln(f);
     end;


     if (odpo1 = a) then
      begin
     writeln('Spravne');
     end
     else
      begin
      writeln('Spatne');

           end;



       end.
"Nejsem nerozumný. Jen nemám ten samý rozum jako vy."
Diogénes ze Sinopé
-------------------------------------
„Mějte dobrou náladu. Dobrá nálada vaše problémy sice nevyřeší, ale naštve tolik lidí kolem, že stojí za to si ji užít.“
Jan Werich
--------------------------------------
Snažím se psát bez chyb
-------------------------
Uživatelský avatar
faraon
Master Level 8.5
Master Level 8.5
Příspěvky: 7415
Registrován: 23 pro 2010 09:23

Re: Pascal Cyklus While chyba

Příspěvek od faraon »

Je to nějaké zmatené, nevím co to přesně má ten program dělat.

Zkus si ze všeho nejdřív udělat ten cyklus while, který poběží dokud nezadáš třeba číslo nebo písmeno, které ho má ukončit. Když zadáš něco jiného, zeptá se znova, a tak pořád dokola... A nezapomeň před začátkem nastavit řídící proměnnou na nějakou vhodnou hodnotu!
"Král Lávra má dlouhé oslí uši, král je ušatec!

(pravil K. H. Borovský o cenzuře internetu)
Uživatelský avatar
Akrej
Level 5.5
Level 5.5
Příspěvky: 2999
Registrován: 19 čer 2012 18:48

Re: Pascal Cyklus While chyba

Příspěvek od Akrej »

v tom programu si na začatku v menu vybereš jestli chceš udělat test nebo spustit test 1. si to vytvořiš na konci chcu aby tě to vratilo do menu a mohl si test spustit + ti to ještě ukaže jestli to máš dobre nebo ne u každe otazky
"Nejsem nerozumný. Jen nemám ten samý rozum jako vy."
Diogénes ze Sinopé
-------------------------------------
„Mějte dobrou náladu. Dobrá nálada vaše problémy sice nevyřeší, ale naštve tolik lidí kolem, že stojí za to si ji užít.“
Jan Werich
--------------------------------------
Snažím se psát bez chyb
-------------------------
Uživatelský avatar
faraon
Master Level 8.5
Master Level 8.5
Příspěvky: 7415
Registrován: 23 pro 2010 09:23

Re: Pascal Cyklus While chyba

Příspěvek od faraon »

Píšu to z hlavy, takže neručím za chyby:

Kód: Vybrat vše

program Menu;

var
  volba:integer;
  konec:boolean;

begin
  konec:=false;

  while (konec=false) do
    begin
      writeln('Menu:');
      writeln('1 - ABC');
      writeln('2 - XYZ');
      writeln('3 - konec');
      write('volba: ');
      readln(volba);

      if volba=1 then writeln('ABC');

      if volba=2 then writeln('XYZ');

      if volba=3 then konec:=true;
    end;

  readln;
end.
To větvení by se dalo vylepšit pomocí else, takže by se zjistila i chybná volba, která není v nabídce, to třeba někdy příště.
"Král Lávra má dlouhé oslí uši, král je ušatec!

(pravil K. H. Borovský o cenzuře internetu)
Uživatelský avatar
Akrej
Level 5.5
Level 5.5
Příspěvky: 2999
Registrován: 19 čer 2012 18:48

Re: Pascal Cyklus While chyba

Příspěvek od Akrej »

no zajimave akorat se po každe s opakuje menu když zvolim 1 tak to napiše ABC ale vyskočí menu
"Nejsem nerozumný. Jen nemám ten samý rozum jako vy."
Diogénes ze Sinopé
-------------------------------------
„Mějte dobrou náladu. Dobrá nálada vaše problémy sice nevyřeší, ale naštve tolik lidí kolem, že stojí za to si ji užít.“
Jan Werich
--------------------------------------
Snažím se psát bez chyb
-------------------------
Uživatelský avatar
faraon
Master Level 8.5
Master Level 8.5
Příspěvky: 7415
Registrován: 23 pro 2010 09:23

Re: Pascal Cyklus While chyba

Příspěvek od faraon »

Akrej píše:na konci chcu aby tě to vratilo do menu a mohl si test spustit
Však tak to má být, ne? Aspoň jsi to tak popsal ;-)

Podstatný je ten cyklus, a jeho ukončení. Co se bude dít uvnitř něj je jen na tobě...
"Král Lávra má dlouhé oslí uši, král je ušatec!

(pravil K. H. Borovský o cenzuře internetu)
Uživatelský avatar
Akrej
Level 5.5
Level 5.5
Příspěvky: 2999
Registrován: 19 čer 2012 18:48

Re: Pascal Cyklus While chyba

Příspěvek od Akrej »

no ja chcu any to neskočilo hned ale po entru nebo aby to napsalo tak jsem to myslel kdybys to vyzkoušel ten muj kod tak bych pochopil

--- Doplnění předchozího příspěvku (01 Kvě 2014 13:01) ---

Problem s menu vyřešen ale tet mam problem to že chcu aby mi to pokaždé odpovědi napsalo jestli je dobře nebo ne

Kód: Vybrat vše

program Tester;

uses Crt;
var volba:integer;
var ot1,ot2,ot3,ot4,ot5,odpo1,odpo2,odpo3,odpo4,odpo5,a,b,c,d,f:string;
begin

        writeln('Tester:');
       readln();
     ClrScr;
     writeln('Vytvorit test [1]');
     writeln('Spustit test test [2]');
     readln(volba);

     if (volba = 1) then
     begin
      ClrScr;
     writeln('Napis prvni otazku:  ');
     readln(ot1);
     writeln('Napis druhou otazku:  ');
     readln(ot2);
     writeln('Napis treti otazku:  ');
     readln(ot3);
     writeln('Napis cvrtou otazku:  ');
     readln(ot4);
     writeln('Napis patou otazku:  ');
     readln(ot5);
     clrscr;
     writeln('Napis spravnou odpoved na:', ot1);
     readln(odpo1);
      writeln('Napis spravnou odpoved na:', ot2);
     readln(odpo2);
      writeln('Napis spravnou odpoved na:', ot3);
     readln(odpo3);
      writeln('Napis spravnou odpoved na:', ot4);
     readln(odpo4);
      writeln('Napis spravnou odpoved na:',ot5);
     readln(odpo5);
     writeln('Ulozit test a vratit se do menu [3]');
     readln(volba);

      if (volba = 3) then
     begin
          ClrScr;
          writeln('Vytvorit test [1]');
     writeln('Spustit test test [2]');
     readln(volba);
     end
     else
          writeln('Program bude ukoncen');





     end;
     if (volba = 2) then
     begin
      ClrScr;
     writeln(ot1);
     readln(a);
      writeln('-----------------------');
     writeln(ot2);
     readln(b);
     writeln('-----------------------');
     writeln(ot3);
     readln(c);
     writeln('-----------------------');
     writeln(ot4);
     readln(d);
     writeln('-----------------------');
     writeln(ot5);
     readln(f);
     writeln('-----------------------');
     end;


     if (a = odpo1) then
   begin
   writeln('je spravne');
   readln();
   end
else
   begin
   writeln('neni spravne');
   readln();
   
     if (odpo2 = b) then
   begin
   writeln('je spravne');
   readln();
   end
else
   begin
   writeln('neni spravne');
   readln();
   
     if (odpo3 = c) then
   begin
   writeln('je spravne');
   readln();
   end
else
   begin
   writeln('neni spravne');
   readln();
   
     if (odpo4 = d) then
   begin
   writeln('je spravne');
   readln();
   end
else
   begin
   writeln('neni spravne');
   readln();
   end;
   
     if (odpo5 = f) then
   begin
   writeln('je spravne');
   readln();
   end
else
   begin
   writeln('neni spravne');
   readln();

   writeln('Test dokoncen');
   writeln('[EXIT] = Enter');
   readln();

   end;
   end;
   end;
   end;



       end.
Spust si jeste ten vysledny exe soubor prosimte aby lepe mohl konstatovat problem
http://leteckaposta.cz/243163135 (radši jsem to hodil na leteckou postu)
"Nejsem nerozumný. Jen nemám ten samý rozum jako vy."
Diogénes ze Sinopé
-------------------------------------
„Mějte dobrou náladu. Dobrá nálada vaše problémy sice nevyřeší, ale naštve tolik lidí kolem, že stojí za to si ji užít.“
Jan Werich
--------------------------------------
Snažím se psát bez chyb
-------------------------
Uživatelský avatar
faraon
Master Level 8.5
Master Level 8.5
Příspěvky: 7415
Registrován: 23 pro 2010 09:23

Re: Pascal Cyklus While chyba

Příspěvek od faraon »

Spustit EXE z nějakého cizího zdroje? A co jestli máš počítač zavirovaný? :evil:
Kromě toho můj Linux žádné EXE nespouští, tady se používá ELF!

Už jsem si ten tvůj zdroják prohlédl, a měl bys zapracovat na odsazování. Když jsem si to srovnal podle begin a end, tak jsem na tu chybu přišel hned, ještě než jsem došel na konec kódu. Ty vyhodnocuješ odpovědi postupně, ale každou další odpověď ověřuješ jen pokud byla předchozí nesprávně! Zkus přemístit pár end tam kam patří, a uvidíš co se bude dít.
"Král Lávra má dlouhé oslí uši, král je ušatec!

(pravil K. H. Borovský o cenzuře internetu)
Uživatelský avatar
Akrej
Level 5.5
Level 5.5
Příspěvky: 2999
Registrován: 19 čer 2012 18:48

Re: Pascal Cyklus While chyba

Příspěvek od Akrej »

ok pc zavirovany nemam použivam aviru ale přece v linuxu jde spustit exe pomoci wine.
Ok zkontroluji kod
"Nejsem nerozumný. Jen nemám ten samý rozum jako vy."
Diogénes ze Sinopé
-------------------------------------
„Mějte dobrou náladu. Dobrá nálada vaše problémy sice nevyřeší, ale naštve tolik lidí kolem, že stojí za to si ji užít.“
Jan Werich
--------------------------------------
Snažím se psát bez chyb
-------------------------
Uživatelský avatar
Akrej
Level 5.5
Level 5.5
Příspěvky: 2999
Registrován: 19 čer 2012 18:48

Re: Pascal Cyklus While chyba

Příspěvek od Akrej »

pro změnu mam chybu v tomhle řadku

Kód: Vybrat vše

if (volba = 2) then
ja už bych byl rad kdyby to fungovalo normalně
"Nejsem nerozumný. Jen nemám ten samý rozum jako vy."
Diogénes ze Sinopé
-------------------------------------
„Mějte dobrou náladu. Dobrá nálada vaše problémy sice nevyřeší, ale naštve tolik lidí kolem, že stojí za to si ji užít.“
Jan Werich
--------------------------------------
Snažím se psát bez chyb
-------------------------
Odpovědět
  • Podobná témata
    Odpovědi
    Zobrazení
    Poslední příspěvek
  • Chyba CPU na desce
    od petan320 » » v Problémy s hardwarem
    16 Odpovědi
    16754 Zobrazení
    Poslední příspěvek od petr22
  • Sqlite - systémová chyba
    od cindy the skull » » v Vše ostatní (sw)
    6 Odpovědi
    15941 Zobrazení
    Poslední příspěvek od atari
  • Chyba příkazový řádek
    od zik9 » » v Windows 11, 10, 8...
    4 Odpovědi
    6914 Zobrazení
    Poslední příspěvek od zik9
  • prohližeč událostí id 1796 chyba
    od walderan » » v Problémy s hardwarem
    9 Odpovědi
    10147 Zobrazení
    Poslední příspěvek od walderan
  • Windows Update nelze stáhnout, chyba 0x80070246
    od Rewqa » » v Windows 11, 10, 8...
    11 Odpovědi
    13132 Zobrazení
    Poslední příspěvek od Rewqa

Zpět na „Programování a tvorba webu“