Anonymní profil doma22 – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Anonymní profil doma22 – Programujte.comAnonymní profil doma22 – Programujte.com

 

Příspěvky odeslané z IP adresy 178.143.101.–

doma22
Pascal › Dynamická datova štruktúra
1. 2. 2021   #387317

#11 gna
Neviem, skúsim, ono je zase pravda, že cca pred 2 - 3 mesiacmi mi úplne spadol windows a musel som obnovovať registre cez technickú podporu mikrosoftu a že antivirak mi potom našiel i trojana, takže možno túto šarapatu robí OS, keďže to mohlo mať i po obnovení systému a vyčistenia od vírusu i nejaké dôsledky, je to možné, že program od paskalu je ok, neviem no, skúsim teda ešte tie korekcie

doma22
Pascal › Dynamická datova štruktúra
1. 2. 2021   #387315

#9 gna
Tak do hĺbky odborné materiále ( kniha i podklady z interetu ), ktorú som kúpil ,a ktoré som zohnal z netu pri read nejde, takže diky za hlbšie vysvetlenie read, upravil som prvý program podľa Vašich rád, ale stále mi nechce ukončiť cyklus s príkazom koniec, fakt neviem ako na to, už som zúfalí, keďže dva dni to upravujem, mažem a pridávam riadky, ale stále nie a nie ukončiť cyklus príkazom koniec, dávam tu najčerstvejšie upravený program, ktorý plní zásobník, ale nechce zobrať príkaz koniec, prosím Vás kde je tam ešte chyba ( Rušenie potom ):

Program Zasobnik1;

type Nick = ^Naboj;
     Naboj = record
       ostry : char;
       dalsi : Nick;
     end;

var zasobnik, strela : Nick;
    i : integer;
    koniec : string;
    akcia : char;

begin
  {vytvorenie zásobniku}
  zasobnik:=nil;
  writeln('Stlacte klávesu a potom enter. Strelba: s, Plnenie: p.');
  repeat
    readln(akcia);
    case akcia of
      's':
          begin
            if zasobnik = nil then
              writeln('Nick, más prázdny zásobnik.')
            else
            begin
              writeln('Strielame.');
              strela:=zasobnik;
              zasobnik:=zasobnik^.dalsi;
              dispose(strela);
            end;
          end;
      'p':
          begin
            writeln('Plníme.');
            new(strela);
            strela^.dalsi:=zasobnik;
            strela^.ostry:='l';
            zasobnik:=strela;
          end;
      else writeln('Vyckavame.');
    end;
    writeln();
    write('Stav zásobniku: ');
    strela:=zasobnik;
    while strela <> nil do
    begin
      write(strela^.ostry);
      strela:=strela^.dalsi;
    end;
    writeln();
    writeln('Ak chcete skoncit, napiste konec a stlacte enter');
    readln(koniec);
  until koniec = 'koniec';

  {rusenie zásobniku}
  strela:=zasobnik;
  while strela <> nil do
  begin
    zasobnik:=zasobnik^.dalsi;
    dispose(strela);
    strela:=zasobnik;
  end;

  writeln('Zostalo nieco v zásobniku?');
  write('Stav zásobniku: ');
  strela:=zasobnik;
  while strela <> nil do
  begin
    write(strela^.ostry);
    strela:=strela^.dalsi;
  end;
doma22
Pascal › Dynamická datova štruktúra
31. 1. 2021   #387310

#7 gna
Viem aký je rozdiel medzi read a readln, read znamená čítať, teda pc si riadok prečíta a tým to hasne, na monitore nič nevidí ani nič neukladám, readln zase ukladá, čaká na príkaz, prípadne prečíta, čo som napísal keďže ln je skratka pre line, teda riadok. Problém je v tom, že ako náhle vypustím pôvodný zápis a nahradím ho zápisom readln(ukoncit/koniec); tak buď sa mi cyklus repeat - until neukončí vôbec a do nekonečna rieši frontu/zásobník, alebo sa to občas nejakým zázrakom, neviem akým, ukončí po asi 15 - 20 krát zadaní slova koniec, rušenie momentálne neriešme, keďže asi som veľmi nepochopil o čom ste hovorili, ale to nie je podľa mňa základný problém programu, ako prvé by som aspoň podľa mňa mal vyriešiť frontu/zásobník.

doma22
Pascal › Dynamická datova štruktúra
30. 1. 2021   #387306

#4 gna
Ja som v reakcii pozeral na ten druhý program, kde je miesto koniec ukoncit, ale vlastne tie isté korekcie platia aj pre prvý program, dobre som to pochopil?

#4 gna
Aha už rozumiem, riadok read(ukoncit); upraviť na readln(ukoncit); pochopil som to správne? A ten readln() som tam dal preto, že ak som ho tam nemal, tak mi nechcel pc ukončiť cyklus until, nebudem po odstránení tohto readln mať zase ten problém? No a pri rušení, zase aby to malo vôbec zmysel, tak by som to mal umiestniť na začiatok programu, nie na koniec, pochopil som to správne? Ešte som sa chcel spýtať, či ak zadám pri rušení 0, tak sa mi fronta zruší, proste do fronty zadávam čísla, je to správne?

doma22
Pascal › Dynamická datova štruktúra
30. 1. 2021   #387305

#4 gna
Aha už rozumiem, riadok read(ukoncit); upraviť na readln(ukoncit); pochopil som to správne? A ten readln() som tam dal preto, že ak som ho tam nemal, tak mi nechcel pc ukončiť cyklus until, nebudem po odstránení tohto readln mať zase ten problém? No a pri rušení, zase aby to malo vôbec zmysel, tak by som to mal umiestniť na začiatok programu, nie na koniec, pochopil som to správne? Ešte som sa chcel spýtať, či ak zadám pri rušení 0, tak sa mi fronta zruší, proste do fronty zadávam čísla, je to správne?

doma22
Pascal › Dynamická datova štruktúra
29. 1. 2021   #387301

#2 gna
To s readln; mám dať do 54 riadku, alebo až na úplný koniec, teda do 84 riadku a to s tým zásobníkom som asi nepochopil, ako mám dať zásobník na začiatok, teda na 16 riadok?

doma22
Pascal › Dynamická datova štruktúra
28. 1. 2021   #387296

Keď by sa niekto našiel, čo by my vedel poradiť, pri dynamickej datovej štruktúre. Pochopil som, že pri statickej datovej štruktúre je už pri tvorbe programu presne určené aká bude veľká, kým pri dynamickej sa o veľkosti rozhoduje pri behu programu. No mám tu však dva príklady na dynamickú, ale ani jeden nerobí čo má. Programy sa dajú kompilovať, teda preložiť, ale robia si čo chcú. Nedávajú frontu, nerušia frontu, nedávajú zásobník, proste okrem skončenia a vypísania hlásení, nerobia nič. No ja neviem prečo to robia, nechápem kde je chyba ani ako ju napraviť, bol by som rád ak by mi niekto helfol s oboma programami. Tu je PRVÝ PROGRAM:

Program Zasobnik1;

type Nick = ^Naboj;
     Naboj = record
       ostry : char;
       dalsi : Nick;
     end;

var zasobnik, strela : Nick;
    i : integer;
    koniec : string;
    akcia : char;

begin
  {vytvorenie zásobniku}
  zasobnik:=nil;
  repeat
    writeln('Stlacte klávesu a potom enter. Strelba: s, Plnenie: p.');
    readln(akcia);
    case akcia of
      's':
          begin
            if zasobnik = nil then
              writeln('Nick, más prázdny zásobnik.')
            else
            begin
              writeln('Strielame.');
              strela:=zasobnik;
              zasobnik:=zasobnik^.dalsi;
              dispose(strela);
            end;
          end;
      'p':
          begin
            writeln('Plníme.');
            new(strela);
            strela^.dalsi:=zasobnik;
            strela^.ostry:='l';
            zasobnik:=strela;
          end;
      else writeln('Vyckavame.');
    end;
    writeln();
    write('Stav zásobniku: ');
    strela:=zasobnik;
    while strela <> nil do
    begin
      write(strela^.ostry);
      strela:=strela^.dalsi;
    end;
    writeln();
    writeln('Ak chcete skoncit, napitte konec a stlacte enter');
    writeln('Pre pokracovanie stlacte iba enter');
    readln;
    read(koniec);
  until koniec = 'koniec';

  {rusenie zásobniku}
  strela:=zasobnik;
  while strela <> nil do
  begin
    zasobnik:=zasobnik^.dalsi;
    dispose(strela);
    strela:=zasobnik;
  end;

  writeln('Zostalo nieco v zásobniku?');
  write('Stav zásobniku: ');
  strela:=zasobnik;
  while strela <> nil do
  begin
    write(strela^.ostry);
    strela:=strela^.dalsi;
  end;
  dispose(zasobnik);
  writeln('Pre skoncenie programu stlacte enter');
  readln;
end.

