Obsah fóra
PravidláRegistrovaťPrihlásenie




Odpovedať na tému [ Príspevkov: 13 ] 
AutorSpráva
Offline

Užívateľ
Užívateľ
Pascal uloha

Registrovaný: 23.12.10
Prihlásený: 10.09.22
Príspevky: 1056
Témy: 157
Bydlisko: KK/PP/BA
Príspevok NapísalOffline : 16.11.2011 21:44

Cawte. robim jednu ulohu do skoly. Uz dost dlho sa trapim a nemozem najst chybu. Zadanie:
Citácia:
Úloha: Vytvorte program pre hru dvoch hráčov. Program simuluje 15 náhodných hodov hracou kockou a zisťuje víťaza. Prvý hráč pod menom Párny vyhráva, keď padne viackrát párne číslo ako nepárne číslo. Druhý hráč pod menom Nepárny vyhráva, keď padne viackrát nepárne číslo ako párne číslo. Program vypisuje generované čísla. Výstupné údaje sú, kto vyhral a s akým počtom hodov.


Moj zdrojak:
Kód:
uses crt;
var i,b,x,k,y,o,u,m,n: integer;
    a,c: array [1..100] of integer;
begin
 clrscr;
 m:=0;
 n:=0;
 writeln ('Hadze hrac parny');
 writeln ('Cisla su: ');
 for i:=1 to 15 do begin
                   randomize;
                   x:=random(100)+1;
                   write (x,',');
                   delay(100);
                   k:= x mod 2;
                   if k=0 then begin
                               a[i]:=x;
                               m:=m+1;
                               end;
                   end;
 writeln;
 writeln ('Hadze hrac neparny');
 writeln ('Cisla su: ');
 for b:=1 to 15 do begin
                   u:=random(100)+1;
                   write (u,',');
                   delay(100);
                   k:= u mod 2;
                   if k>0 then begin
                               c[b]:=u;
                               n:=n+1;
                               end;
                   end;
 writeln;
 writeln ('Hrac menom parny ma parne cisla: ');
 for y:=1 to m do write (a[y],',');
 writeln;
 writeln ('Hrac menom neparny ma neparne cisla: ');
 for o:=1 to n do write (c[o],',');
 writeln;
 if m>n then writeln ('Vyhral hrac menom PARNY');
 if m<n then writeln ('Vyhral hrac menom NEPARNY');
 if m=n then writeln ('Nastala remiza');
 readln;
end.


Pri vystupe vyjdu niekedy dobre cisla, ale casto sa stava, ze vyjde 0. Pri com 0 nemam vygenerovanu.
Trochu sa ospravedlnujem za neprehladnost kodu, a plno zbytocnych premennych. Skusal som rozne moznosti, ale na nic som neprisiel. Vdaka za radu.


Offline

Užívateľ
Užívateľ
Pascal uloha

Registrovaný: 19.09.09
Prihlásený: 12.09.13
Príspevky: 359
Témy: 55
Bydlisko: Rohožník
Príspevok NapísalOffline : 17.11.2011 19:47

V prvom rade by som namiesto casti opakovaneho kodu pouzil funkciu, bolo by to aj prehladnejsie.

Co sa tyka funkcionality, tak jednak som to ani neskusal a v Pascalovi dost dlhe roky neprogramoval, no ty chces nakonci vypisat konkretne cisla, ktoré daný hrác (napr. hracParny a parne cisla), lenze ty v tom for cykle ukladas tie cisla do pola nie porade za sebou, ale s medzerami, ak bolo hodene neparne.
Na konci to vypisujes hned za sebou, takze aspon podla toho co vidim, aj tam ti to musi vypisovat hluposti

Skus nepouzivat premennu z for cykla pre poziciu v poli, ale skor to "pocitadlo", tj. nie a(i), ale a(m)


Offline

Užívateľ
Užívateľ
Pascal uloha

Registrovaný: 27.12.08
Prihlásený: 13.12.22
Príspevky: 1874
Témy: 96
Bydlisko: Bratislava,...
Príspevok NapísalOffline : 17.11.2011 20:27

