gianni_pb Comune mortale

Registrato: 09/07/08 17:42 Messaggi: 2
|
Inviato: 09 Lug 2008 17:46 Oggetto: [C/C++] Errore che non riesco a capire |
|
|
Vi premetto che non sono assolutamente un esperto....ma sto provando a fare un "piccolo" programmino...
questa è la prima parte:
Codice: |
#include <iostream>
using namespace std;
//------------------------------------------------------
int anno, anno_corr=2008; // DA CAMBIARE X ANNI SUCCESSIVI!!! --------------------------------------------------------------------------------------
//------------------------------------------------------
int array_class[19];
char sex='\0', esist_u12='\0', esist_u14='\0', u12='\0', u14='\0', o50='\0', o55='\0'; //tuoi dati: sesso, under, over...
int class_iniz=0; //classifica iniziale (nn varia all'interno del programma)
int c=0; //indice della classifica
void funz_sex (); // sex
void funz_u12_u14 (); // anno di nascita
void funz_calc_class_iniz (); // class iniz
void funz_esist_u12_u14 (); // avvers U?
main ()
{
cout << "INFORMAZIONI INIZIALI " <<endl<<endl;
funz_sex (); // sesso m/f?
funz_u12_u14 (); // anno di nascita
funz_calc_class_iniz (); // input della tua classifica
funz_esist_u12_u14 (); // hai battuto u12/u14?
int punt_iniz; //punteggio iniziale in base alla classifica iniziale (nn cambia in caso di promozioni o retrocessioni)
cout << "Sex: " << sex; // controllo sex
cout << endl;
cout << "u12 " << u12; // controllo risposta u12 giocatore
cout << endl;
cout << "u14 " << u14; //controllo risposta u14 giocatore
cout << endl;
cout << "o50 " << o50; // controllo risposta u12 giocatore
cout << endl;
cout << "o55 " << o55; //controllo risposta u14 giocatore
cout << endl;
system("pause");
}
//----------------------------------------------------------------------------------------------------------------------------------------------------
//--------------------------------------------------------------------------FUNZIONI------------------------------------------------------------------
//----------------------------------------------------------------------------------------------------------------------------------------------------
void funz_sex ()
{
do
{
cout << "Sei uomo o donna? m/f ";
cin >> sex;
if (sex != 'm' && sex != 'f')
cout << "Errore! Risposta non corretta! Scegli m/f" <<endl;
}
while (sex != 'm' && sex != 'f');
cout << "Sex: " << sex; // controllo sex
cout << endl;
}
void funz_u12_u14 ()
{
do
{
cout << "Inserisci il tuo anno di nascita: ";
cin >> anno;
if (anno<1900 || anno>=anno_corr-10)
if (anno-anno_corr<=10 && anno>1900 && anno<anno_corr)
cout << "Gli U10 non possono avere una classifica diversa da 4 nc" <<endl;
else
cout << "Errore! Risposta non corretta! (es.2008)" <<endl;
}
while (anno<1900 || anno>=anno_corr-10);
if (anno_corr-anno==12 || anno_corr-anno==11) u12='s';
else u12='n';
if (anno_corr-anno==14 || anno_corr-anno==13) u14='s';
else u14='n';
if (anno_corr-anno>55 && sex=='m') o55='s';
else o55='n';
if (anno_corr-anno>50 && sex=='f') o50='s';
else o50='n';
cout << "u12 " << u12; // controllo risposta u12 giocatore
cout << endl;
cout << "u14 " << u14; //controllo risposta u14 giocatore
cout << endl;
cout << "o50 " << o50; // controllo risposta u12 giocatore
cout << endl;
cout << "o55 " << o55; //controllo risposta u14 giocatore
cout << endl;
}
void funz_calc_class_iniz ()
{
do
{
cout << "Qual e' la tua classifica attuale? Scegline una:" <<endl;
cout << "21 22 23 24 25 26 27 28" <<endl;
cout << "31 32 33 34 35" <<endl;
cout << "41 42 43 44 45" <<endl;
cout << "NC (se NC, digita 0)" <<endl;
cin >> class_iniz;
cout <<endl;
//array delle classifiche
array_class[0]=21;
array_class[1]=22;
array_class[2]=23;
array_class[3]=24;
array_class[4]=25;
array_class[5]=26;
array_class[6]=27;
array_class[7]=28;
array_class[8]=31;
array_class[9]=32;
array_class[10]=33;
array_class[11]=34;
array_class[12]=35;
array_class[13]=41;
array_class[14]=42;
array_class[15]=43;
array_class[16]=44;
array_class[17]=45;
array_class[18]=50; //nc
array_class[19]=99; //per assenza -----------------sarà un problema???
if (class_iniz==0)
class_iniz=50;
do c++; //scorri l'array della classifica finchè trovo il valore di c corrispondente alla classifica inserita
while (array_class[c]!=class_iniz);
if (class_iniz>0 && class_iniz<21 || class_iniz>28 && class_iniz<31 || class_iniz>35 && class_iniz<41 || class_iniz>45 && class_iniz!=50)
cout << "Errore! Dato non corretto!" << endl << endl;
}
while (class_iniz>0 && class_iniz<21 || class_iniz>28 && class_iniz<31 || class_iniz>35 && class_iniz<41 || class_iniz>45 && class_iniz!=50);
}
void funz_esist_u12_u14 ()
{
if (u12=='n')
{
do
{
cout << "Hai incontrato e battuto almeno un U12?" << endl << "(non contare le vittorie per assenza) s/n ";
cin >> esist_u12;
if (esist_u12 != 's' && esist_u12 != 'n')
cout << "Errore! Risposta non corretta! Scegli s/n" <<endl;
}
while (esist_u12 != 's' && esist_u12 != 'n');
}
if (u12=='n' && u14=='n')
{
do
{
cout << "Hai incontrato e battuto almeno un U14?" << endl << "(non contare le vittorie per assenza) s/n ";
cin >> esist_u14;
if (esist_u14 != 's' && esist_u14 != 'n')
cout << "Errore! Risposta non corretta! Scegli s/n" <<endl;
}
while (esist_u14 != 's' && esist_u14 != 'n');
}
}
|
Inserendo correttamente il Sesso, inizialmente l'output è corretto, ma il controllo che è presente alla fine del programma, come potete notare, dà sex=c!
e in più non "vede" l'opzione u12 (ovvero non ti dice se sei under 12 o meno)
La cosa assurda è che se tolgo la funzione void funz_calc_class_iniz (); funziona tutto! |
|