a tu je DRUHÝ PROGRAM

Program Obchod1;

type Nick = ^Clovek;
     Clovek = record
       meno: integer;
       dalsi: Nick;
     end;

var zaciatok, koniec: Nick;
    PlatiaciClovek: Nick;
    ukoncit:String;
    akcia : char;
    poradie: integer;

begin
  new(zaciatok);
  koniec:=zaciatok;
  poradie:=1;
  repeat
    writeln('Stlacte klávesu a stlacte enter. Novy vstup: n, Vystup: v.');
    readln(akcia);
    case akcia of
    'n':
      begin
        koniec^.meno:=poradie;
        poradie:=poradie+1;
        new(koniec^.dalsi);
        koniec:=koniec^.dalsi;
      end;
    'v':
      begin
        if zaciatok = koniec then
          writeln('fronta je prazdná.')
        else
        begin
          PlatiaciClovek:=zaciatok;
          zaciatok:=zaciatok^.dalsi;
          dispose(PlatiaciClovek);
        end;
      end
    else writeln('Fronta stoji.');
    end;
    write('Fronta: ');
    if zaciatok <> koniec then
    begin
      PlatiaciClovek:=zaciatok;
      repeat
        writeln(PlatiaciClovek^.meno, ' ');
        PlatiaciClovek:=PlatiaciClovek^.dalsi;
      until PlatiaciClovek = koniec;
    end;
    writeln('Ak chcete skoncit, napiste koniec a stlacte enter, ak chcete iba pokracovat stlacte iba enter');
    readln();
    read(ukoncit);
  until ukoncit = 'koniec';

  {rusenie fronty}
  if zaciatok <> koniec then
  begin
    PlatiaciClovek:=zaciatok;
    repeat
      PlatiaciClovek:=zaciatok;
      zaciatok:=zaciatok^.dalsi;
      dispose(PlatiaciClovek);
      PlatiaciClovek:=zaciatok;
    until PlatiaciClovek = koniec;
  end;

  writeln('Zostal niekdo v fronte?');
  write('Fronta: ');
  if zaciatok <> koniec then
  begin
    PlatiaciClovek:=zaciatok;
    repeat
      write(PlatiaciClovek^.meno, ' ');
      PlatiaciClovek:=PlatiaciClovek^.dalsi;
    until PlatiaciClovek = koniec;
  end;

  readln;

  dispose(zaciatok);
  writeln('Pre skoncenie programu stlacte enter');
  readln();
end.

Obidva programy sú na príklad dynamickej datovej štruktúry

doma22
Pascal › Náhodné desatinné čísla
27. 1. 2021   #387288

#14 gna
Dobre po istom ako sa povie šprtkaní, všetko ide ako má, už ukazuje i tri desatinné miesta, takže ďakujem za rady a aj za to, že ma trochu necháte sa s tým ako sa povie vyhrať, lebo to je podľa mňa najlepší spôsob ako niekoho niečo naučiť, či poradiť, ak mu dám ako sa povie všetky potrebné nástroje, takže raz veľmi pekne ďakujem za pomoc a len pre zaujímavosť, keďže viem, že také veci sú pre Vás už samozrejmosť iba dodávam finálny program, že ako som si to vlastne predstavoval, ďakujem za pomoc, hádam táto diskusia pomôže aj iným a túto tému z mojej strany uzatváram, ďakujem veľmi pekne:

