PDA

Visualizza la versione completa : [C++] Esecuzione programma con esito sempre diverso


drinu
11-11-2006, 01:19
ciao a tutti, abbiate pazienza ma sono al mio primo programma e volevo postarlo facendovi qualche domanda, è un po lunghetto:

#include <iostream>
#include <cstdlib>
using namespace std;

int x, y;
int i;
int n;
char s;
int mazzo[40][2];
int mazzo_da_riempire[40][2];
static double risultato_giocatore, risultato_banco;
double o;

void funzione();
void funzione2();
void funzione3();
void funzione4();
void funzione5();
void funzione6();
void funzione7();
void funzione8();
void funzione9();

int main() {


for(;;) {

cout<<" SETTE e MEZZO by cri"<<"\n\n";

srand(time (NULL));
risultato_giocatore=0.0;
risultato_banco=0.0;

funzione();

system("pause");
}
return 0;
}
void funzione() { //carica l'array mazzo con le 40 carte

for(x=0; x<10; x++) {
mazzo[x][0]=x+1;
mazzo[x][1]=3;
}
for(x=10; x<20; x++) {
mazzo[x][0]=x-9;
mazzo[x][1]=4;
}
for(x=20; x<30; x++) {
mazzo[x][0]=x-19;
mazzo[x][1]=5;
}
for(x=30; x<40; x++) {
mazzo[x][0]=x-29;
mazzo[x][1]=6;
}
for(x=0; x<40; x++) {
for(i=0; i<2; i++) {
cout<<mazzo[x][i]<<" ";
}
cout<<"\n";
}
cout<<"\n\n";
funzione2();
}

void funzione2() { // mette tutti i membri dell'array mazzo_da_riempire a 0

for(x=0; x<40; x++) {
for(i=0; i<2; i++) {
mazzo_da_riempire[x][i]=0;
}
}

cout<<"\n";
funzione3();
}

void funzione3() { //inserisce la carta uscita nell'array mazzo_da_riempire

n=0+rand()%39;
s= mazzo[n][1];

if (mazzo_da_riempire[n][0]!=0) funzione3();
mazzo_da_riempire[n][0]=mazzo[n][0];
mazzo_da_riempire[n][1]=mazzo[n][1];
for(x=0; x<40; x++) {
for(i=0; i<2; i++) {
cout<<mazzo_da_riempire[x][i]<<" ";
}
cout<<"\n";
}
cout<<"\n";
funzione4();
}

void funzione4() {
switch (n) {
case 0:
case 1:
case 2:
case 3:
case 4:
case 5:
case 6:
cout<<"la tua carta : "<<mazzo_da_riempire[n][0]<<" "<<s;
risultato_giocatore+=n;
cout<<"var risultato_giocatore :"<<risultato_giocatore;
break;
case 10:
case 11:
case 12:
case 13:
case 14:
case 15:
case 16:
cout<<"la tua carta : "<<mazzo_da_riempire[n][0]<<" "<<s;
risultato_giocatore+=(n-9);
cout<<"var risultato_giocatore :"<<risultato_giocatore;
break;
case 20:
case 21:
case 22:
case 23:
case 24:
case 25:
case 26:
cout<<"la tua carta : "<<mazzo_da_riempire[n][0]<<" "<<s;
risultato_giocatore+=(n-19);
cout<<"var risultato_giocatore :"<<risultato_giocatore;
break;
case 30:
case 31:
case 32:
case 33:
case 34:
case 35:
case 36:
cout<<"la tua carta : "<<mazzo_da_riempire[n][0]<<" "<<s;
risultato_giocatore+=(n-29);
cout<<"var risultato_giocatore :"<<risultato_giocatore;
break;
case 7:
case 17:
case 27:
case 37:
cout<<"la tua carta : J "<<s;
o=0.5;
risultato_giocatore+=o;
cout<<"var risultato_giocatore :"<<risultato_giocatore;
break;
case 8:
case 18:
case 28:
case 38:
cout<<"la tua carta : Q "<<s;
o=0.5;
risultato_giocatore+=o;
cout<<"var risultato_giocatore :"<<risultato_giocatore;
break;
case 9:
case 19:
case 29:
case 39:
cout<<"la tua carta : K "<<s;
o=0.5;
risultato_giocatore+=o;
cout<<"var risultato_giocatore :"<<risultato_giocatore;
break;
}
funzione5();
}

