Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa
Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa
Marvel's Wolverine porta Logan in un'avventura inedita, violenta e fortemente narrativa, costruita attorno alla sua natura di combattente e al difficile rapporto con il proprio passato. Insomniac Games punta su combattimenti spettacolari, progressione e personalizzazione, inserendo l'azione in un mondo segnato dalla persecuzione dei mutanti. Un viaggio intenso, che alterna mattanza, esplorazione e momenti sorprendentemente emotivi.
DJI Romo 2: tante novità lo rendono un robot completo
DJI Romo 2: tante novità lo rendono un robot completo
Romo 2 è la seconda generazione di robot lavapavimenti di DJI, un modello che si caratterizza per la precisione nel sistema di navigazione e per il funzionamento particolarmente silenzioso. Con le modifiche introdotte in questa seconda versione, e un posizionamento di prezzo più allineato alla concorrenza, rappresenta una valida alternativa sul mercato delle soluzioni di pulizia domestica
Sony Bravia 9 II: il True RGB alla prova, dove l'LCD sfida l'OLED
Sony Bravia 9 II: il True RGB alla prova, dove l'LCD sfida l'OLED
Il primo Sony con retroilluminazione True RGB alla prova del banco di misura e dei contenuti: luminanza enorme, colori accurati in HDR e un antiriflesso molto efficace. I limiti sono due sole HDMI 2.1 e il blooming fuori asse
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 19-10-2005, 20:51   #1
Manugal
Senior Member
 
L'Avatar di Manugal
 
Iscritto dal: Jan 2001
Città: Villanova di Guidonia (RM)
Messaggi: 1079
[C] Sommare numero delle cifre

Ciao a tutti!

Sono qui con un nuovo problema

Devo scrivere un programma che sommi le cifre di un numero. Ad esempio se come numero ho 37415 il risultato deve essere 20. Non ho la più pallida idea di come scomporre il numero in singole cifre, o meglio non so come fare questa scomposizione per un numero di n cifre. Perché ad esempio in un esercizio precedente che avevo mi si chiedeva di verificare se un numero di al più 4 cifre era palindromo e io giocando sulle divisioni per 10 e sui moduli del numero sempre per 10, ci riuscivo a scomporlo.

P.S. : Non devo usare né vettori, né puntatori, né liste.

Grazie
Manugal è offline   Rispondi citando il messaggio o parte di esso
Old 19-10-2005, 20:53   #2
redcloud
Bannato
 
L'Avatar di redcloud
 
Iscritto dal: Feb 2003
Città: Anche Chuck Norris usa Debian e Gnome
Messaggi: 1270
Mi sa che devi usare gli operatori sui bit e le maschere...
redcloud è offline   Rispondi citando il messaggio o parte di esso
Old 19-10-2005, 20:59   #3
Joker84
Senior Member
 
L'Avatar di Joker84
 
Iscritto dal: Oct 2005
Città: Pompei(NA)
Messaggi: 3087
io ti consiglierei di fare un mod(%) e prendere la cifra ke ti interessa.....

es:

123=6 giusto?!?

quindi: 123 %10=3+ 12%10=2+ 1%10= 1 ....=6 prova......
__________________
My Deviant-Gallery

 MacBook Pro 13'' Retina i5 dual-core a 2,6GHz - 8GB Ram - 256GB SSD :: iPhone 12 128GB :: iPad 7 128GB WiFi :: Apple Watch 4 (40mm) 
Joker84 è offline   Rispondi citando il messaggio o parte di esso
Old 19-10-2005, 21:40   #4
NA01
Senior Member
 
L'Avatar di NA01
 
Iscritto dal: Jun 2003
Città: Genova
Messaggi: 5676
Quote:
Originariamente inviato da Joker84
io ti consiglierei di fare un mod(%) e prendere la cifra ke ti interessa.....

es:

123=6 giusto?!?

quindi: 123 %10=3+ 12%10=2+ 1%10= 1 ....=6 prova......
quoto.
nel caso ti servisse ti ricordo che il numero delle cifre è dato dal log in base 10

ciao
NA01 è offline   Rispondi citando il messaggio o parte di esso
Old 19-10-2005, 22:06   #5
Joker84
Senior Member
 
L'Avatar di Joker84
 
Iscritto dal: Oct 2005
Città: Pompei(NA)
Messaggi: 3087
nn penso che possa servire....cmq...

basta che fai un ciclo e quando il resto della divisione è <=0 esci....

Prova!
__________________
My Deviant-Gallery

 MacBook Pro 13'' Retina i5 dual-core a 2,6GHz - 8GB Ram - 256GB SSD :: iPhone 12 128GB :: iPad 7 128GB WiFi :: Apple Watch 4 (40mm) 
Joker84 è offline   Rispondi citando il messaggio o parte di esso
Old 20-10-2005, 06:24   #6
Manugal
Senior Member
 
L'Avatar di Manugal
 