Program Herna1;

 var vylosovane1,vylosovane2,vylosovane4:array[1..10] of integer;
 var vylosovane3:array[1..10] of real;
 var tip1,tip2,tip4:array[1..10] of integer;
 var tip3:array[1..10] of real;
 var hotovost1,hotovost2,hotovost3,hotovost4,stavka1,stavka2,stavka3,stavka4,vyhra1,vyhra2,vyhra4:integer;
 var cislo1,cislo2,cislo3,cislo4,uspech1,uspech2,uspech3,uspech4:integer;
 var koniec1,koniec2,koniec3,koniec4:string;
 begin
  writeln('Tu si vytvoríme imaginárnú hernu');
  writeln('Budeme tu mat az 4 stoly');
  writeln('Hrác zacne na prvom a v prípade, ze ho hra uz nebude bavit, presunie sa oznamom koniec k druhej hre');
  writeln('Takto pokracuje k poslednej hre, kde ho uz caká iba vychod z herne');
  writeln('Tak podme do herne a nezabúdat stlácat enter po zadaní císla');
  writeln('Pre pokracovanie programu stlacte enter');
  readln();
  writeln('PRVA HRA');
  writeln('Dobry vecer');
  writeln('Vasou úlohov je typnut si správne 10 císel, od jedna do desat');
  writeln('Kolko penazí chcete vymenit za peniaze (min. 20), po zadaní stalcte enter: ');
  readln(hotovost1);
  if hotovost1 < 20 then
    writeln('Bohuzial minimum je 20. Opuste prosim hernu.')
  else
  repeat
  begin
    Randomize;
    writeln('Ak ste pripraveny, stavte zetóny a stlacte enter.');
    writeln('Minimálna stávka je 20 zetónov');
    writeln('Zadajte stávku a stlacte enter: ');
    readln(stavka1);
    while (stavka1 < 20) or (stavka1 > hotovost1) do
    begin
      while stavka1 < 20 do
      begin
        writeln('Mali by ste prihodit aspon ', 20 - stavka1);
        writeln('Zadajte kolko pridáte a stlacte enter: ');
        readln(cislo1);
        stavka1:=stavka1 + cislo1;
      end;
      while stavka1 > hotovost1 do
      begin
        writeln('Tolko nemáte, znizte prosim svoju stávku.');
        writeln('Vasa zetóny: ', hotovost1);
        writeln('Zadajte Vasu stávku a stlacte enter (min. 20): ');
        read(stavka1);
      end;
    end;
    writeln('Stávka ', stavka1,' je v poriadku.');
    hotovost1:=hotovost1 - stavka1;
    writeln('Zostali Vám zetóny:', hotovost1);
    for cislo1:=1 to 10 do
    begin
      writeln('Tipnite si ', cislo1 ,'. císlo (0-10) a stlacte enter: ');
      readln(tip1[cislo1]);
    end;
    writeln('Vase tipy: ');
    for cislo1:=1 to 10 do
      writeln(tip1[cislo1], ' ');
    writeln('Pre zaciatok losovania stlacte enter: ');
    readln();
    uspech1:=0;
    for cislo1:=1 to 10 do
    begin
      vylosovane1[cislo1]:=random(10);
      writeln(cislo1, '. císlo: ', vylosovane1[cislo1]);
      if vylosovane1[cislo1]=tip1[cislo1] then begin
        uspech1:=uspech1 + 1;
        writeln(' ANO! -> Uspesnost = ',uspech1,'. Stlacte enter.');
      end
      else
      writeln(' Nic. Uspesnost = ',uspech1,'. Stlacte enter.');
      readln();
    end;
    writeln('Vase tipy : ');
    for cislo1:=1 to 10 do
      writeln(tip1[cislo1], ' ');
    writeln('Vylosované: ');
    for cislo1:=1 to 10 do
      writeln(vylosovane1[cislo1], ' ');
    writeln('Uspesnost: ', uspech1);
    case uspech1 of
      10:
      begin
        hotovost1:=hotovost1 + (stavka1*5);
        writeln('Vyhrávate pätnásobok stávky = ', stavka1*5);
      end;
      9:
      begin
        hotovost1:=hotovost1 + (stavka1*4);
        writeln('Vyhrávate stvornásobok stávky = ', stavka1*4);
      end;
      8:
      begin
        hotovost1:=hotovost1 + (stavka1*3);
        writeln('Vyhrávate trojnásobok stávky = ', stavka1*3);
      end;
      7:
      begin
        hotovost1:=hotovost1 + (stavka1*2);
        writeln('Vyhrávate dvojnásobok stávky = ', stavka1*2);
      end;
      6:
      begin
        hotovost1:=hotovost1 + stavka1;
        writeln('Vyhrávate spät svoju stávku = ', stavka1);
      end;
      5:
      begin
        vyhra1 := stavka1 - (stavka1 div 4);
        hotovost1:=hotovost1 + vyhra1;
        writeln('Vyhrávate 3/4 zo svojej stávky = ', vyhra1);
      end;
      4:
      begin
        vyhra1 := stavka1 - (stavka1 div 3);
        hotovost1:=hotovost1 + vyhra1;
        writeln('Vyhrávate 2/3 zo svojej stávky = ', vyhra1);
      end;
      3:
      begin
        hotovost1:=hotovost1 + (stavka1 div 2);
        writeln('Vyhrávate polovicu zo svojej stavky = ', stavka1 div 2);
      end;
      2:
      begin
        hotovost1:=hotovost1 + (stavka1 div 3);
        writeln('Vyhrávate tretinu zo svojej stávky = ', stavka1 div 3);
      end
      else
        writeln('Ztrácate celu stávku = ', -stavka1);
    end;
    writeln('Vase zetóny: ', hotovost1);
    if hotovost1 < 20 then
    begin
      writeln('Vase zetóny nie sú vo vyske stávkového minima.');
      writeln('Prosím, opuste hru.');
    end
    else
     writeln('Ak chcete skoncit hru, napíste koniec a stlacte enter.');
  writeln('Pre pokracovanie stlacte iba samotny enter. ');
  readln();
  read(koniec1);
  end;
  until (koniec1 = 'koniec') or (hotovost1 < 20);
  writeln('Pre pokracovanie programu stlacte enter');
  readln();
  writeln('Teraz si zvysime sancu na vyhru tym,ze budeme typovat iba medzi 0 a 2');
  writeln('DRUHA HRA');
  writeln('Dobry vecer');
  writeln();
  writeln('Kolko penazí chcete vymenit za zetóny (min. 10) a stlacte enter: ');
  readln(hotovost2);
  hotovost2:=hotovost2 + hotovost1;
  writeln(hotovost2);
  if hotovost2 < 10 then
    writeln('Bohuzial, minimum je 10. Opuste prosím hernu.')
  else
  repeat
  begin
    Randomize;
    writeln('Vase zetóny sú');
    writeln(hotovost2);
    writeln('Ak ste pripraveny k hre, dajte stávku.');
    writeln('Minimálna stávka je 10 zetónov');
    writeln('Zadajte stávku a stlacte enter: ');
    readln(stavka2);
    while (stavka2 < 10) or (stavka2 > hotovost2) do
    begin
      while stavka2 < 10 do
      begin
        writeln('Mali by ste prihodit aspon ', 10 - stavka2);
        writeln('Kolko pridáte: ');
        readln(cislo2);
        stavka2:=stavka2 + cislo2;
      end;
      while stavka2 > hotovost2 do
      begin
        writeln('Tolko nemáte, znizte stávku.');
        writeln('Vase zetóny: ', hotovost2);
        writeln('Vasa stavka (min. 10) a stlacte enter: ');
        readln(stavka2);
      end;
    end;
    writeln('Stávka ', stavka2,' je OK.');
    hotovost2:=hotovost2 - stavka2;
    writeln('Teraz máte u seba zetónov:', hotovost2);
    for cislo2:=1 to 10 do
    begin
      writeln('Tipnite si ', cislo2 ,'. císlo (0-2) a stlacte enter: ');
      readln(tip2[cislo2]);
    end;
    writeln('Vase tipy: ');
    for cislo2:=1 to 10 do
      writeln(tip2[cislo2], ' ');
    writeln();
    writeln('Pre zaciatok losovania stlacte enter: ');
    readln();
    uspech2:=0;
    for cislo2:=1 to 10 do
    begin
      vylosovane2[cislo2]:=random(2);
      writeln(cislo2, '. cislo: ', vylosovane2[cislo2]);
      if vylosovane2[cislo2]=tip2[cislo2] then begin
        uspech2:=uspech2 + 1;
        writeln(' ANO! -> Uspesnost = ',uspech2,'. Stlacte enter.');
      end
      else
      writeln(' Nic. Uspesnost = ',uspech2,'. Stlacte enter.');
      readln();
    end;
    writeln('Vase tipy : ');
    for cislo2:=1 to 10 do
      writeln(tip2[cislo2], ' ');
    writeln();
    writeln('Vylosované: ');
    for cislo2:=1 to 10 do
      writeln(vylosovane2[cislo2], ' ');
    writeln();
    writeln('Uspesnost: ', uspech2);
    case uspech2 of
      10:
      begin
        hotovost2:=hotovost2 + (stavka2*5);
        writeln('Vyhravate pätnásobok stávky = ', stavka2*5);
      end;
      9:
      begin
        hotovost2:=hotovost2 + (stavka2*4);
        writeln('Vyhravate stvornásobok stávky = ', stavka2*4);
      end;
      8:
      begin
        hotovost2:=hotovost2 + (stavka2*3);
        writeln('Vyhrávate trojnásobok stávky = ', stavka2*3);
      end;
      7:
      begin
        hotovost2:=hotovost2 + (stavka2*2);
        writeln('Vyhrávate dvojnásobok stávky = ', stavka2*2);
      end;
      6:
      begin
        hotovost2:=hotovost2 + stavka2;
        writeln('Vyhrávate spät svoju stávku = ', stavka2);
      end;
      5:
      begin
        vyhra2 := stavka2 - (stavka2 div 4);
        hotovost2:=hotovost2 + vyhra2;
        writeln('Vyhrávate 3/4 zo svojej stávky = ', vyhra2);
      end;
      4:
      begin
        vyhra2 := stavka2 - (stavka2 div 3);
        hotovost2:=hotovost2 + vyhra2;
        writeln('Vyhrávate 2/3 zo svojej stávky = ', vyhra2);
      end;
      3:
      begin
        hotovost2:=hotovost2 + (stavka2 div 2);
        writeln('Vyhrávate polovicu zo svojej stávky = ', stavka2 div 2);
      end;
      2:
      begin
        hotovost2:=hotovost2 + (stavka2 div 3);
        writeln('Vyhrávate tretinu zo svojej stávky = ', stavka2 div 3);
      end
      else
        writeln('Ztrácate celu svoju stavku = ', -stavka2);
    end;
    writeln('Vase zetóny: ', hotovost2);
    if hotovost2 < 10 then
    begin
      writeln('Vase zetóny bohuzial nedosahujú stávkového minima.');
      writeln('Prosím, opuste hru.');
    end
    else
    begin
      writeln('Chcete skoncit hru, napiste koniec a stlacte enter.');
      writeln('Pro pokracovanie v hre stlacte iba enter.');
      readln();
      read(koniec2);
    end;
  end;
  until (koniec2 = 'koniec') or (hotovost2 < 10);
  writeln('Pre pokracovanie programu stlacte enter');
  readln();
  writeln('V tretej hre stavime 30 a budeme mat iba 5 tipov, pri com typujeme desatinne cisla s tromi desatinnymi miestami a miesto ciarky sa dá bodka');
  writeln('TRETIA HRA');
  writeln('Dobry vecer');
  writeln();
  writeln('Kolko penazí chcete vymenit za zetóny (min. 30) a stlacte enter: ');
  readln(hotovost3);
  hotovost3:= hotovost3 + hotovost2;
  writeln(hotovost3);
  if hotovost3 < 30 then
    writeln('Bohuzial, minimum je 30. Opuste prosím hernu.')
  else
  repeat
  begin
    Randomize;
    writeln('Vase zetóny sú');
    writeln(hotovost3);
    writeln('Ak ste pripraveny k hre, dajte stávku.');
    writeln('Minimálna stávka je 30 zetónov');
    writeln('Zadajte stávku a stlacte enter: ');
    readln(stavka3);
    while (stavka3 < 30) or (stavka3 > hotovost3) do
    begin
      while stavka3 < 30 do
      begin
        writeln('Mali by ste prihodit aspon ', 30 - stavka3);
        writeln('Kolko pridáte: ');
        readln(cislo3);
        stavka3:=stavka3 + cislo3;
      end;
      while stavka3 > hotovost3 do
      begin
        writeln('Tolko nemáte, znizte stávku.');
        writeln('Vase zetóny: ', hotovost3);
        write('Vasa stavka (min. 30) a stlacte enter: ');
        readln(stavka3);
      end;
    end;
    writeln('Stávka ', stavka3,' je OK.');
    hotovost3:=hotovost3 - stavka3;
    writeln('Teraz máte u seba zetónov:', hotovost3);
    for cislo3:=1 to 5 do
    begin
      writeln('Tipnite si ', cislo3 ,'. císlo (0-10) s tromi desatinnymi miestami, kde miesto ciarky dáte bodku a stlacte enter: ');
      readln(tip3[cislo3]);
    end;
    write('Vase tipy: ');
    for cislo3:=1 to 5 do
      writeln(tip3[cislo3]:1:3, ' ');
    writeln();
    writeln('Pre zaciatok losovania stlacte enter: ');
    readln();
    uspech3:=0;
    for cislo3:=1 to 5 do
    begin
      vylosovane3[cislo3]:=random(10000) / 1000;
      write(cislo3, '. cislo: ', vylosovane3[cislo3]:1:3);
      if vylosovane3[cislo3]=tip3[cislo3] then begin
        uspech3:=uspech3 + 1;
        writeln(' ANO! -> Uspesnost = ',uspech3,'. Stlacte enter.');
      end
      else
      writeln(' Nic. Uspesnost = ',uspech3,'. Stlacte enter.');
      readln();
    end;
    write('Vase tipy : ');
    for cislo3:=1 to 5 do
      writeln(tip3[cislo3]:1:3, ' ');
    writeln();
    write('Vylosované: ');
    for cislo3:=1 to 5 do
      writeln(vylosovane3[cislo3]:1:3, ' ');
    writeln();
    writeln('Uspesnost: ', uspech3);
    case uspech3 of
      5:
      begin
        hotovost3:=hotovost3 + (stavka3*6);
        writeln('Vyhravate sestnásobok stávky = ', stavka3*5);
      end;
      4:
      begin
        hotovost3:=hotovost3 + (stavka3*5);
        writeln('Vyhravate pätnásobok stávky = ', stavka3*5);
      end;
      3:
      begin
        hotovost3:=hotovost3 + (stavka3 div 2);
        writeln('Vyhrávate polovicu zo svojej stávky = ', stavka3 div 2);
      end;
      2:
      begin
        hotovost3:=hotovost3 + (stavka3 div 3);
        writeln('Vyhrávate tretinu zo svojej stávky = ', stavka3 div 3);
      end
      else
        writeln('Ztrácate celu svoju stavku = ', -stavka3);
    end;
    writeln('Vase zetóny: ', hotovost3);
    if hotovost3 < 30 then
    begin
      writeln('Vase zetóny bohuzial nedosahujú stávkového minima.');
      writeln('Prosím, opuste hru.');
    end
    else
    begin
      writeln('Chcete skoncit hru, napiste koniec a stlacte enter.');
      writeln('Pro pokracovanie v hre stlacte iba enter.');
      readln();
      read(koniec3);
    end;
  end;
  until (koniec3 = 'koniec') or (hotovost3 < 30);
  writeln('Pre pokracovanie programu stlacte enter');
  readln();
  writeln('V poslednej hre stavime 50 a budeme mat iba jeden tip');
  writeln('STVRTA HRA');
  writeln('Dobry vecer');
  writeln();
  writeln('Kolko penazí chcete vymenit za zetóny (min. 50) a stlacte enter: ');
  readln(hotovost4);
  hotovost4:= hotovost4 + hotovost3;
  writeln(hotovost4);
  if hotovost4 < 50 then
    writeln('Bohuzial, minimum je 50. Opuste prosím hernu.')
  else
  repeat
  begin
    Randomize;
    writeln('Vase zetóny sú');
    writeln(hotovost4);
    writeln('Ak ste pripraveny k hre, dajte stávku.');
    writeln('Minimálna stávka je 50 zetónov');
    writeln('Zadajte stávku a stlacte enter: ');
    readln(stavka4);
    while (stavka4 < 50) or (stavka4 > hotovost4) do
    begin
      while stavka4 < 50 do
      begin
        writeln('Mali by ste prihodit aspon ', 50 - stavka4);
        writeln('Kolko pridáte: ');
        readln(cislo4);
        stavka4:=stavka4 + cislo4;
      end;
      while stavka4 > hotovost4 do
      begin
        writeln('Tolko nemáte, znizte stávku.');
        writeln('Vase zetóny: ', hotovost4);
        write('Vasa stavka (min. 30) a stlacte enter: ');
        readln(stavka4);
      end;
    end;
    writeln('Stávka ', stavka4,' je OK.');
    hotovost4:=hotovost4 - stavka4;
    writeln('Teraz máte u seba zetónov:', hotovost4);
    for cislo4:=1 to 1 do
    begin
      writeln('Tipnite si ', cislo4 ,'. císlo (0-10) a stlacte enter: ');
      readln(tip4[cislo4]);
    end;
    write('Vas tip: ');
    for cislo4:=1 to 1 do
      write(tip4[cislo4], ' ');
    writeln();
    writeln('Pre zaciatok losovania stlacte enter: ');
    readln();
    uspech4:=0;
    for cislo4:=1 to 1 do
    begin
      vylosovane4[cislo4]:=random(10);
      write(cislo4, '. cislo: ', vylosovane4[cislo4]);
      if vylosovane4[cislo4]=tip4[cislo4] then begin
        uspech4:=uspech4 + 1;
        writeln(' ANO! -> Uspesnost = ',uspech4,'. Stlacte enter.');
      end
      else
      writeln(' Nic. Uspesnost = ',uspech4,'. Stlacte enter.');
      readln();
    end;
    write('Vase tipy : ');
    for cislo4:=1 to 1 do
      write(tip4[cislo4], ' ');
    writeln();
    write('Vylosované: ');
    for cislo4:=1 to 1 do
      write(vylosovane4[cislo4], ' ');
    writeln();
    writeln('Uspesnost: ', uspech4);
    case uspech4 of
      1:
      begin
        hotovost4:=hotovost4 + (stavka4*10);
        writeln('Vyhravate desatnásobok stávky = ', stavka4*10);
      end
      else
        writeln('Ztrácate celu svoju stavku = ', -stavka4);
    end;
    writeln('Vase zetóny: ', hotovost4);
    if hotovost4 < 50 then
    begin
      writeln('Vase zetóny bohuzial nedosahujú stávkového minima.');
      writeln('Prosím, opuste hru.');
    end
    else
    begin
      writeln('Chcete skoncit hru, napiste koniec a stlacte enter.');
      writeln('Pro pokracovanie v hre stlacte iba enter.');
      readln();
      read(koniec4);
    end;
  end;
  until (koniec4 = 'koniec') or (hotovost4 < 50);
  writeln('Vasa vyhra je dnes');
  writeln(hotovost4);
  writeln('Pre skoncenie programu stlacte enter');
  readln();
 end.