mack0 má pravdu, síce prvky ukladáš aj vyberáš z poľa, ale ukladáš ich na iné miesto ako to, z ktorého vyberáš (a[2] v tvojom prípade nie je druhé párne číslo, ale 0, pokiaľ druhé vylosované číslo bolo nepárne, a druhé vylosované číslo, pokiaľ bolo párne)

okrem toho: si si istý, že si dobre pochopil zadanie? "Program simuluje 15 náhodných hodov hracou kockou" píšu 15 hodov, minimálne ja by som to chápal tak, že dokopy sa hádže 15-krát, a pokiaľ padne viac párnych tak vyhráva párny, pokiaľ padne viac nepárnych vyhráva nepárny (v takomto prípade nemôže nastať remíza, o ktorej sa zadanie tak isto nezmieňuje), okrem toho, na hracej kocke môžu padnúť čísla od 1 do 6, nie od 1 do 100..

a k tým premenným, si si vedomý toho, že stačí použiť jedno pole a b,y,o,u sú nadbytočné premenné že? :)







_________________
~Listen to your brain, not your heart~
NB1: Lenovo Y500: CPU: Intel Core i7-3630QM; GPU: nVidia GT650M 2GB SLi; RAM: 16GB DDR3; HDD: 1TB + 256GB SSD (m4); LCD: 15,6" 1920x1080; OS: Win8.1 64-bit + Arch Linux 64-bit (UEFI Powered DualBoot)
NB2: Asus K53SJ-SX093: CPU: Intel Core i3-2310M; GPU: Intel HD3000 / nVidia GT520M 1GB Optimus; RAM: 8GB DDR3; SSD: 128GB 840Evo; LCD: 15,6" 1366x768; OS: Win 8.1 Pro 64-bit (UEFI)
Offline

Užívateľ
Užívateľ
Pascal uloha

Registrovaný: 23.12.10
Prihlásený: 10.09.22
Príspevky: 1056
Témy: 157
Bydlisko: KK/PP/BA
Príspevok Napísal autor témyOffline : 19.11.2011 15:34

Dakujem. Mas pravdu zle som pochopil zadanie :oops:
novy kod je tu:
Kód:
uses crt;
var i,j,k,l,d,x: integer;
    a,b: array [1..100] of integer;
begin
 clrscr;
 randomize;
 i:=1;
 j:=1;
 writeln ('Hod kockou');
 for i:=1 to 15 do begin
                   x:=random(6)+1;
                   d:=x mod 2;
                   if d=0 then begin
                               a[i]:=x;
                               i:=i+1;
                               end;
                   if d>0 then begin
                               b[j]:=x;
                               j:=j+1;
                               end;
                   end;
 writeln ('Hrac parny ma tieto cisla: ');
 for k:=1 to i-1 do write (a[k]);
 writeln;
 writeln ('Hrac menom neparny ma tieto cisla: ');
 for l:=1 to j-1 do write (b[l]);
 readln;
end.



Ale nechapem to s tym polom. Program robi to iste, ako ten prvy. Uklada tam nuly a hociake somariny.


Offline

Užívateľ
Užívateľ
Pascal uloha

Registrovaný: 19.09.09
Prihlásený: 12.09.13
Príspevky: 359
Témy: 55
Bydlisko: Rohožník
Príspevok NapísalOffline : 19.11.2011 20:23

A zasa tam mas hluposti...
Asi moc dobre nechapes praci s polom, lebo zasa ti to uklada hocikde len nie za sebou (vo vseobecnosti).

Skus toto (som to len z hlavy napisal):

Kód:

uses crt;
var i,p,n,d,x: integer;
    a,b: array [1..100] of integer;
begin
 clrscr;
 randomize;
 i:=1;
p:=1;          // zmena tu v premennych
n:=1;

 writeln ('Hod kockou');
 for i:=1 to 15 do begin
                   x:=random(6)+1;
                   d:=x mod 2;
                   if d=0 then begin
                               a[p]:=x;          // zmena tu a pod tymto
                               p:=p+1;
                               end;
                   if d>0 then begin
                               b[n]:=x;           // zmena tu a pod tymto
                               n:=n+1;
                               end;
                   end;
 writeln ('Hrac parny ma tieto cisla: ');
 for i:=1 to p-1 do write (a[i]);                  // zmena tu
 writeln;
 writeln ('Hrac menom neparny ma tieto cisla: ');
 for i:=1 to n-1 do write (b[i]);                   // zmena tu

