Mattnet
Utente Attivo
- Messaggi
- 165
- Reazioni
- 1
- Punteggio
- 38
Ho un problema nell'input di una stringa. Nel case 1 ho scritto gli input di 2 strnghe usando gets(stringa), il problema è che quando provo il programma, mi salta il gets e io non posso mettere nessuna stringa in input. Ho provato ad usare getline ma non riesco a capire molto bene come funziona, qualcuno può aiutarmi? Qui sotto ho messo tutto il programma.
Codice:
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <string>
using namespace std;
void main()
{
int S,NP[40],NC[40],MAX,C,R,I,K,N;
char CO[40][20],NO[40][20],C2[20];
bool SW;
SW=true;
//ciclo ripetizione programma
do
{
//ciclo ripetizione menu
do
{
cout<<"Inserisci il num. associato all'operazione che si vuole effettuare."<<endl;
cout<<"1- Inserimento dati"<<endl;
cout<<"2- Vincitore"<<endl;
cout<<"3- Classifica"<<endl;
cout<<"4- Finalisti"<<endl;
cin>>S;
if (SW==true && S!=1)
cout<<"Non puoi scegliere altre funzioni oltre alla 1 se non hai ancora inserito alcun dato."<<endl;
}
while (SW==true && S!=1);
switch(S)
{
case 1:
SW=false;
do
{
cout<<"Inserisci il numero di concorrenti."<<endl;
cin>>N;
if (N<=1 || N>40)
cout<<"Hai inserito un numero di concorrenti non valido. Il numero deve essere compreso tra 2 e 40."<<endl;
}
while (N<=0 || N>40);
for (I=0;I<N;I++)
{
cout<<"Inserisci il numero di partecipazione del "<<I+1<<"^ concorrente."<<endl;
cin>>NP[I];
printf("Inserisci il cognome del concorrente.\n");
gets(CO[I]);
printf("Inserisci il nome del concorrente.\n");
gets(NO[I]);
cout<<"Inserisci il numero di centri effettuati."<<endl;
cin>>NC[I];
}
break;
case 2:
MAX=NC[0];
for (I=1;I<N;I++)
if(MAX<NC[I])
MAX=NC[I];
for(I=0;I<N;I++)
if (NC[I]==MAX)
{
cout<<"Num. di partecipazione: "<<NP[I]<<endl;
cout<<"Nome e Cognome del concorrente: "<<NO[I]<<" "<<CO[I]<<endl;
cout<<"Num. Centri effettuati: "<<NC[I]<<endl;
}
break;
case 3:
for (I=0;I<19;I++)
for (K=I+1;K<N;K++)
if (NC[I]<NC[K])
{
C=NC[I];
NC[I]=NC[K];
NC[K]=C;
C=NP[I];
NP[I]=NP[K];
NP[K]=C;
strcpy_s(C2,NO[I]);
strcpy_s(NO[I],NO[K]);
strcpy_s(NO[K],C2);
strcpy_s(C2,CO[I]);
strcpy_s(CO[I],CO[K]);
strcpy_s(CO[K],C2);
}
for (I=0;I<N;I++)
cout<<I+1<<"^ classificato: "<<NO[I]<<" "<<CO[I]<<" con "<<NC[I]<<" centri."<<endl;
break;
case 4:
MAX=NC[0];
for (I=1;I<N;I++)
if(MAX<NC[I])
MAX=NC[I];
for(I=0;I<N;I++)
if (NC[I]==MAX)
{
cout<<"Num. di partecipazione: "<<NP[I]<<endl;
cout<<"Nome e Cognome del concorrente: "<<NO[I]<<" "<<CO[I]<<endl;
cout<<"Num. Centri effettuati: "<<NC[I]<<endl;
}
break;
default:
cout<<"Hai selezionato un numero non valido. Scegliere una nuova operazione."<<endl;
}
cout<<"Vuoi fare altre operazioni con questo programma?"<<endl;
cout<<"1- Si"<<endl;
cout<<"2- No"<<endl;
cin>>R;
}
while (R==1 || SW==true);
cout<<"Arrivederci."<<endl;
}