doma22
Pascal › Náhodné desatinné čísla
27. 1. 2021   #387287

#13 doma22#14 gna
Ok program som upravil podľa Vašich rád a program generuje desatinné čísla, i ukazuje už iba v rekapitulácii tipy a vylosované čísla, ale je tu malí zádrhel, že program ukazuje asi všetky desatinné miesta a plán som mal taký, že bude ukazovať iba tri desatinné miesta, neviete čo s tým, keďže zápis :1:3 môžem použiť iba pri write, ale potom mi program vyhadzuje chybu, a to s tým datovým typom sa ospravedlňujem, pri prepise mi to ušlo, keďže som tu hodil pôvodný program, kde som ešte o takých fintičkách neuvažoval

#12 gna
no veď o to ide, o tú časť, že cieľ je aby pracovala s desatinnými číslami, a aby pri záverečnom sumáre vylisovaných a tipovaných čísel ukazoval program ( tá istá časť ) iba vylosované a tipované čísla

doma22
Pascal › Náhodné desatinné čísla
26. 1. 2021   #387275

#12 gna
no veď o to ide, o tú časť, že cieľ je aby pracovala s desatinnými číslami, a aby pri záverečnom sumáre vylisovaných a tipovaných čísel ukazoval program ( tá istá časť ) iba vylosované a tipované čísla

doma22
Pascal › Náhodné desatinné čísla
25. 1. 2021   #387261

#10 MilanL
#9 gna
Ospravedlňujem sa, že reagujem až teraz a veľmi pekne ďakujem za podporu, pomoc a veľkú trpezlivosť i zlaté nervy, čo so mnou máte. Reagujem až teraz, lebo som si potreboval aspoň 2-3 dni oddýchnuť od programovania, aby sa mi takáto práca s obrovskými možnosťami nezhnusila už v začiatku, už pri učení. takže ešte raz sa ospravedlňujem. No a čo sa týka môjho problému, tak vytiahnem časť programu o ktorý mi ide ( je na konci mojej reakcie ). Program negeneruje desatinné čísla v intervale od 0 do 10, čo chcem a pri záverečnom súpise, alebo výpise, volajme to už ako chceme, tak program vypisuje 10 čísel, 5 vylosovaných, 5 tipovaných a zvyšok iba 0, ale ja chcem aby mi program pri záverečnej rekapitulácii uviedol iba vylosované a iba tipované čísla, ktorých je iba 5 ( 5 tipov, 5 vylosovaných ) a otáznik s menšitkom som teraz nepoužil, keďže som kopiroval kód z mojej predchadzajúcej reakcie, nie z paskalu, ale keď budem kopirovať z paskalu, určite ho použijem a ďakujem i za tento tip