if p>n then write (´Vyhral hrac parny´);
// + dalsie 2 podmienky

 readln;
end.





Ako som pisal, je to z hlavy, no malo by ti to teraz slapat ...


Offline

Užívateľ
Užívateľ
Pascal uloha

Registrovaný: 23.12.10
Prihlásený: 10.09.22
Príspevky: 1056
Témy: 157
Bydlisko: KK/PP/BA
Príspevok Napísal autor témyOffline : 21.11.2011 15:22

ahaa uz chapem :) dakujem funguje to.







_________________
HP ProBook 4530s Intel® Core™ i5-2430M (2.4GHz, 3MB, 2 jadrá)*4GB 1333MHz DDR3*ATI Mobility Radeon HD 6490 1GB + Intel HD Graphics 3000*640GB SATA 5400RPM *Windows 7 Home Premium 64 bitová verzia
Lenovo IdeaPad Z50-70 Intel Core i5 4210 Haswell* NVIDIA GeForce GT 840M 4GB + Intel HD Graphics 4000*SSHD 1TB 5400 otáčok + 8GB cache*RAM 4GB* Full HD (1920 × 1080)*Windows 10 pro

Boh je reálny, pokial nebol deklarovaný ako integer
Offline

Užívateľ
Užívateľ
Pascal uloha

Registrovaný: 23.12.10
Prihlásený: 10.09.22
Príspevky: 1056
Témy: 157
Bydlisko: KK/PP/BA
Príspevok Napísal autor témyOffline : 23.11.2011 17:13

Sorry za double post, ale mam este jenu vec a nechcem tu zakladat X tem, preto to pisem do tejto. Potreboval by som retazce znakov spojit/zlepit spolu. Ako na to? Hladal som na googli, a nasiel som to cez funkciu insert. Ale tomu moc nechapem. Vedel by niekto o inom sposobe? (samozrejme lachsom ) Ak nie ten insert budem musiet nastudovat...







_________________
HP ProBook 4530s Intel® Core™ i5-2430M (2.4GHz, 3MB, 2 jadrá)*4GB 1333MHz DDR3*ATI Mobility Radeon HD 6490 1GB + Intel HD Graphics 3000*640GB SATA 5400RPM *Windows 7 Home Premium 64 bitová verzia
Lenovo IdeaPad Z50-70 Intel Core i5 4210 Haswell* NVIDIA GeForce GT 840M 4GB + Intel HD Graphics 4000*SSHD 1TB 5400 otáčok + 8GB cache*RAM 4GB* Full HD (1920 × 1080)*Windows 10 pro

Boh je reálny, pokial nebol deklarovaný ako integer
Offline

Užívateľ
Užívateľ
Pascal uloha

Registrovaný: 14.03.11
Prihlásený: 02.08.23
Príspevky: 814
Témy: 23
Bydlisko: Bratislava
Príspevok NapísalOffline : 24.11.2011 13:18

ferdo93 píše:
Sorry za double post, ale mam este jenu vec a nechcem tu zakladat X tem, preto to pisem do tejto. Potreboval by som retazce znakov spojit/zlepit spolu. Ako na to? Hladal som na googli, a nasiel som to cez funkciu insert. Ale tomu moc nechapem. Vedel by niekto o inom sposobe? (samozrejme lachsom ) Ak nie ten insert budem musiet nastudovat...


Pascal nepoznám, ale nebude to concat()?

google, "pascal string operators"


Offline

Užívateľ
Užívateľ
Pascal uloha

Registrovaný: 23.12.10
Prihlásený: 10.09.22
Príspevky: 1056
Témy: 157
Bydlisko: KK/PP/BA
Príspevok Napísal autor témyOffline : 26.11.2011 19:19

marian_r píše:
Pascal nepoznám, ale nebude to concat()?

google, "pascal string operators"


Conctact myslim v pascale nieje, ale na to sa pouziva funkcia insert. Ale problem vyrieseny. Robil som program, ktory prelozi vetu do dvojkovej sustavy. Vyriesil som to tak, ze v cykle pre kazdy znak vypisem to binarne cislo.


