Vai al contenuto

problema c++


Messaggi raccomandati

Ragazzi salve, sono uno studente alle prime armi con il linguaggio c++, il mio problema è questo, ovvero la traccia mi dice di raccogliere un certo numero di  dati (che devono avere valore che va da 10 a 100, cioè non devono essere più piccoli di 10 e non devono essere più grandi di 100), ora io ho iniziato così:

#include <iostream>
#include <cstdlib>
#include <fstream>

using namespace std;

void riempimento (int campioni [100]);

int main(){
	int campioni [100];
	riempimento (campioni);
	
}

void riempimento (int campioni [100]){
	int cont=0;
	int val;
	cout<<"Inserisci il numero di dati raccolti ogg (MAX 100): "<<endl;
	cin>>val;
	if(val>100)
		cout<<"Troppi valori... RIPROVA"<<endl;
		else {
			for (int i=0;i<val;i++){
			cont++;
			cout<<"Inserisci il dato num: "<<cont<<"  ";
			cin>>i;
			}
		}
	
	
} 

ma il problema è che quando compila nè si ferma ai valori fissati e nè accetta i numeri a due cifre, ovvero appena digito un numero a due cifre, il programma si chiude.
Potreste aiutarmi a capire il perchè?

Grazie

Link al commento
Condividi su altri siti

Sbagli a fare, nella quartultima riga circa, cin>>i.

Hai fatto un po' di confusione mettendo sia un contatore, sia i (usato come contatore).

O fai: int i; for(cont=0;cont<val;cont++) {cout<<"inserisci..."; cin>>i;} oppure nella cout stampi i, cont non lo incrementi dentro al for e fai cin>>cont;

Forse mi sono spiegato un po' male... comunque se hai domande chiedi :)

iMac 27" ------ Macbook Air 13" ------ iPhone 3GS Black 16GB ------ iPhone 5 Black 32GB ------ 2 iPod Shuffle 1GB

Link al commento
Condividi su altri siti

In pratica l'errore che fai è in questa riga:

 

void riempimento (int campioni [100]){
	int cont=0;
	int val;
	cout<<"Inserisci il numero di dati raccolti ogg (MAX 100): "<<endl;
	cin>>val;
	if(val>100)
		cout<<"Troppi valori... RIPROVA"<<endl;
		else {
			for (int i=0;i<val;i++){
			cont++;
			cout<<"Inserisci il dato num: "<<cont<<"  ";
			----> cin>>i; <----
			}
		}
	
	
} 
Perché se guardi il ciclo for, la variabile i la usi come condizione per poter uscire dal ciclo.

Il problema nasce quando assegni ad i quello che scrivi da tastiera. I non incrementerà nel modo corretto, ma sarà sempre al valore che inserisci incrementato di 1, quindi non ha nessun senso il ciclo così.

 

Puoi risolvere in infiniti modi, una soluzione può essere:

#include <iostream>
#include <cstdlib>
#include <fstream>

using namespace std;

void riempimento (int campioni [100]);

int main(){
	int campioni [100];
	riempimento (campioni);
}

void riempimento (int campioni [100]){
    int val;
    cout << "Inserisci il numero di dati raccolti ogg (MAX 100): " << endl;
    cin >> val;
    if(val > 100)
	cout << "Troppi valori... RIPROVA" << endl;
    else {
        int num;
        for (int i=0; i<val; i++){
            cout << "Inserisci il dato num: " << i+1 << "  ";
            cin >> num;
            campioni[i] = num;
        }
    }
}

iMac 27" ------ Macbook Air 13" ------ iPhone 3GS Black 16GB ------ iPhone 5 Black 32GB ------ 2 iPod Shuffle 1GB

Link al commento
Condividi su altri siti

Archiviato

Questa discussione è archiviata e chiusa a future risposte.

×
×
  • Crea Nuovo...