Iscritto dal: Jan 2001
Città: Villanova di Guidonia (RM)
Messaggi: 1079
Grazie, attraverso i moduli so che si può fare, ma è fattibile con poche cifre. Se ho ad esempio un numero con 10 cifre come faccio a farlo attraverso i moduli?
Manugal è offline   Rispondi citando il messaggio o parte di esso
Old 20-10-2005, 10:23   #7
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Manugal: se non vuoi usare il logaritmo per trovarti il numero delle cifre, ti trovi il massimo multiplo di 10 minore di x (il numero da cercare)...

for(int m = 1; x / m >= 10; m *= 10);

In questo momento in x hai il massimo multiplo di 10 minore di x...

Dopo è banale (se vuoi continuare da solo non visualizzare lo spoiler):
Spoiler:

while(m > 0)
{
printf("%d", x / m);
x %= m;
m /= 10;
}

Ultima modifica di cionci : 20-10-2005 alle 11:14.
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 20-10-2005, 11:11   #8
Manugal
Senior Member
 
L'Avatar di Manugal
 
Iscritto dal: Jan 2001
Città: Villanova di Guidonia (RM)
Messaggi: 1079
Ok ma trovare il numero delle cifre non mi serve a un granché perché dopo che ho trovato che un numero ha x cifre poi che ci faccio? A me servono proprio le cifre che compongono il numero è quello che non riesco a fare.
Manugal è offline   Rispondi citando il messaggio o parte di esso
Old 20-10-2005, 11:12   #9
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Te l'ho scritto nel tag spoiler come si fa...ma una volta trovato il numero delle cifre è banale...dovresti arrivarci da solo senza guardare il mio codice...

Edit: avevo sbagliato la condizione di terminazione nel for

PS: io non ho trovato le cifre, ma il massimo multiplo di 10 minore di x...di conseguenza se dividi x per m ottieni la prima cifra...

Ultima modifica di cionci : 20-10-2005 alle 11:19.
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 20-10-2005, 11:25   #10
Manugal
Senior Member
 
L'Avatar di Manugal
 
Iscritto dal: Jan 2001
Città: Villanova di Guidonia (RM)
Messaggi: 1079
Lo spoiler ancora non lo vedo perché vorrei farlo da solo

Mettiamo il caso che io abbia come numero n=38176, questo significa che il maggior multiplo di 10 minore di n è 10000. Io pensavo di fare una cosa del genere. Di fare un ciclo dove inizialmente dividevo il numero per 10000 così viene fuori 3,8176 e quindi aumento la somma con 3. Poi divido per 1000 e viene 38,176 a questo punto per prendere l'8 dopo il 3 facevo 38%10 e quindi mi viene fuori 8 e lo sommo al 3 di prima. All'iterazione successiva ho 38176/100 e viene 381,76, prendo 381%10 e viene fuori 1 e lo sommo e così via. Potrebbe andare così?
Manugal è offline   Rispondi citando il messaggio o parte di esso
Old 20-10-2005, 11:32   #11
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
38176 / 10000 = 3 (è una divisione intera)
38176 % 10000 = 8176
10000 / 10 = 1000

8176 / 1000 = 8
8176 % 1000 = 176
1000 / 10 = 100

176 / 100 = 1
176 % 100 = 76
100 / 10 = 10

76 / 10 = 7
76 % 10 = 6
10 / 10 = 1

6 / 1 = 6
6 % 1 = 0
1 / 10 = 0
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 20-10-2005, 11:43   #12
Manugal
Senior Member
 
L'Avatar di Manugal
 
Iscritto dal: Jan 2001
Città: Villanova di Guidonia (RM)
Messaggi: 1079
Eh beh in effetti è più semplice come hai fatto tu Però l'idea insomma era quella..... Grazie proverò a tirare giù sto benedetto programma. Ciao
Manugal è offline   Rispondi citando il messaggio o parte di esso
Old 20-10-2005, 17:06   #13
VegetaSSJ5
Senior Member
 
L'Avatar di VegetaSSJ5
 
Iscritto dal: Sep 2002
Città: Celano (AQ) Segno_Zodiacale: Leone Ascendente: Cammello Segni_Particolari: Quello
Messaggi: 9571
ragazzi come si chiama quella funzione che converte un numero in stringa?

EDIT:
trovata è la itoa.

P.S.
perhcè facendo man itoa mi dice che non c'è niente? invece facendo man atoi mi appare il manuale di quella funzione?

Ultima modifica di VegetaSSJ5 : 20-10-2005 alle 17:09.
VegetaSSJ5 è offline   Rispondi citando il messaggio o parte di esso
Old 20-10-2005, 17:15   #14
Manugal
Senior Member
 
L'Avatar di Manugal
 
Iscritto dal: Jan 2001
Città: Villanova di Guidonia (RM)
Messaggi: 1079
Un'ultima cosa...... siccome devo fare la somma delle cifre quando la vado a fare mi ritira fuori il numero paro paro che gli ho dato in input. Io ho scritto questo codice:

Codice:
 while(m>0){
       sum_cifre+=(num/m);
       num%=m;
       m/=10;
 }
Non riesco a capire perché se gli passo ad esempio 234 mi restituisce 234 e non 9 (cioè la sua somma).
Manugal è offline   Rispondi citando il messaggio o parte di esso
Old 20-10-2005, 17:23   #15
Manugal
Senior Member
 
