Tek se upoznajem sa charima jezika C;)
Problem imam sa sledecim zadatkom:
Dva igrača Ana i Marko naizmjenično bacaju po 2 kockice za jamb. Pobjeđuje igrač koji dobije sumu koja je djeljiva sa 3. Ako oba igrača dobiju sumu djelivu sa 3, bacanja se ponavljaju sve do pobjede jednog od igrača. Napisati program koji sa standardnog ulaza učitava pozitivan cio broj n (0<n<32767), koji služi kao seed za funkciju srand, simulira datu igru i štampa poruku o pobjedniku. Po završetku jedne igre, na ekranu treba da se pojavi poruka "Za novu igru pritsnite D ili d". Ako korisnik unese D ili d, unosi se broj n i igra se nastavlja; u suprotnom, program završava rad.
Problem je u sledecem:
Zadatak sam uradio,sem sto ne umijem da uradim stavku "ako uneses D ili d ide sve iz pocetka,a ako ne zavrsava se program".Mislio sam da to uradim jednostavno koristeci naredbu while.Ali ipak nesto ne stima;)
Moje "resenje" zadatka:
#include <stdio.h>
#include <stdlib.h>
int roll(void);
enum status{Goku,Pikolo,nastavak};
int main()
{
int n,suma1,suma2;
enum status gamestatus;
char odgovor;odgovor='D';
while (odgovor=='D' || odgovor=='d'){
printf("Unesi pozitivan cio broj n (0<n<32767),koji sluzi kao seed:");
scanf("%d",&n);
srand(n);gamestatus=nastavak;
while (gamestatus==nastavak){
suma1=roll();printf("Goku je bacio %d\n",suma1);
suma2=roll();printf("Pikolo je bacio %d\n",suma2);
if (suma1 != suma2 && suma1%3==0)gamestatus=Goku;
if (suma1 != suma2 && suma2%3==0)gamestatus=Pikolo;
if (suma1 == suma2 || (suma1!=suma2 && suma1%3!=0 && suma2%3!=0))
{gamestatus=nastavak;printf("\nNOVO BACANJE:\n");}
}/* end while */
switch(gamestatus){
case Goku:printf("\nGoku je pobijedio!\n");break;
case Pikolo:printf("\nPikolo je pobijedio!\n");break;
}
printf("Za novu igru pritisnite D ili d.\n");
scanf("%c",&odgovor);/*zasto ovo ne radiiiiiiiiiiiiii????*/
}
system("PAUSE");
return 0;
}
int roll(){
int x,y,z;
x=1+(rand()%6);
y=1+(rand()%6);
z=x+y;
printf("\nBacanje:%d+%d=%d\n",x,y,z);
return z;
}
Kad trazim da korisnik unese D ili d,program jednostavno preskoci scanf().
Zadatak je radjen u Dev-C++.
Tek sam poceo da radim u jeziku C,pa bi bilo kakva sugestija/primjedba sto se tiche ovog zadatka bila vise nego pozeljna;)
Problem imam sa sledecim zadatkom:
Dva igrača Ana i Marko naizmjenično bacaju po 2 kockice za jamb. Pobjeđuje igrač koji dobije sumu koja je djeljiva sa 3. Ako oba igrača dobiju sumu djelivu sa 3, bacanja se ponavljaju sve do pobjede jednog od igrača. Napisati program koji sa standardnog ulaza učitava pozitivan cio broj n (0<n<32767), koji služi kao seed za funkciju srand, simulira datu igru i štampa poruku o pobjedniku. Po završetku jedne igre, na ekranu treba da se pojavi poruka "Za novu igru pritsnite D ili d". Ako korisnik unese D ili d, unosi se broj n i igra se nastavlja; u suprotnom, program završava rad.
Problem je u sledecem:
Zadatak sam uradio,sem sto ne umijem da uradim stavku "ako uneses D ili d ide sve iz pocetka,a ako ne zavrsava se program".Mislio sam da to uradim jednostavno koristeci naredbu while.Ali ipak nesto ne stima;)
Moje "resenje" zadatka:
#include <stdio.h>
#include <stdlib.h>
int roll(void);
enum status{Goku,Pikolo,nastavak};
int main()
{
int n,suma1,suma2;
enum status gamestatus;
char odgovor;odgovor='D';
while (odgovor=='D' || odgovor=='d'){
printf("Unesi pozitivan cio broj n (0<n<32767),koji sluzi kao seed:");
scanf("%d",&n);
srand(n);gamestatus=nastavak;
while (gamestatus==nastavak){
suma1=roll();printf("Goku je bacio %d\n",suma1);
suma2=roll();printf("Pikolo je bacio %d\n",suma2);
if (suma1 != suma2 && suma1%3==0)gamestatus=Goku;
if (suma1 != suma2 && suma2%3==0)gamestatus=Pikolo;
if (suma1 == suma2 || (suma1!=suma2 && suma1%3!=0 && suma2%3!=0))
{gamestatus=nastavak;printf("\nNOVO BACANJE:\n");}
}/* end while */
switch(gamestatus){
case Goku:printf("\nGoku je pobijedio!\n");break;
case Pikolo:printf("\nPikolo je pobijedio!\n");break;
}
printf("Za novu igru pritisnite D ili d.\n");
scanf("%c",&odgovor);/*zasto ovo ne radiiiiiiiiiiiiii????*/
}
system("PAUSE");
return 0;
}
int roll(){
int x,y,z;
x=1+(rand()%6);
y=1+(rand()%6);
z=x+y;
printf("\nBacanje:%d+%d=%d\n",x,y,z);
return z;
}
Kad trazim da korisnik unese D ili d,program jednostavno preskoci scanf().
Zadatak je radjen u Dev-C++.
Tek sam poceo da radim u jeziku C,pa bi bilo kakva sugestija/primjedba sto se tiche ovog zadatka bila vise nego pozeljna;)