PDA

Visualizza la versione completa : [C++] Programma che conta i numeri che inserisco


AlexSimon
27-04-2018, 17:34
Salve a tutti, avrei bisogno di fare un programma con la seguente consegna:
-Inserisci un dato numero di cifre in un vettore; in seguito, il programma deve restituire quante volte ho inserito ogni cifra.
Per esempio:

Quanti numeri vuoi inserire? ​4
Inserisci il numero:​ 2
Inserisci il numero: 7
Inserisci il numero: 3
Inserisci il numero: 7

Numero 0: 0 volte
Numero 1: 0 volte
Numero 2: 1 volte
Numero 3: 1 volte
Numero 4: 0 volte
Numero 5: 0 volte
Numero 6: 0 volte
Numero 7: 2 volte
Numero 8: 0 volte
Numero 9: 0 volte

Io ho provato a farlo, ma i risultati non sono per niente quelli desiderati (anche a causa della mia difficoltà di svolgere questo programma).


#include<iostream>
#include<cmath>
using namespace std;


main(){
int a,b,c,d,e,f,g,h,l,m,i,n,j;
int A[n],B[10];

cout<<"Quante cifre vuoi inserire? ";
cin>>n;

for(i=0;i<n;i=i+1){
cout<<"Inserisci una cifra: ";
cin>>A[i];
}

for(a=0;a<n;a=a+1){
for(j=0;j<10;j=j+1){

B[j]=B[j]+A[a];

}

}


for(b=0;b<10;b=b+1){
cout<<"Numero "<<b<<" : "<<B[b]<<" volte"<<endl;
}


}


Vi ringrazio se riuscite a indicarmi come correggerlo e/o come farlo.

P.S. Posso usare al massimo i vettori, non stringhe, funzioni ecc.

LeleFT
27-04-2018, 17:44
Il primo evidente errore è alla seconda riga del main().
Lì stai dichiarando un array A composto di "n" elementi... ma "n" in quel punto non è ancora inizializzato: infatti, lo chiederai all'utente solo 2 righe più sotto... quindi non puoi inizializzare lì l'array.

E se ci pensi bene... nemmeno ti serve quell'array. :)


Ciao. :ciauz:

torn24
27-04-2018, 17:57
Io lo risolverei in questo modo,
1) creerei un array con dimensione sufficiente a contenere tutte le cifre inserite.
2) Creerei un secondo array di 10 elementi che contiene le occorrenze delle cifre
posizione zero cifra 0, posizione uno cifra 1 ecc.. fino alla cifra 9


3) inserisco le cifre nel primo array


4) scorro l'array e modifico l'occorrenze in questo modo




int Cifre[50]={0};
int Occorrenze[10]={0};
int i=0;
// Inserisco le cifre nell'array cifre

//Conto le occorrenze di ogni cifra

for(i=0;i<cifreInserite;i++){

Occorrenze[Cifre[i]] ++; // Array occorrenze in posizione di valore cifre,
// Esempio se cifre[i] è uguale a 5, mi incrementa la posizione 5 dell'array occorrenze
// se ci sono 4 cifre 5, Occorrenze[5] sarà uguale a 4.

}





5) Stampo i risultati di occorrenze


P.S. Visto che inserirai valori da 0 a 9, potresti usare array di char al posto di int, per risparmiare memoria.

MItaly
29-04-2018, 20:27
P.S. Visto che inserirai valori da 0 a 9, potresti usare array di char al posto di int, per risparmiare memoria.
... oppure può non usare nessun array per le cifre inserite, risparmiando ancora più memoria. ;) Il calcolo delle occorrenze si può fare online, senza bisogno di memorizzare i valori inseriti...

torn24
30-04-2018, 07:55
-Inserisci un dato numero di cifre in un vettore; in seguito, il programma deve restituire quante volte ho inserito ogni cifra.
Sarà inutile, ma mi sembra che la traccia lo richieda :)

MItaly
30-04-2018, 12:37
Aah vero, stupido io. (cioè, più stupida la consegna :D )

Loading