void funzione5() { //scelta c o s

dacapo:

char another;

cout<<"vuoi un'altra carta o stai? 'c' o 's'";
cin>>another;

if (another=='c') funzione3();
else if (another=='s') funzione6();
else {
cout<<"\n\n";
cout<<"scelta sbagliata, scegli 'c' o 's', continua";
cout<<"\n\n";
goto dacapo;
}
}

void funzione6() {
cout<<"sei arrivato a :"<<risultato_giocatore;
cout<<"\n\n";
cout<<"tocca al banco";
funzione7();
}

void funzione7() {

cout<<"\n";

n=0+rand()%39;
s= mazzo[n][1];

if (mazzo_da_riempire[n][0]!=0) funzione7();
mazzo_da_riempire[n][0]=mazzo[n][0];
mazzo_da_riempire[n][1]=mazzo[n][1];
for(x=0; x<40; x++) {
for(i=0; i<2; i++) {
cout<<mazzo_da_riempire[x][i]<<" ";
}
cout<<"\n";
}
cout<<"\n";
funzione8();
}


void funzione8() {
switch (n) {
case 0:
case 1:
case 2:
case 3:
case 4:
case 5:
case 6:
cout<<"la carta del banco: "<<mazzo_da_riempire[n][0]<<" "<<s;
risultato_banco+=n;
cout<<"var risultato_banco :"<<risultato_banco;
break;
case 10:
case 11:
case 12:
case 13:
case 14:
case 15:
case 16:
cout<<"la carta del banco: "<<mazzo_da_riempire[n][0]<<" "<<s;
risultato_banco+=(n-9);
cout<<"var risultato_banco :"<<risultato_banco;
break;
case 20:
case 21:
case 22:
case 23:
case 24:
case 25:
case 26:
cout<<"la carta del banco: "<<mazzo_da_riempire[n][0]<<" "<<s;
risultato_banco+=(n-19);
cout<<"var risultato_banco :"<<risultato_banco;
break;
case 30:
case 31:
case 32:
case 33:
case 34:
case 35:
case 36:
cout<<"la carta del banco: "<<mazzo_da_riempire[n][0]<<" "<<s;
risultato_banco+=(n-29);
cout<<"var risultato_banco :"<<risultato_banco;
break;
case 7:
case 17:
case 27:
case 37:
cout<<"la carta del banco: J "<<s;
o=0.5;
risultato_banco+=o;
cout<<"var risultato_banco :"<<risultato_banco;
break;
case 8:
case 18:
case 28:
case 38:
cout<<"la carta del banco: Q "<<s;
o=0.5;
risultato_banco+=o;
cout<<"var risultato_banco :"<<risultato_banco;
break;
case 9:
case 19:
case 29:
case 39:
cout<<"la carta del banco: K "<<s;
o=0.5;
risultato_banco+=o;
cout<<"var risultato_banco :"<<risultato_banco;
break;
}
funzione9();
}


void funzione9() {

if (risultato_banco<=5.0) {
cout<<"altra carta per il banco: ";
funzione7();
}
if (risultato_banco>5.0 && risultato_banco<=7.5) cout<<"il banco si ferma a: "<<risultato_banco<<"\n";
if (risultato_banco<risultato_giocatore) cout<<"hai vinto!";
else cout<<"il banco vince!";
}



-------------------------------------------------------------------------------
ora questo programma viene eseguito ogni volta con delle diversità
ad esempio:

nella funzione9(), cioè a fine programma, di scritte "hai vinto" oppure "il banco vince" ne compaiono da 1 a 4-5.

sempre nella funzione9() a volte non rispetta l'istruzione fermandosi ma continua a estrarre altre carte.

non riesco a capire il perchè di tale comportamento, spero sappiate aiutarmi.
scusate ancora per la lunghezza.
ciao

drinu
11-11-2006, 01:23
dimenticavo come compilatore uso dev c++ 4.9.9.2

Loading