Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it L'avatar di cles
    Registrato dal
    Mar 2010
    Messaggi
    25

    [C] calcolo cifre ripetute

    Ho difficoltà a capire come questo codice possa scrivere quante volte è ripetuta una cifra nel numero immesso:

    codice:
    int main()
    {
      int digit_count[10] = {0};
      int digit;
      long n;
    
      printf("Enter a number: ");
      scanf("%ld", &n);
    
      while (n > 0) {
        digit = n % 10;
    	n /= 10;
        digit_count[digit]++;    
      }
    
      printf ("Digit:      ");
      for (digit = 0; digit <= 9; digit++)
        printf("%3d", digit);
      printf("\nOccurrences:");
      for (digit = 0; digit <= 9; digit++)
        printf("%3d", digit_count[digit]);
      printf("\n");
    
      return 0;
    }
    la parte finale proprio non la capisco.se immetto 266,quando stampo il valore,digit[0] dovrebbe valere 6,digit[1] 6 e digit[2] 2.invece no.qualcuno sà spiegarmi esattamente il passaggio finale?grazie

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    No: se tu scrivi 266 allora l'array digit_count avrà, alla fine, i seguenti valori:
    codice:
    digit_count[0] = 0
    digit_count[1] = 0
    digit_count[2] = 1
    digit_count[3] = 0
    digit_count[4] = 0
    digit_count[5] = 0
    digit_count[6] = 2
    digit_count[7] = 0
    digit_count[8] = 0
    digit_count[9] = 0
    Questo perchè il programma, furbamente, crea un array di 10 elementi (tanti quante sono le cifre possibili!) e per effettuare il conteggio dei duplicati, semplicemente incrementa il valore nella posizione espressa dal valore della cifra. Quindi, ogni volta che incontra la cifra '6', incrementa la posizione 6 dell'array.


    Ciao.
    "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 cles
    Registrato dal
    Mar 2010
    Messaggi
    25
    ok,ma quando l'incrementa?nel ciclo while?e se si,non mi è proprio chiaro il meccanismo!nel ciclo while dovrebbe incrementare semplicemente da 0 a 9 o sbaglio?

  4. #4
    Utente di HTML.it L'avatar di cles
    Registrato dal
    Mar 2010
    Messaggi
    25
    forse ci sono,grazie alla tua spiegazione e a mezz'ora fissando il codice forse ci sono arrivato.correggimi cortesemente se sbaglio:

    se inserisco il numero 266 all'interno del while il primo digit prende valore 6 e quando incontra digit_count[digit]++ diventa digit_count[digit6]+1 e così via...

    ....complicato.....

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 © 2025 vBulletin Solutions, Inc. All rights reserved.