program Herna1;

 var vylosovane3:array[1..10] of integer;
 var tip3:array[1..10] of integer;
 var hotovost3,hotovost4,stavka3,vyhra3:integer;
 var cislo3,uspech3:integer;
 var koniec3:string;

  writeln('Dobry vecer');
  writeln();
  writeln('Kolko penazí chcete vymenit za zetóny (min. 30) a stlacte enter: ');
  readln(hotovost3);
  hotovost3:= hotovost3;
  writeln(hotovost3);
  if hotovost3 < 30 then
    writeln('Bohuzial, minimum je 30. Opuste prosím hernu.')
  else
  repeat
  begin
    Randomize;
    writeln('Vase zetóny sú');
    writeln(hotovost3);
    writeln('Ak ste pripraveny k hre, dajte stávku.');
    writeln('Minimálna stávka je 30 zetónov');
    writeln('Zadajte stávku a stlacte enter: ');
    readln(stavka3);
    while (stavka3 < 30) or (stavka3 > hotovost3) do
    begin
      while stavka3 < 30 do
      begin
        writeln('Mali by ste prihodit aspon ', 30 - stavka3);
        writeln('Kolko pridáte: ');
        readln(cislo3);
        stavka3:=stavka3 + cislo3;
      end;
      while stavka3 > hotovost3 do
      begin
        writeln('Tolko nemáte, znizte stávku.');
        writeln('Vase zetóny: ', hotovost3);
        write('Vasa stavka (min. 30) a stlacte enter: ');
        readln(stavka3);
      end;
    end;
    writeln('Stávka ', stavka3,' je OK.');
    hotovost3:=hotovost3 - stavka3;
    writeln('Teraz máte u seba zetónov:', hotovost3);
    for cislo3:=1 to 5 do
    begin
      writeln('Tipnite si ', cislo3 ,'. císlo (0-10) a stlacte enter: ');
      readln(tip3[cislo3]);
    end;
    write('Vase tipy: ');
    for cislo3:=1 to 10 do
      write(tip3[cislo3], ' ');
    writeln();
    writeln('Pre zaciatok losovania stlacte enter: ');
    readln();
    uspech3:=0;
    for cislo3:=1 to 5 do
    begin
      vylosovane3[cislo3]:=random(10);
      write(cislo3, '. cislo: ', vylosovane3[cislo3]);
      if vylosovane3[cislo3]=tip3[cislo3] then begin
        uspech3:=uspech3 + 1;
        writeln(' ANO! -> Uspesnost = ',uspech3,'. Stlacte enter.');
      end
      else
      writeln(' Nic. Uspesnost = ',uspech3,'. Stlacte enter.');
      readln();
    end;
    write('Vase tipy : ');
    for cislo3:=1 to 5 do
      write(tip3[cislo3], ' ');
    writeln();
    write('Vylosované: ');
    for cislo3:=1 to 5 do
      write(vylosovane3[cislo3], ' ');
    writeln();
    writeln('Uspesnost: ', uspech3);
    case uspech3 of
      5:
      begin
        hotovost3:=hotovost3 + (stavka3*6);
        writeln('Vyhravate sestnásobok stávky = ', stavka3*5);
      end;
      4:
      begin
        hotovost3:=hotovost3 + (stavka3*5);
        writeln('Vyhravate pätnásobok stávky = ', stavka3*5);
      end;
      3:
      begin
        hotovost3:=hotovost3 + (stavka3 div 2);
        writeln('Vyhrávate polovicu zo svojej stávky = ', stavka3 div 2);
      end;
      2:
      begin
        hotovost3:=hotovost3 + (stavka3 div 3);
        writeln('Vyhrávate tretinu zo svojej stávky = ', stavka3 div 3);
      end
      else
        writeln('Ztrácate celu svoju stavku = ', -stavka3);
    end;
    writeln('Vase zetóny: ', hotovost3);
    if hotovost3 < 30 then
    begin
      writeln('Vase zetóny bohuzial nedosahujú stávkového minima.');
      writeln('Prosím, opuste hru.');
    end
    else
    begin
      writeln('Chcete skoncit hru, napiste koniec a stlacte enter.');
      writeln('Pro pokracovanie v hre stlacte iba enter.');
      readln();
      read(koniec3);
    end;
  end;
  until (koniec3 = 'koniec') or (hotovost3 < 30);
  readln();  writeln('Vasa vyhra je dnes');
  writeln(hotovost4);
  writeln('Pre skoncenie programu stlacte enter');
  readln();
 end.

doma22
Pascal › Náhodné desatinné čísla
22. 1. 2021   #387244

#7 gna
Ide o program Herna1, konkrétne o subprogram TRETIA HRA, kde mi program nedáva desatinné náhodné čísla, konkrétne 5 vylosovaných, ja totiž chcem, aspoň mám takú predstavu, že práve v treťom podprograme by mi pc mal generovať desatinné čísla s tromi desatinnými číslami v rozsahu od 0 do 10, takže ten prvý program, čo som dal na začiatku bol vlastne upravený výsek z programu Herna1, konkrétne jeho upravená tretia časť, aby generovala desatinné čísla, avšak ak aj vypustím požiadavku na desatinné miesta, tak program Herna1 v tretej časti mi na jeho konci tejto tretej časti, pri len informatívnom súhrne výpisu tipov a vylosovaných čísel ukazuje až 10 čísel, teda päť vylosovaných a tipovaných a zvyšok päť 0, čo samozrejme nechcem, keďže v záverečnom výpise podprogramu chcem vidieť iba vylosované a tipované čísla, ako v subprogramoch PRVA HRA, DRUHA HRA a STVRTA HRA, to je k opisu neželaných veci v programe Herna1. No a ak som to teda pochopil správne, tak zápis desatinného čísla vo forme 1.3, 1:5, 2:8 a tak podobne, môžem využiť v paskale iba pri príkaze write, prípadne writeln, ale ak chcem dosiahnuť desatinné čísla pri generovaní pseudonáhodných čísel musím použiť random * 10; // nasobim male desetinne cislo alebo random(10000) / 1000; // delim velke cele cislo, teda i v programe Herna1, ak chcem aby mi jeho tretia časť generovala desatinné čísla, musím použiť práve spomenutú formu?

doma22
Pascal › Náhodné desatinné čísla
21. 1. 2021   #387242

#4 gna
Ono viem, že najlepší nápad spájať programy z knihy do kopy možno nie je najlepší, ale ukážkových, respektíve náučných programov som už mal toľko, že som sa v tom začal strácať, a tak som tematicky príbuzné programy spájal do jedného, neviem prečo 1:3 robí problém, keď v generovaní jedného desatinného čísla tento zápis funguje ako má, tu je i príklad, ktorý mi bez problémov v takejto forme šlape ako  má:

program Losovanie1;
 var mnozina1, mnozina2, mnozina3 ,mnozina4, mnozina5, tah1, tah3, tah5: integer;
 var tah2, tah4: real;
 begin
  writeln('Teraz si ukázeme ako nám pc náhodne vygeneruje - vylosuje celé císla');
  writeln('V nasom prípade sú to náhodné císla od 0 do 10');
  writeln('Na to budeme potrebovat funkciu randomize - náhodne a random - náhodny ');
  writeln('Bubeme mat az pät programov');
  writeln('Prvy program vylosuje jedno císlo z celych císel a druhy z reálnych - desatinnych císel');
  writeln('Tretí program zase bude generovat náhodné císla z celych císel a stvrty z reálnych - desatinnych císel');
  writeln('Na záver si dáme piaty program, ktory nám vygeneruje len pät císel');
  writeln('To aby nám v piatom programe vygenerolvalo iba 5 císel sme dali do cyklu for');
  writeln('Pre pokracovanie programu stlacte enter');
  readln();
  writeln('PRVY PROGRAM');
  begin
   randomize;
   for mnozina1:=1 to 9 do
   begin
    tah1:=random(10);
   end;
   tah1:=random(10);
   writeln('Bolo vyzrebované císlo:');
   writeln(tah1);
   writeln('Pre pokracovanie programu stlacte enter');
   readln();
  end;
 writeln('DRUHY PROGRAM');
  begin
   randomize;
   for mnozina2:=1 to 9 do
   begin
   tah2:=random;
   end;
   tah2:=random;
   writeln('Bolo vyzrebované císlo:');
   writeln(tah2:1:3);
   writeln('Pre pokracovanie programu stlacte enter');
   readln();
  end;
 writeln('TRETI PROGRAM');
 writeln('cisla');
  begin
   randomize;
   for mnozina3:=1 to 9 do
   begin
    tah3:=random(10);
    writeln(tah3, ', ');
   end;
   tah3:=random(10);
   writeln('boli vygenerované ');
   writeln('Pre pokracovanie programu stlacte enter');
   readln();
  end;
 writeln('STVRTY PROGRAM');
 writeln('cisla');
  begin
   randomize;
   for mnozina4:=1 to 9 do
   begin
    tah4:=random(10);
    writeln(tah4:1:3, ', ');
   end;
   tah4:=random;
   writeln('boli vygenerované');
   writeln('Pre pokracovanie programu stlacte enter');
   readln();
  end;
 writeln('PIATY PROGRAM');
 writeln('cisla');
  begin
   randomize;
   for mnozina5:=1 to 5 do
   begin
    tah5:=random(10);
    writeln(tah5);
   end;
   writeln('boli vygenerované ');
  end;
 writeln('Pre ukoncenie programu stlacte enter');
 readln();
 end.

