| | |
| Stránka: 1 z 1
| [ Príspevkov: 6 ] | |
Autor | Správa |
---|
Registrovaný: 19.09.09 Prihlásený: 12.09.13 Príspevky: 359 Témy: 55 Bydlisko: Rohožník | Napísal mack0: 29.12.2010 20:21 | |
|
Zdravím pánové ;-)
riešim taký menší problém ... potrebujem z funkcie hra (ktorá spravuje pole), aby do cykla for (ktoreho je súčasťou) aby vždy, ak je pole plné, vráti o krok späť.
niečo ako
Kód: int hra (int pole[50], int kontrola) { zistenie, ci je pole plne, ak ano, kontrola=1;
}
int main () { ... for (krok=1;krok<=50;krok++) kontrola=0; ... hra(pole,kontrola); if (kontrola=1) krok=(krok-1); // resp. krok-- ... }
problem je ten, ze ked mam kontrola=1 (hodnota z funkcie), tak ten cyklus to neakceptuje, tj. nevrati krok spat ...
resp. skusal som kontrola nahradit cez return ... ak je plne, tak return 0 ... ak dam podmienku potom v main if (hra==0) krok--; tak vzsledok ten isty...
kde je chyba, kde robim chybu alebo je nejaka alternativa?
vdaka
|
|
Registrovaný: 29.10.08 Prihlásený: 30.07.12 Príspevky: 933 Témy: 2 | Napísal coldak: 29.12.2010 20:27 | |
|
if (kontrola=1) alebo if (kontrola==1) ?:)
|
|
Registrovaný: 19.09.09 Prihlásený: 12.09.13 Príspevky: 359 Témy: 55 Bydlisko: Rohožník | Napísal autor témy mack0: 29.12.2010 20:55 | |
|
sorry ... pomylil som sa .. samozrejme v podmienke mám == ... no jednoducho to nejde .... dal by som sem cely zdrojak, no je do zadanie do skoly a nechcem riskovat
mám 2 hracov .... aj je parny krok, hraje 1., ak neparny, tak 2. ... cize on cez funkciu ulozi do pola cislo ... aj je daná suradnica plna, tak program napise, ze je to plne a aby isiel este raz ... a mal by byt zasa na rade vdaka tomu, ze sa vrati cyklus o krok spat ... lenze to nefunguje ... le to lepsie teraz popísane? ;-)
|
|
Registrovaný: 11.01.09 Prihlásený: 25.04.24 Príspevky: 1385 Témy: 9 Bydlisko: Hrinova | Napísal Fico: 29.12.2010 21:01 | |
|
Nefunguje ti to, lebo funkcia hra ti nemení premennú kontrola. Prečo? Lebo:
Kód: int hra (int pole[50], int kontrola) Toto je prototyp funkcie. V tele tejto funkcie pracuješ iba s hodnotami parametrov tejto funkcie, nemeníš priamo premennú, ale iba kópiu, ktorá sa vytvorila na stacku po zavolaní funkcie. Ak potrebuješ meniť hodnotu premennej vo vnútri funkcie, použi smerníky ( prípadne v jazyku C++ môžeš použiť aj referencie ). Tvoja funkcia bude vyzerať potom takto: Kód: int hra ( int pole[50], int* kontrola ) {
// tvoj kod *kontrola = 1;
} Takto sa ti už bude meniť hodnota premennej, ktorú vložíš ako parameter tejto funkcie. Funkciu potom voláš takto: Kód: hra( pole, &kontrola );
|
|
Registrovaný: 19.09.09 Prihlásený: 12.09.13 Príspevky: 359 Témy: 55 Bydlisko: Rohožník | Napísal autor témy mack0: 29.12.2010 21:05 | |
|
aha ... pointer ... a ja som vedel, že mi tam niečo chýba
Fakt ďakujem ;-)
|
|
Registrovaný: 08.03.09 Prihlásený: 06.10.20 Príspevky: 1116 Témy: 88 Bydlisko: 00100100 | Napísal reDo: 30.12.2010 8:55 | |
|
v C++ by si mohol pouzit dodanie odkazom
Kód: int & a;
funguje to ako pointer ibaze je zamaskovany
hodi sa pri praci s velkymi hodnotami, triedy, struktury...
_________________ Programming is The Best
Hackers Are Not Crackers!!! Hackers build things, crackers break them!
;-) |
|
| Stránka: 1 z 1
| [ Príspevkov: 6 ] | |
Podobné témy | Témy | Odpovede | Zobrazenia | Posledný príspevok |
---|
| Funcie pre Jazyk C v Assembler, C, C++, Pascal, Java | 0 | 567 | 14.04.2008 12:46 NUE | | zmena cyklu v Assembler, C, C++, Pascal, Java | 4 | 497 | 25.03.2011 10:08 zaefrim | | Opakovanie while cyklu v PHP, ASP | 2 | 505 | 05.08.2010 10:24 eth4rendil | | Asembler zrychlenie vykonavania cyklu v Assembler, C, C++, Pascal, Java | 6 | 443 | 05.03.2013 19:25 n0sf3ratus | | čast cyklu while obsahujuca IF sa mi neopakuje v PHP, ASP | 6 | 455 | 26.07.2010 12:30 Blackshadow | | da sa pouzit nekonecny cyklus na spustenie mesacneho cyklu? v PHP, ASP | 16 | 1035 | 16.10.2008 15:34 Roko |
| 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
|
|