Dalsia uloha. Teraz si robim programik, ktory z cisla v dvojkovej sustave prevedie na desiatkovu.
Zdrojak:
Kód:
uses crt;
var x: string;
    j,d,n,k,p: integer;
begin
 clrscr;
 writeln ('Zadaj cislo v dvojkovej sustave');
 readln (x);
 d:=length(x);
 for j:=(d-1) downto 0 do begin
                          n:=x[j]*2;
                          for k:=1 to j do n:=n*n;
                          p:=p+n;
                          end;
 writeln ('Cislo je v desiatkovej sustave: ',p);
 readln;
end.


Program mi ani nespustilo, takze este nieje odladeny a mozu sa tam nachadzat syntaticke a logicke chyby. Chyba, pre ktoru sa mi program nespusti je n:=x[j]*2;, Nacitavam to do stringu, cize si mysli, ze su to znaky a potom to nechce ulozit do premennej, ktora je typu integer. Ja viem, ze to takto nepojde. Ako by sa to dalo inak vyriesit? Nic ine ma teraz nenapada.

Ak to cele pojde, Tak by som chcel este, aby vetu z dvojkovej sustavy previedlo na desiatkovu a cez cislo v ASCII tabulke vypisalo znak. Princip by som vedel,ale nemam ani sajnu ako zisti z dlheho cisla v dvojkovej sustave, ake z toho bude cislo v 10 sustave a nasledne aky znak v ASCII tabulke. Mam na mysli nieco taketo: 10001000111000100101010010101010101010010101001011001010 cital som nieco, ze kazdy znak ma 8 cisel v dvojkovej sustave, alebo ako to je.







_________________
HP ProBook 4530s Intel® Core™ i5-2430M (2.4GHz, 3MB, 2 jadrá)*4GB 1333MHz DDR3*ATI Mobility Radeon HD 6490 1GB + Intel HD Graphics 3000*640GB SATA 5400RPM *Windows 7 Home Premium 64 bitová verzia
Lenovo IdeaPad Z50-70 Intel Core i5 4210 Haswell* NVIDIA GeForce GT 840M 4GB + Intel HD Graphics 4000*SSHD 1TB 5400 otáčok + 8GB cache*RAM 4GB* Full HD (1920 × 1080)*Windows 10 pro

Boh je reálny, pokial nebol deklarovaný ako integer
Offline

Čestný člen
Čestný člen
Pascal uloha

Registrovaný: 11.08.07
Príspevky: 4088
Témy: 34
Bydlisko: Brno
Príspevok NapísalOffline : 26.11.2011 19:27

Nenapisal si, aku chybu ti to hodi, ale v Pascale sa indexuje od 1.


Offline

Užívateľ
Užívateľ
Pascal uloha

Registrovaný: 23.12.10
Prihlásený: 10.09.22
Príspevky: 1056
Témy: 157
Bydlisko: KK/PP/BA
Príspevok Napísal autor témyOffline : 26.11.2011 19:32

Incompatible types: got "Char" expected "SmallInt" a dava kurzor k riadku, ktory som popisal.
Vdaka, pozriem na to. Robil som to podla tabulky.

// vsimol som si dalsiu chybu. V tom druhom cykle ked umocnujem, je to napisane zle, chcelo by to dalsiu premennu. Takze prosim na tuto chybu neupozornovat :)







_________________
HP ProBook 4530s Intel® Core™ i5-2430M (2.4GHz, 3MB, 2 jadrá)*4GB 1333MHz DDR3*ATI Mobility Radeon HD 6490 1GB + Intel HD Graphics 3000*640GB SATA 5400RPM *Windows 7 Home Premium 64 bitová verzia
Lenovo IdeaPad Z50-70 Intel Core i5 4210 Haswell* NVIDIA GeForce GT 840M 4GB + Intel HD Graphics 4000*SSHD 1TB 5400 otáčok + 8GB cache*RAM 4GB* Full HD (1920 × 1080)*Windows 10 pro

Boh je reálny, pokial nebol deklarovaný ako integer
Offline

Čestný člen
Čestný člen
Pascal uloha

Registrovaný: 11.08.07
Príspevky: 4088
Témy: 34
Bydlisko: Brno
Príspevok NapísalOffline : 26.11.2011 20:46