Fakt ma mrzí, že pri mojich podnetoch treba obetovať viac času, ale ako vidíte, už to nie sú základy, takže viem, že na to už nestačia dve minútky, ale skúšal som to sám napraviť celé dni, no nedopracoval som sa nikde a určite to sám ani nedám, takže ešte raz ma mrzí, že Vám zaberám toľko času, no nemám sa na koho iného obrátiť s pomocou, keďže nepoznám žiadných programátorov, v knihách čo som si kúpil takéto problémy nie sú opísané, peniaze som minul na knihy a programy, takže na kurzy môžem momentálne zabudnúť, a vďaka korone sa to tak skoro asi nezmení a na nete, okrem fóra som pomoc s týmito vecami nenašiel

doma22
Pascal › Náhodné desatinné čísla
21. 1. 2021   #387241

#4 gna
neviem prečo Vám to nejde, možno odstránením 1:3 by to išlo, lebo ako som povedal v knihe s príkladom, to generuje celé čísla, tie desatinné som pridal ja ako taký môj príspevok, lebo v knihe je program čisto na vygenerovanie iba jedného náhodného čísla, no a mňa napadlo, že ak viem napísať program na generovanie iba jedného desatinného čísla, tak by mala byť aj možnosť generovať viac náhodných desatinných čísel, ale program ktorý som tu hodil je iba výsek upravenej jednej časti celého programu, preto došlo i v chybe pri prepise 30 - stavka3, tá stavka3 je syntaxovo chybná, malo tam byť iba stavka, ale možno tu by pomohlo prepis kompletného môjho pôvodného kódu, ten však ako som spomenul na začiatku negeneruje desatinné čísla a v tretej časti programu pri súhrnom výpise tipov a vylosovaných čísel dáva iba 0, alebo až 10 typov. Tu je môj originálny program, ktorý okrem týchto dvoch chýb ide, ale musím vopred upozorniť, že je dosť dlhý, keďže v podstate sú tu až 4 programy:

