Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    [C++] Programma che conta i numeri che inserisco

    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).

    codice:
    #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.

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,304
    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.
    Ultima modifica di LeleFT; 27-04-2018 a 16:54
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  3. #3
    Utente di HTML.it L'avatar di torn24
    Registrato dal
    Aug 2008
    Messaggi
    551

    Ciao

    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

    codice:
    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.
    Ultima modifica di torn24; 27-04-2018 a 17:10
    Tecnologia

  4. #4
    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...
    Amaro C++, il gusto pieno dell'undefined behavior.

  5. #5
    Utente di HTML.it L'avatar di torn24
    Registrato dal
    Aug 2008
    Messaggi
    551
    -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
    Tecnologia

  6. #6
    Aah vero, stupido io. (cioè, più stupida la consegna )
    Amaro C++, il gusto pieno dell'undefined behavior.

Tag per questa discussione

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.