Vai al contenuto

Benvenuto nella community di Italiamac Forum

Guest Image

Benvenuto su Italiamac, la più grande comunità AMUG italiana riconosciuta da Apple. La consultazione è libera. Se vuoi anche partecipare attivamente alle discussioni pubblicando post e messaggi puoi iscriverti gratuitamente, avrai molti vantaggi:

  • Pubblicare post, messaggi e richieste di aiuto
  • Fare amicizia e usare i messaggi privati fra utenti
  • Pubblicare annunci di vendita di usato
  • Usare tutte le funzioni della community

ISCRIVITI GRATIS


Change Mode






problema c++


ugorix

Recommended Posts

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 di questo messaggio
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 di questo messaggio
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 di questo messaggio
Condividi su altri siti

Archived

Questa discussione è archiviata e chiusa a future risposte.

×
×
  • Crea Nuovo...

Info

Questo sito utilizza cookies, anche di terze parti e profilazione. Utilizzando il sito acconsenti al loro impiego e dichiari di aver letto e di accettare: Privacy Policy Termini di utilizzo