Program Herna1;
 var vylosovane1,vylosovane2,vylosovane3,vylosovane4:array[1..10] of integer;
 var tip1,tip2,tip3,tip4:array[1..10] of integer;
 var hotovost1,hotovost2,hotovost3,hotovost4,stavka1,stavka2,stavka3,stavka4,vyhra1,vyhra2,vyhra4:integer;
 var cislo1,cislo2,cislo3,cislo4,uspech1,uspech2,uspech3,uspech4:integer;
 var koniec1,koniec2,koniec3,koniec4:string;
 begin
  writeln('Tu si vytvoríme imaginárnú hernu');
  writeln('Budeme tu mat az 4 stoly');
  writeln('Hrác zacne na prvom a v prípade, ze ho hra uz nebude bavit, presunie sa oznamom koniec k druhej hre');
  writeln('Takto pokracuje k poslednej hre, kde ho uz caká iba vychod z herne');
  writeln('Tak podme do herne a nezabúdat stlácat enter po zadaní císla');
  writeln('Pre pokracovanie programu stlacte enter');
  readln();
  writeln('PRVA HRA');
  writeln('Dobry vecer');
  writeln('Vasou úlohov je typnut si správne 10 císel, od jedna do desat');
  writeln('Kolko penazí chcete vymenit za peniaze (min. 20), po zadaní stalcte enter: ');
  readln(hotovost1);
  if hotovost1 < 20 then
    writeln('Bohuzial minimum je 20. Opuste prosim hernu.')
  else
  repeat
  begin
    Randomize;
    writeln('Ak ste pripraveny, stavte zetóny a stlacte enter.');
    writeln('Minimálna stávka je 20 zetónov');
    writeln('Zadajte stávku a stlacte enter: ');
    readln(stavka1);
    while (stavka1 < 20) or (stavka1 > hotovost1) do
    begin
      while stavka1 < 20 do
      begin
        writeln('Mali by ste prihodit aspon ', 20 - stavka1);
        writeln('Zadajte kolko pridáte a stlacte enter: ');
        readln(cislo1);
        stavka1:=stavka1 + cislo1;
      end;
      while stavka1 > hotovost1 do
      begin
        writeln('Tolko nemáte, znizte prosim svoju stávku.');
        writeln('Vasa zetóny: ', hotovost1);
        writeln('Zadajte Vasu stávku a stlacte enter (min. 20): ');
        read(stavka1);
      end;
    end;
    writeln('Stávka ', stavka1,' je v poriadku.');
    hotovost1:=hotovost1 - stavka1;
    writeln('Zostali Vám zetóny:', hotovost1);
    for cislo1:=1 to 10 do
    begin
      writeln('Tipnite si ', cislo1 ,'. císlo (0-10) a stlacte enter: ');
      readln(tip1[cislo1]);
    end;
    writeln('Vase tipy: ');
    for cislo1:=1 to 10 do
      writeln(tip1[cislo1], ' ');
    writeln('Pre zaciatok losovania stlacte enter: ');
    readln();
    uspech1:=0;
    for cislo1:=1 to 10 do
    begin
      vylosovane1[cislo1]:=random(10);
      writeln(cislo1, '. císlo: ', vylosovane1[cislo1]);
      if vylosovane1[cislo1]=tip1[cislo1] then begin
        uspech1:=uspech1 + 1;
        writeln(' ANO! -> Uspesnost = ',uspech1,'. Stlacte enter.');
      end
      else
      writeln(' Nic. Uspesnost = ',uspech1,'. Stlacte enter.');
      readln();
    end;
    writeln('Vase tipy : ');
    for cislo1:=1 to 10 do
      writeln(tip1[cislo1], ' ');
    writeln('Vylosované: ');
    for cislo1:=1 to 10 do
      writeln(vylosovane1[cislo1], ' ');
    writeln('Uspesnost: ', uspech1);
    case uspech1 of
      10:
      begin
        hotovost1:=hotovost1 + (stavka1*5);
        writeln('Vyhrávate pätnásobok stávky = ', stavka1*5);
      end;
      9:
      begin
        hotovost1:=hotovost1 + (stavka1*4);
        writeln('Vyhrávate stvornásobok stávky = ', stavka1*4);
      end;
      8:
      begin
        hotovost1:=hotovost1 + (stavka1*3);
        writeln('Vyhrávate trojnásobok stávky = ', stavka1*3);
      end;
      7:
      begin
        hotovost1:=hotovost1 + (stavka1*2);
        writeln('Vyhrávate dvojnásobok stávky = ', stavka1*2);
      end;
      6:
      begin
        hotovost1:=hotovost1 + stavka1;
        writeln('Vyhrávate spät svoju stávku = ', stavka1);
      end;
      5:
      begin
        vyhra1 := stavka1 - (stavka1 div 4);
        hotovost1:=hotovost1 + vyhra1;
        writeln('Vyhrávate 3/4 zo svojej stávky = ', vyhra1);
      end;
      4:
      begin
        vyhra1 := stavka1 - (stavka1 div 3);
        hotovost1:=hotovost1 + vyhra1;
        writeln('Vyhrávate 2/3 zo svojej stávky = ', vyhra1);
      end;
      3:
      begin
        hotovost1:=hotovost1 + (stavka1 div 2);
        writeln('Vyhrávate polovicu zo svojej stavky = ', stavka1 div 2);
      end;
      2:
      begin
        hotovost1:=hotovost1 + (stavka1 div 3);
        writeln('Vyhrávate tretinu zo svojej stávky = ', stavka1 div 3);
      end
      else
        writeln('Ztrácate celu stávku = ', -stavka1);
    end;
    writeln('Vase zetóny: ', hotovost1);
    if hotovost1 < 20 then
    begin
      writeln('Vase zetóny nie sú vo vyske stávkového minima.');
      writeln('Prosím, opuste hru.');
    end
    else
     writeln('Ak chcete skoncit hru, napíste koniec a stlacte enter.');
  writeln('Pre pokracovanie stlacte iba samotny enter. ');
  readln();
  read(koniec1);
  end;
  until (koniec1 = 'koniec') or (hotovost1 < 20);
  writeln('Pre pokracovanie programu stlacte enter');
  readln();
  writeln('Teraz si zvysime sancu na vyhru tym,ze budeme typovat iba medzi 0 a 2');
  writeln('DRUHA HRA');
  writeln('Dobry vecer');
  writeln();
  writeln('Kolko penazí chcete vymenit za zetóny (min. 10) a stlacte enter: ');
  readln(hotovost2);
  hotovost2:=hotovost2 + hotovost1;
  writeln(hotovost2);
  if hotovost2 < 10 then
    writeln('Bohuzial, minimum je 10. Opuste prosím hernu.')
  else
  repeat
  begin
    Randomize;
    writeln('Vase zetóny sú');
    writeln(hotovost2);
    writeln('Ak ste pripraveny k hre, dajte stávku.');
    writeln('Minimálna stávka je 10 zetónov');
    writeln('Zadajte stávku a stlacte enter: ');
    readln(stavka2);
    while (stavka2 < 10) or (stavka2 > hotovost2) do
    begin
      while stavka2 < 10 do
      begin
        writeln('Mali by ste prihodit aspon ', 10 - stavka2);
        writeln('Kolko pridáte: ');
        readln(cislo2);
        stavka2:=stavka2 + cislo2;
      end;
      while stavka2 > hotovost2 do
      begin
        writeln('Tolko nemáte, znizte stávku.');
        writeln('Vase zetóny: ', hotovost2);
        writeln('Vasa stavka (min. 10) a stlacte enter: ');
        readln(stavka2);
      end;
    end;
    writeln('Stávka ', stavka2,' je OK.');
    hotovost2:=hotovost2 - stavka2;
    writeln('Teraz máte u seba zetónov:', hotovost2);
    for cislo2:=1 to 10 do
    begin
      writeln('Tipnite si ', cislo2 ,'. císlo (0-2) a stlacte enter: ');
      readln(tip2[cislo2]);
    end;
    writeln('Vase tipy: ');
    for cislo2:=1 to 10 do
      writeln(tip2[cislo2], ' ');
    writeln();
    writeln('Pre zaciatok losovania stlacte enter: ');
    readln();
    uspech2:=0;
    for cislo2:=1 to 10 do
    begin
      vylosovane2[cislo2]:=random(2);
      writeln(cislo2, '. cislo: ', vylosovane2[cislo2]);
      if vylosovane2[cislo2]=tip2[cislo2] then begin
        uspech2:=uspech2 + 1;
        writeln(' ANO! -> Uspesnost = ',uspech2,'. Stlacte enter.');
      end
      else
      writeln(' Nic. Uspesnost = ',uspech2,'. Stlacte enter.');
      readln();
    end;
    writeln('Vase tipy : ');
    for cislo2:=1 to 10 do
      writeln(tip2[cislo2], ' ');
    writeln();
    writeln('Vylosované: ');
    for cislo2:=1 to 10 do
      writeln(vylosovane2[cislo2], ' ');
    writeln();
    writeln('Uspesnost: ', uspech2);
    case uspech2 of
      10:
      begin
        hotovost2:=hotovost2 + (stavka2*5);
        writeln('Vyhravate pätnásobok stávky = ', stavka2*5);
      end;
      9:
      begin
        hotovost2:=hotovost2 + (stavka2*4);
        writeln('Vyhravate stvornásobok stávky = ', stavka2*4);
      end;
      8:
      begin
        hotovost2:=hotovost2 + (stavka2*3);
        writeln('Vyhrávate trojnásobok stávky = ', stavka2*3);
      end;
      7:
      begin
        hotovost2:=hotovost2 + (stavka2*2);
        writeln('Vyhrávate dvojnásobok stávky = ', stavka2*2);
      end;
      6:
      begin
        hotovost2:=hotovost2 + stavka2;
        writeln('Vyhrávate spät svoju stávku = ', stavka2);
      end;
      5:
      begin
        vyhra2 := stavka2 - (stavka2 div 4);
        hotovost2:=hotovost2 + vyhra2;
        writeln('Vyhrávate 3/4 zo svojej stávky = ', vyhra2);
      end;
      4:
      begin
        vyhra2 := stavka2 - (stavka2 div 3);
        hotovost2:=hotovost2 + vyhra2;
        writeln('Vyhrávate 2/3 zo svojej stávky = ', vyhra2);
      end;
      3:
      begin
        hotovost2:=hotovost2 + (stavka2 div 2);
        writeln('Vyhrávate polovicu zo svojej stávky = ', stavka2 div 2);
      end;
      2:
      begin
        hotovost2:=hotovost2 + (stavka2 div 3);
        writeln('Vyhrávate tretinu zo svojej stávky = ', stavka2 div 3);
      end
      else
        writeln('Ztrácate celu svoju stavku = ', -stavka2);
    end;
    writeln('Vase zetóny: ', hotovost2);
    if hotovost2 < 10 then
    begin
      writeln('Vase zetóny bohuzial nedosahujú stávkového minima.');
      writeln('Prosím, opuste hru.');
    end
    else
    begin
      writeln('Chcete skoncit hru, napiste koniec a stlacte enter.');
      writeln('Pro pokracovanie v hre stlacte iba enter.');
      readln();
      read(koniec2);
    end;
  end;
  until (koniec2 = 'koniec') or (hotovost2 < 10);
  writeln('Pre pokracovanie programu stlacte enter');
  readln();
  writeln('V tretej hre stavime 30 a budeme mat iba 5 tipov, pri com typujeme desatinne cisla s tromi desatinnymi miestami');
  writeln('TRETIA HRA');
  writeln('Dobry vecer');
  writeln();
  writeln('Kolko penazí chcete vymenit za zetóny (min. 30) a stlacte enter: ');
  readln(hotovost3);
  hotovost3:= hotovost3 + hotovost2;
  writeln(hotovost3);
  if hotovost3 < 30 then
    writeln('Bohuzial, minimum je 30. Opuste prosím hernu.')
  else
  repeat
  begin
    Randomize;
    writeln('Vase zetóny sú');
    writeln(hotovost3);
    writeln('Ak ste pripraveny k hre, dajte stávku.');
    writeln('Minimálna stávka je 30 zetónov');
    writeln('Zadajte stávku a stlacte enter: ');
    readln(stavka3);
    while (stavka3 < 30) or (stavka3 > hotovost3) do
    begin
      while stavka3 < 30 do
      begin
        writeln('Mali by ste prihodit aspon ', 30 - stavka3);
        writeln('Kolko pridáte: ');
        readln(cislo3);
        stavka3:=stavka3 + cislo3;
      end;
      while stavka3 > hotovost3 do
      begin
        writeln('Tolko nemáte, znizte stávku.');
        writeln('Vase zetóny: ', hotovost3);
        write('Vasa stavka (min. 30) a stlacte enter: ');
        readln(stavka3);
      end;
    end;
    writeln('Stávka ', stavka3,' je OK.');
    hotovost3:=hotovost3 - stavka3;
    writeln('Teraz máte u seba zetónov:', hotovost3);
    for cislo3:=1 to 5 do
    begin
      writeln('Tipnite si ', cislo3 ,'. císlo (0-10) a stlacte enter: ');
      readln(tip3[cislo3]);
    end;
    write('Vase tipy: ');
    for cislo3:=1 to 10 do
      write(tip3[cislo3], ' ');
    writeln();
    writeln('Pre zaciatok losovania stlacte enter: ');
    readln();
    uspech3:=0;
    for cislo3:=1 to 5 do
    begin
      vylosovane3[cislo3]:=random(10);
      write(cislo3, '. cislo: ', vylosovane3[cislo3]);
      if vylosovane3[cislo3]=tip3[cislo3] then begin
        uspech3:=uspech3 + 1;
        writeln(' ANO! -> Uspesnost = ',uspech3,'. Stlacte enter.');
      end
      else
      writeln(' Nic. Uspesnost = ',uspech3,'. Stlacte enter.');
      readln();
    end;
    write('Vase tipy : ');
    for cislo3:=1 to 5 do
      write(tip3[cislo3], ' ');
    writeln();
    write('Vylosované: ');
    for cislo3:=1 to 5 do
      write(vylosovane3[cislo3], ' ');
    writeln();
    writeln('Uspesnost: ', uspech3);
    case uspech3 of
      5:
      begin
        hotovost3:=hotovost3 + (stavka3*6);
        writeln('Vyhravate sestnásobok stávky = ', stavka3*5);
      end;
      4:
      begin
        hotovost3:=hotovost3 + (stavka3*5);
        writeln('Vyhravate pätnásobok stávky = ', stavka3*5);
      end;
      3:
      begin
        hotovost3:=hotovost3 + (stavka3 div 2);
        writeln('Vyhrávate polovicu zo svojej stávky = ', stavka3 div 2);
      end;
      2:
      begin
        hotovost3:=hotovost3 + (stavka3 div 3);
        writeln('Vyhrávate tretinu zo svojej stávky = ', stavka3 div 3);
      end
      else
        writeln('Ztrácate celu svoju stavku = ', -stavka3);
    end;
    writeln('Vase zetóny: ', hotovost3);
    if hotovost3 < 30 then
    begin
      writeln('Vase zetóny bohuzial nedosahujú stávkového minima.');
      writeln('Prosím, opuste hru.');
    end
    else
    begin
      writeln('Chcete skoncit hru, napiste koniec a stlacte enter.');
      writeln('Pro pokracovanie v hre stlacte iba enter.');
      readln();
      read(koniec3);
    end;
  end;
  until (koniec3 = 'koniec') or (hotovost3 < 30);
  writeln('Pre pokracovanie programu stlacte enter');
  readln();
  writeln('V poslednej hre stavime 50 a budeme mat iba jeden tip');
  writeln('STVRTA HRA');
  writeln('Dobry vecer');
  writeln();
  writeln('Kolko penazí chcete vymenit za zetóny (min. 50) a stlacte enter: ');
  readln(hotovost4);
  hotovost4:= hotovost4 + hotovost3;
  writeln(hotovost4);
  if hotovost4 < 50 then
    writeln('Bohuzial, minimum je 50. Opuste prosím hernu.')
  else
  repeat
  begin
    Randomize;
    writeln('Vase zetóny sú');
    writeln(hotovost4);
    writeln('Ak ste pripraveny k hre, dajte stávku.');
    writeln('Minimálna stávka je 50 zetónov');
    writeln('Zadajte stávku a stlacte enter: ');
    readln(stavka4);
    while (stavka4 < 50) or (stavka4 > hotovost4) do
    begin
      while stavka4 < 50 do
      begin
        writeln('Mali by ste prihodit aspon ', 50 - stavka4);
        writeln('Kolko pridáte: ');
        readln(cislo4);
        stavka4:=stavka4 + cislo4;
      end;
      while stavka4 > hotovost4 do
      begin
        writeln('Tolko nemáte, znizte stávku.');
        writeln('Vase zetóny: ', hotovost4);
        write('Vasa stavka (min. 30) a stlacte enter: ');
        readln(stavka4);
      end;
    end;
    writeln('Stávka ', stavka4,' je OK.');
    hotovost4:=hotovost4 - stavka4;
    writeln('Teraz máte u seba zetónov:', hotovost4);
    for cislo4:=1 to 1 do
    begin
      writeln('Tipnite si ', cislo4 ,'. císlo (0-10) a stlacte enter: ');
      readln(tip4[cislo4]);
    end;
    write('Vas tip: ');
    for cislo4:=1 to 1 do
      write(tip4[cislo4], ' ');
    writeln();
    writeln('Pre zaciatok losovania stlacte enter: ');
    readln();
    uspech4:=0;
    for cislo4:=1 to 1 do
    begin
      vylosovane4[cislo4]:=random(10);
      write(cislo4, '. cislo: ', vylosovane4[cislo4]);
      if vylosovane4[cislo4]=tip4[cislo4] then begin
        uspech4:=uspech4 + 1;
        writeln(' ANO! -> Uspesnost = ',uspech4,'. Stlacte enter.');
      end
      else
      writeln(' Nic. Uspesnost = ',uspech4,'. Stlacte enter.');
      readln();
    end;
    write('Vase tipy : ');
    for cislo4:=1 to 1 do
      write(tip4[cislo4], ' ');
    writeln();
    write('Vylosované: ');
    for cislo4:=1 to 1 do
      write(vylosovane4[cislo4], ' ');
    writeln();
    writeln('Uspesnost: ', uspech4);
    case uspech4 of
      1:
      begin
        hotovost4:=hotovost4 + (stavka4*10);
        writeln('Vyhravate desatnásobok stávky = ', stavka4*10);
      end
      else
        writeln('Ztrácate celu svoju stavku = ', -stavka4);
    end;
    writeln('Vase zetóny: ', hotovost4);
    if hotovost4 < 50 then
    begin
      writeln('Vase zetóny bohuzial nedosahujú stávkového minima.');
      writeln('Prosím, opuste hru.');
    end
    else
    begin
      writeln('Chcete skoncit hru, napiste koniec a stlacte enter.');
      writeln('Pro pokracovanie v hre stlacte iba enter.');
      readln();
      read(koniec4);
    end;
  end;
  until (koniec4 = 'koniec') or (hotovost4 < 50);
  writeln('Vasa vyhra je dnes');
  writeln(hotovost4);
  writeln('Pre skoncenie programu stlacte enter');
  readln();
 end.

