Indice del forum
 FAQ   Cerca   Lista utenti   Gruppi   Registrati   Profilo   Messaggi privati   Log in 
problema somma delle cifre di un intero

 
Nuovo argomento   Rispondi    Indice del forum -> Programmazione: c#, c++, Java, HTML, PHP, Javascript...
Precedente :: Successivo  

Autore

Messaggio

feys88
Novizio


Registrato: 30/07/09 09:59
Messaggi: 1

MessaggioInviato: Dom Ott 11, 2009 5:43 pm    Oggetto: problema somma delle cifre di un intero

Rispondi citando


premesso che ho iniziato da poco a programmare questo è il testo del problema
/*scrivere un programma in C che inserito in input un intero sommare tutte le cifre del numero inserito da tastiera.
esempio:
n=1034 ouput=8
n=56 output=11
n=123 output=6 */

questo è il codice che ho scitto io ma mi funziona solo su alcuni input, comunque non mi convince sull'algoritmo che ho adoperato questo è il codice:

#include<stdio.h>
int main(){
int n,p,i,mem,cont_uno,cont_due,cont_tre,z;
int somma=0;
scanf("%d",&n); // 1034
z=n; //1034
p=n/10; // 103
mem=p*10; // 103*10=1030
cont_uno=0;
for (i=mem;i<n;i++){ // 1030<1034
cont_uno++;}

z=z/10; // 1034/10=103
p=z/10; // 103/10=10
mem=p*10; //100

cont_due=0;
for (i=mem;i<z;i++){ //100<103
cont_uno++;}

somma=cont_uno+cont_due;
//printf("%d",somma);

z=n;
z=z/10; //1100/10=110
p=z/10; //110/10=11
mem=p*1; //11*1=11
mem=z/mem;
cont_tre=0;
for (i=mem;i<=z/10;i++){ //0<1
cont_tre++;}

somma=somma+cont_tre;
printf("%d",somma);



return 0;}

Top

Profilo Invia messaggio privato

cali1981
Site Admin


Registrato: 16/01/06 22:01
Messaggi: 836

MessaggioInviato: Lun Ott 12, 2009 10:51 am    Oggetto:

Rispondi citando


Ciao, non capisco bene il tuo algoritmo (ad essere sincero non me lo sono guardato tutti, mi sembra abbastanza contorto), comunque per fare quello che devi fare tu basta che dopo lo scanf converti l'intero in stringa con itoa, poi della stringa risultante prendi una lettera alla volta, la riconverti in intero con atoi e fai la somma di tutti questi interi. Ti poso un codice di esempio che però non ho testa, di sicuro mancano molte cose:

Codice:


#include<stdio.h>
int main(){
int n,p,i,mem,cont_uno,cont_due,cont_tre,z;
int somma=0;
char buffer [33], buffer2[2];
char *charPtr;
int somma = 0;
scanf("%d",&n); // 1034
itoa (n,buffer,10);
charPtr = buffer;
while(charPtr)
{
  somma  += atoi(*charPtr);
}
printf("La somma è %d",somma);
}


ho detto che potrebbe non funzionare, ma scrivendolo mi piace proprio sto codice, forse funziona anche!
Very Happy
_________________
Visita anche il sito Agriturismo Umbria per maggiori informazioni sull'Umbria!

Realizzazione siti web e applicazioni ASp.NEt, C/C++, C#

Top

Profilo Invia messaggio privato Invia e-mail

ixamit
Novizio


Registrato: 27/09/09 11:23
Messaggi: 4

MessaggioInviato: Mar Ott 13, 2009 8:58 am    Oggetto:

Rispondi citando


Io lo avrei scritto così:

Codice:

#include <stdio.h>

#define MAXBUF 16

int main ()
{
        char buf[MAXBUF],*pbuf;
        int intero,somma;


        printf ("Input number: ");
        scanf ("%d",&intero);

        snprintf (buf, MAXBUF-1,"%d",intero);

        for (somma=0,pbuf=buf;*pbuf;pbuf++)
                somma+=*pbuf-48;

        printf ("intero is %d \nsomma is %d\n",intero,somma);

        return 0;
}


Saluti,
Max

Top

Profilo Invia messaggio privato HomePage

cali1981
Site Admin


Registrato: 16/01/06 22:01
Messaggi: 836

MessaggioInviato: Mar Ott 13, 2009 10:28 am    Oggetto:

Rispondi citando


Forte anche questa soluzione! Grazie!

ixamit ha scritto:
Io lo avrei scritto così:

Codice:

