Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2007
    Messaggi
    77

    [C++] Array delle cifre

    Allora, ragassuoli.

    Ho bisogno di creare un array che metta in ciascun posto una cifra del numero intero, in ordine.

    Per esempio, l'array cifra[3], deve contenere, dato il numero 134 :

    cifra[0] = 1;
    cifra[1] = 3;
    cifra[2] = 4;

    E' possibile in qualche modo?

  2. #2
    Ci son diversi modi per farlo, eccotene uno in C:
    codice:
    /*
    * Compiled and tested with:
    * i686-apple-darwin8-gcc-4.0.1 (GCC) 4.0.1 (Apple Computer, Inc. build 5367)
    */
    
    #include <stdio.h>
    int main (int argc, const char * argv[]){
    	const int aNum = 134;
    	char aCifraArray [4]; /* dimensione 3 + 1, perché so che aNum è a 3 cifre */
    	sprintf (aCifraArray, "%d", aNum);
    	printf (aCifraArray);
    	return 0;
    }

  3. #3
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Usa un ciclo per determinare tutte le cifre e con varie divisioni per potenze di 10 ottieni le varie cifre ... o con la sprintf ... o in tanti altri modi ...

  4. #4
    Utente di HTML.it
    Registrato dal
    Apr 2007
    Messaggi
    77
    Ora provo e vi faccio sapere con un edit (Y)

  5. #5
    Utente di HTML.it
    Registrato dal
    Apr 2007
    Messaggi
    77
    Non ho editato perchè è importante che più gente possibile legga.

    Ho un problema, perchè ho bisogno che quell'array sia un int, non un char, ma mettendo int mi da errore. Vi scrivo qui il codice sorgente.

    codice:
    #include <stdio.h>
    
    main()
    {
          int numero_min = 0;
          int numero_max = 0;
          int array_celle = 0;
          int controllo = 2;
          while (controllo == 2)
          {
                printf("Vuoi i numeri da 100 o da 1000?");
                scanf("%d",& numero_min);
                if (numero_min == 100)
                {
                               numero_max = 999;
                               array_celle = 4; 
                               controllo = 1;
                }
                else if (numero_min == 1000)
                {
                     numero_max = 9999;
                     array_celle = 5;
                     controllo = 1;
                }
                else
                {
                    printf("Inserisci 100 o 1000");
                    controllo = 2;
                }
          }
          char cifre[array_celle];
          int somma;
          bool risultato;
          for (int i = numero_min; i < numero_max; i++)
          {
              sprintf (cifre, "%d", i);
              if (array_celle == 4)
              {
                              somma = cifre[0] + cifre[1] + cifre[2];
                              if (somma == i)
                              {
                                        risultato = true;
                              }
                              else
                              {
                                  risultato = false;
                              }
              }
              else
              {
                  somma = cifre[0] + cifre[1] + cifre[2] + cifre[3];
                  if (somma == i)
                  {
                            risultato = true;
                  }
                  else
                  {
                      risultato = false;
                  }
              }
              if (risultato = true)
              {
                            printf("%d",i);
              }
          }
          printf("The End");
          int a;
          scanf("%d",& a);
          return (0);
    }
    Praticamente, ho bisogno che mi vengano scritti tutti i numeri che sono uguali alla somma delle loro cifre, come faccio?

    Grazie ^^

  6. #6
    La somma che effettui (ad esempio per l'intero 134):
    codice:
    somma = cifre[0] + cifre[1] + cifre[2];
    somma il codice asci dei rispettivi caratteri '1', '3' e '4' => 49 + 51 + 52 = 152;

    Per ottenere il risultato, immagino da te atteso, devi convertire il codice asci di tali caratteri in intero, ad esempio, in modo un po' spartano:

    codice:
    int SpartanCharToInt (const char theChar){
    // this code is only a test code. 
    	return theChar - (int)'0';
    }
    e modificando quindi il tuo codice in:
    codice:
    somma = SpartanCharToInt  (cifre[0]) + SpartanCharToInt (cifre[1]) + SpartanCharToInt (cifre[2]);
    otteniamo come risultato la somma 1+3+4=8.

  7. #7
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Oppure scrivi

    somma = (cifre[0] & 0x0F) + (cifre[1] & 0x0F) + (cifre[2] & 0x0F) ;

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.