doma22
Pascal › Náhodné desatinné čísla
20. 1. 2021   #387227

#2 gna
čiže 1,.... alebo 5,...... a tak podobne v mojom príklade nie je možné, keďže random dáva iba celé čísla? A ešte prečo mi pri výpise vylosovaných a typovaných čísel dáva iba 0, to pre vyššie spomenutý problém?

doma22
Pascal › Náhodné desatinné čísla
19. 1. 2021   #387217

V knihe čo som si kúpil, je ako učebný príklad naprogramovanie pseudonáhodného výberu desatinných čísel s tromi desatinnými miestami v intervale 1 až 10 pri 5 možnostiach, to som zvládol, ale ako také vlastné vylepšenie som chcel, aby pc generovalo nie len 0,..., ale i napríklad 1,325 a tak podobne, avšak nech robím čokoľvek stále mi paskal generuje 0,..., a okrem toho mi na záver programu, kde sa majú zrekapitulovať tipy hráča a vylosované čísla píše paskal iba 0, prosím Vás neviete mi s tým pomôcť. Tu je zdrojový kód:

Program Herna;
 var vylosovane:array[1..10] of real;
 var tip:array[1..10] of real;
 var hotovost,stavka,vyhra:real;
 var cislo,uspech:real;
 var koniec:string;

  writeln('Dobry vecer');
  writeln('Kolko penazí chcete vymenit za zetóny (min. 30) a stlacte enter: ');
  readln(hotovost);
  if hotovost < 30 then
    writeln('Bohuzial, minimum je 30. Opuste prosím hernu.')
  else
  repeat
  begin
    Randomize;
    writeln('Vase zetóny sú');
    writeln(hotovost);
    writeln('Ak ste pripraveny k hre, dajte stávku.');
    writeln('Minimálna stávka je 30 zetónov');
    writeln('Zadajte stávku a stlacte enter: ');
    readln(stavka);
    while (stavka < 30) or (stavka > hotovost) do
    begin
      while stavka < 30 do
      begin
        writeln('Mali by ste prihodit aspon ', 30 - stavka3);
        writeln('Kolko pridáte: ');
        readln(cislo);
        stavka:=stavka + cislo;
      end;
      while stavka > hotovost do
      begin
        writeln('Tolko nemáte, znizte stávku.');
        writeln('Vase zetóny: ', hotovost);
        write('Vasa stavka (min. 30) a stlacte enter: ');
        readln(stavka);
      end;
    end;
    writeln('Stávka ', stavka,' je OK.');
    hotovost:=hotovost - stavka;
    writeln('Teraz máte u seba zetónov:', hotovost);
    for cislo:=1 to 5 do
    begin
      writeln('Tipnite si ', cislo ,'. desatinné císlo s troma desatinnými miestami (0-10) a stlacte enter: ');
      readln(tip[cislo:1:3]);
    end;
    writeln('Vase tipy: ');
    for cislo:=1 to 10 do
      writeln(tip[cislo:1:3], ' ');
    writeln('Pre zaciatok losovania stlacte enter: ');
    readln();
    uspech:=0;
    for cislo:=1 to 5 do
    begin
      vylosovane[cislo:1:3]:=random(10);
      writeln(cislo, '. cislo: ', vylosovane[cislo:1:3]);
      if vylosovane[cislo]=tip[cislo:1:3] then begin
        uspech:=uspech + 1;
        writeln(' ANO! -> Uspesnost = ',uspech,'. Stlacte enter.');
      end
      else
      writeln(' Nic. Uspesnost = ',uspech,'. Stlacte enter.');
      readln();
    end;
    writeln('Vase tipy : ');
    for cislo:=1 to 5 do
      writeln(tip[cislo:1:3], ' ');
    writeln();
    writeln('Vylosované: ');
    for cislo:=1 to 5 do
      write(vylosovane[cislo:1:3], ' ');
    writeln();
    writeln('Uspesnost: ', uspech);
    case uspech of
      5:
      begin
        hotovost:=hotovost + (stavka*6);
        writeln('Vyhravate sestnásobok stávky = ', stavka*5);
      end;
      4:
      begin
        hotovost:=hotovost + (stavka3*5);
        writeln('Vyhravate pätnásobok stávky = ', stavka*5);
      end;
      3:
      begin
        hotovost:=hotovost + (stavka div 2);
        writeln('Vyhrávate polovicu zo svojej stávky = ', stavka div 2);
      end;
      2:
      begin
        hotovost:=hotovost + (stavka div 3);
        writeln('Vyhrávate tretinu zo svojej stávky = ', stavka div 3);
      end
      else
        writeln('Ztrácate celu svoju stavku = ', -stavka);
    end;
    writeln('Vase zetóny: ', hotovost);
    if hotovost < 30 then
    begin
      writeln('Vase zetóny bohuzial nedosahujú stávkového minima.');
      writeln('Prosím, opuste hru.');
    end
    else
    begin
      writeln('Chcete skoncit hru, napiste koniec a stlacte enter.');
      writeln('Pro pokracovanie v hre stlacte iba enter.');
      readln();
      read(koniec);
    end;
  end;

doma22
Pascal › Turbo Pascal
19. 1. 2021   #387212

#4 gna
aha, ďakujem za pomoc

doma22
Pascal › Turbo Pascal
19. 1. 2021   #387208

#2 gna
Neviem, na tej stránke kde som to našiel písali, že tento spôsob deklarácie funkcie funguje iba v turbo paskale, no ak je to štandard, tak prečo nedochádza k duplikácii názvov, to potom teda môžem mať jeden názov pre dve veci? 

 

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý