Salve a tutti,
ho un problema il il passaggio del char n[]
nella chiamata al metodo add della classe votazioni, viene presa solo la parte prima dello spazio vuoto oltre al fatto che il ciclo while si blocca e va al infinito
#include <iostream>
#include <iomanip>
using namespace std;
struct partito {
char nome[30];
unsigned voti; };
class votazioni {
private:
partito pd;
partito forza_it;
partito lega_verde;
public:
votazioni();
~votazioni();
unsigned add(char x[ ]);
void stampa();
void svuota();
unsigned get_voti(char x[ ]);
unsigned total();
};
votazioni::votazioni(){
strcpy(pd.nome,"pd");
strcpy(forza_it.nome,"forza italia");
strcpy(lega_verde.nome,"lega verde");
pd.voti = 0;
forza_it.voti = 0;
lega_verde.voti = 0; }
votazioni::~votazioni(){ }
unsigned votazioni::add(char x[ ]){
if( !strcmp(pd.nome,x) ){
pd.voti += 1;
return pd.voti; }
if( !strcmp(forza_it.nome,x) ){
forza_it.voti += 1;
return forza_it.voti; }
if(!strcmp(lega_verde.nome,x)){
lega_verde.voti += 1;
return lega_verde.voti; }
else
return 0; }
void votazioni::stampa(){
cout << "voti pd: " << pd.voti <<endl;
cout << "voti forza_it: " << forza_it.voti << endl;
cout << "voti lega_verde: " << lega_verde.voti << endl; }
void votazioni::svuota() {
pd.voti = 0;
forza_it.voti = 0;
lega_verde.voti = 0; }
unsigned votazioni::get_voti(char x[ ]){
if(!strcmp(x,pd.nome))
return pd.voti;
if(!strcmp(x,forza_it.nome))
return forza_it.voti;
if(!strcmp(x,lega_verde.nome))
return lega_verde.voti;
else
return 0; }
unsigned votazioni::total(){
return (pd.voti + lega_verde.voti + forza_it.voti); }
int main(){
votazioni _2017;
cout << setw(39) << "--elezioni--" << endl;
int s;
char n[30];
while(1){
cout << "1) per votare un partito" << endl;
cout << "2) per vedere voti di un partito" << endl;
cout << "3) per vedere il totale dei voti" << endl;
cout << "4) per resettare i voti" << endl;
cout << "5) per stampare i voti" << endl;
cin >> s;
switch(s) {
case 1:
cout << "inserisci nome partito";
cin >> n;
_2017.add((char*)n);
break;
case 2:
cout << "inserisci nome partito";
cin >> n;
_2017.get_voti((char*)n);
break;
case 3:
cout << "voti totali: " << _2017.total() << endl;
break;
case 4:
_2017.svuota();
cout << "resettato!" << endl;
break;
case 5:
_2017.stampa();
break;
default:
cout << "inserisci numeri da 1-5!!" << endl;
break; } }
}