Aha, tak to je jasne. String je pole charov, cize v x[j] je stale char, aj ked ma ciselnu hodnotu. Pouzi fciu ord(), ktora vrati ordinalne cislo daneho znaku v ASCII tabulke (48 pre '0' - 57 pre '9') a od tejto hodnoty odcitaj 48, tak dany znak prevedies na prislusne cislo.


Offline

Užívateľ
Užívateľ
Pascal uloha

Registrovaný: 23.12.10
Prihlásený: 10.09.22
Príspevky: 1056
Témy: 157
Bydlisko: KK/PP/BA
Príspevok Napísal autor témyOffline : 26.11.2011 21:59

Dakujem duri :) Toto ma nenapadlo. Este by som potreboval pomoct s tou druhou otazkou, asi to nebude az take lahke ako som si myslel :D







_________________
HP ProBook 4530s Intel® Core™ i5-2430M (2.4GHz, 3MB, 2 jadrá)*4GB 1333MHz DDR3*ATI Mobility Radeon HD 6490 1GB + Intel HD Graphics 3000*640GB SATA 5400RPM *Windows 7 Home Premium 64 bitová verzia
Lenovo IdeaPad Z50-70 Intel Core i5 4210 Haswell* NVIDIA GeForce GT 840M 4GB + Intel HD Graphics 4000*SSHD 1TB 5400 otáčok + 8GB cache*RAM 4GB* Full HD (1920 × 1080)*Windows 10 pro

Boh je reálny, pokial nebol deklarovaný ako integer
Odpovedať na tému [ Príspevkov: 13 ] 


Podobné témy

 Témy  Odpovede  Zobrazenia  Posledný príspevok 
V tomto fóre nie sú ďalšie neprečítané témy. pascal uloha

v Assembler, C, C++, Pascal, Java

1

615

11.11.2009 16:23

feromakovi Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Pascal uloha

v Assembler, C, C++, Pascal, Java

6

484

03.05.2010 7:42

coldak Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Free Pascal a Turbo Pascal

v Assembler, C, C++, Pascal, Java

0

384

19.12.2014 13:18

Styracoz Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Úloha

v Assembler, C, C++, Pascal, Java

8

371

28.04.2021 8:36

shiro Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Logicka uloha

v Krčma

13

3447

24.11.2011 0:12

Jeffo Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Assembler - úloha

v Assembler, C, C++, Pascal, Java

2

905

22.10.2007 15:04

programator Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. databazova uloha

v Databázy

8

631

27.11.2011 17:00

coldak Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. C# uloha

v Technológia .NET

4

668

02.12.2014 13:25

hatto13 Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Matematicka uloha

v Vzdelanie, štúdium, škola

28

2249

23.05.2008 20:03

Svolo Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Assembler úloha

v Assembler, C, C++, Pascal, Java

0

792

02.02.2008 7:37

HT Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Exel (vzorce) - uloha

v Ostatné programy

1

359

25.05.2013 19:59

IT-Academy Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Uloha z C++

v Assembler, C, C++, Pascal, Java

14

491

06.04.2014 22:43

Grims Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. C++ úloha ODMENA

v Assembler, C, C++, Pascal, Java

3

439

01.12.2012 11:42

C0lder Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. python - jednoduchá úloha

v Perl, Python, Ruby, CGI

5

960

08.06.2020 14:50

ux Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Uloha v JAVE, surne.

v Assembler, C, C++, Pascal, Java

2

1020

25.10.2009 12:30

hlodavec Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Assembler uloha - prosim pomoc

v Assembler, C, C++, Pascal, Java

2

842

28.05.2008 15:25

HT Zobrazenie posledných príspevkov


Nemôžete zakladať nové témy v tomto fóre
Nemôžete odpovedať na témy v tomto fóre
Nemôžete upravovať svoje príspevky v tomto fóre
Nemôžete mazať svoje príspevky v tomto fóre

Skočiť na:  

Powered by phpBB Jarvis © 2005 - 2024 PCforum, webhosting by WebSupport, secured by GeoTrust, edited by JanoF
Ako väčšina webových stránok aj my používame cookies. Zotrvaním na webovej stránke súhlasíte, že ich môžeme používať.
Všeobecné podmienky, spracovanie osobných údajov a pravidlá fóra