#include <stdio.h>

#define MAXBUF 16

int main ()
{
        char buf[MAXBUF],*pbuf;
        int intero,somma;


        printf ("Input number: ");
        scanf ("%d",&intero);

        snprintf (buf, MAXBUF-1,"%d",intero);

        for (somma=0,pbuf=buf;*pbuf;pbuf++)
                somma+=*pbuf-48;

        printf ("intero is %d \nsomma is %d\n",intero,somma);

        return 0;
}


Saluti,
Max

_________________
Visita anche il sito Agriturismo Umbria per maggiori informazioni sull'Umbria!

Realizzazione siti web e applicazioni ASp.NEt, C/C++, C#

Top

Profilo Invia messaggio privato Invia e-mail

ixamit
Novizio


Registrato: 27/09/09 11:23
Messaggi: 4

MessaggioInviato: Mar Ott 13, 2009 10:14 pm    Oggetto:

Rispondi citando


Questo giro di MOD e DIV è eccezionale! (non è farina del mio sacco)

Codice:

#include <stdio.h>

int main ()
{
        int intero,somma=0;
        int x;

        printf ("Input number: ");
        scanf ("%d",&intero);

        x=intero;
        while (x)
        {
                somma+=x%10;
                x/=10;
        }
        printf ("intero is %d \nsomma is %d\n",intero,somma);
}

Saluti,
Max

Top

Profilo Invia messaggio privato HomePage

otacon
Novizio


Registrato: 02/09/10 02:03
Messaggi: 3

MessaggioInviato: Gio Set 02, 2010 2:17 am    Oggetto:

Rispondi citando


un altra implementazione

Codice:
#include <stdio.h>

int main(){
   
   char c;
   int number[10], somma = 0;
   int i = 0, j;
   
   printf("inserire un numero: ");
   while((c = getchar()) != EOF && c != '\n' && i < 10){
      number[i++] = c - '0';
   }
   
   for(j = 0; j < i; j++){
      somma += number[j];
   }
   
   printf("la somma delle cifre è : %d\n", somma);
   
   return 0;
}

Top

Profilo Invia messaggio privato

louispicc
Novizio


Registrato: 26/07/10 13:37
Messaggi: 5

MessaggioInviato: Gio Set 02, 2010 7:58 am    Oggetto:

Rispondi citando


otacon ha scritto:
un altra implementazione

Codice:
#include <stdio.h>

int main(){
   
   char c;
   int number[10], somma = 0;
   int i = 0, j;
   
   printf("inserire un numero: ");
   while((c = getchar()) != EOF && c != '\n' && i < 10){
      number[i++] = c - '0';
   }
   
   for(j = 0; j < i; j++){
      somma += number[j];
   }
   
   printf("la somma delle cifre è : %d\n", somma);
   
   return 0;
}


Carino, ma a questo punto perche' usare l'array e poi sommare i valori nell'array? Meglio sommare direttamente mentre inserisce senza usare le variabili number, i e j Wink

Qualcosa del tipo (riutilizzo il tuo codice modificandolo qui e la)
Codice:
#include <stdio.h>

int main(){
   
   char c;
   int somma = 0;
   
   printf("inserire un numero: ");
   while((c = getchar()) != EOF && c != '\n'){
      somma += c - '0';
   }
   
   printf("la somma delle cifre è : %d\n", somma);
   
   return 0;
}

Top

Profilo Invia messaggio privato

otacon
Novizio


Registrato: 02/09/10 02:03
Messaggi: 3

MessaggioInviato: Gio Set 02, 2010 9:18 am    Oggetto:

Rispondi citando


eh si ancora meglio Laughing
l' avevo fatto solo nel caso in cui si volesse ristampare il num originale

Top

Profilo Invia messaggio privato

Mostra prima i messaggi di:   
Nuovo argomento   Rispondi    Indice del forum -> Programmazione: c#, c++, Java, HTML, PHP, Javascript... Tutti i fusi orari sono GMT
Pagina 1 di 1

 
Vai a:  
Non puoi inserire nuovi argomenti
Non puoi rispondere a nessun argomento
Non puoi modificare i tuoi messaggi
Non puoi cancellare i tuoi messaggi
Non puoi votare nei sondaggi
Forum del sito TuttoMontefalco.it - Umbria - Italy topic RSS feed 


Torna al sito TuttoMontefalco.it


Powered by phpBB © 2001, 2005 phpBB Group
phpbb.it

SoftGreen 1.1 phpBB theme by DaTutorials.com
Copyright © DaTutorials 2005