L'Avatar di Manugal
 
Iscritto dal: Jan 2001
Città: Villanova di Guidonia (RM)
Messaggi: 1079
Niente niente tutto a posto avevo sbagliato la condizione del for Grazie ancora
Manugal è offline   Rispondi citando il messaggio o parte di esso
Old 20-10-2005, 17:26   #16
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Quote:
Originariamente inviato da VegetaSSJ5
perhcè facendo man itoa mi dice che non c'è niente? invece facendo man atoi mi appare il manuale di quella funzione?
itoa non è una funzione standard... Puoi utilizzare sprintf per fare la stessa cosa...
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 20-10-2005, 17:56   #17
VegetaSSJ5
Senior Member
 
L'Avatar di VegetaSSJ5
 
Iscritto dal: Sep 2002
Città: Celano (AQ) Segno_Zodiacale: Leone Ascendente: Cammello Segni_Particolari: Quello
Messaggi: 9571
soluzione del problema usando la sprintf
Spoiler:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main () {
int num, sum=0, i;
char *buf;
buf= (char *) malloc (16*sizeof(char));
printf("Inserisci un numero: ");
scanf("%d", &num);
sprintf(buf, "%d", num);
for (i=0; i< strlen(buf); i++) sum+= buf[i]-48;
printf("\nLa somma delle cifre del numero e' %d\n", sum);
return 0;
}

P.S.
se uso il tag code dentro lo spoiler è come se lo spoiler non ci fosse, si vede tutto! per cui ho tolto il tag code, ma in questo modo si è persa l'indentazione... è un bug del vbulletin?

Ultima modifica di VegetaSSJ5 : 20-10-2005 alle 18:01.
VegetaSSJ5 è offline   Rispondi citando il messaggio o parte di esso
Old 20-10-2005, 20:18   #18
AnonimoVeneziano
Senior Member
 
L'Avatar di AnonimoVeneziano
 
Iscritto dal: Aug 2001
Città: San Francisco, CA, USA
Messaggi: 13827
La mia versione col for :

Codice:
int main(void){
    
  int numero, risul = 0, count=1;

  scanf("%d", &numero);

  while ( (numero / (10*(count))) != 0 )
    count*=10;

  for ( ; count != 0; count/=10 )
    {
      risul+=numero/count;
      numero -= (numero/count)*count;
    }
  printf("%d\n", risul);

  return 0;

}
Fa forse però un po' + schifo di quella col while()

Ciao
__________________
GPU Compiler Engineer
AnonimoVeneziano è offline   Rispondi citando il messaggio o parte di esso
Old 21-10-2005, 15:22   #19
repne scasb
Bannato
 
Iscritto dal: Feb 2003
Messaggi: 947
Ma a cosa ti serve sapere di quante cifre e' composto il numero?

Codice:

#include <stdio.h>

void main(void)

{
    int numero,risul;

    printf("Inserire numero: ");
    scanf("%d", &numero);

    for (risul=0;numero;numero/=10)
	risul+=numero%10;

    printf("Somma: %d\n", risul);
}
repne scasb è offline   Rispondi citando il messaggio o parte di esso
Old 21-10-2005, 15:58   #20
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Quote:
Originariamente inviato da repne scasb
Ma a cosa ti serve sapere di quante cifre e' composto il numero?
A niente...figurati che io credevo che volesse stampare le cifre...
Edit: sto facendo confusione fra i vari thread

Ultima modifica di cionci : 21-10-2005 alle 16:31.
cionci è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa Marvel's Wolverine, la recensione: Logan torna p...
DJI Romo 2: tante novità lo rendono un robot completo DJI Romo 2: tante novità lo rendono un ro...
Sony Bravia 9 II: il True RGB alla prova, dove l'LCD sfida l'OLED Sony Bravia 9 II: il True RGB alla prova, dove l...
Geely EX5, un mese al volante: il SUV elettrico cinese che ci ha sorpreso (quasi) senza riserve Geely EX5, un mese al volante: il SUV elettrico ...
Mova Z70 Ultra Roller Complete: motore potente, rullo di lavaggio e l'IA a guidare Mova Z70 Ultra Roller Complete: motore potente, ...
Anthropic accusa la Cina: Claude utilizz...
I satelliti Rassvet (Starlink russo) di ...
Un agente IA ha risolto un problema su W...
Cina: la CMSA potrebbe cambiare parte de...
68 mensilità di bonus per i dipen...
Rocket Lab ha fatto ricorso contro la de...
Nutanix rende disponibile Azure Virtual ...
Il padrino del deep learning avverte: gl...
Il finto avviso "iPhone Storage is Full"...
Dietrofront in Cina, addio touchscreen p...
Un piccolo accessorio trasforma lo smart...
Dopo 370 anni il Cyphral Distich non è p...
Oppo Find X10, X10 Pro Max e X10 E: conf...
Dal microscopio all'IA: un cervello di i...
Cyberpunk 2077 arriverà su Battle...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 16:54.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v