|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Bannato
Iscritto dal: Oct 2006
Messaggi: 170
|
Help con C
Gli esercizi da fare erano questi:
Somma delle cifre di un numero Scrivere un programma C che dato in input un intero restituisca la somma delle sue cifre Esempio Input: 3276523176523 Output: 52 Radice Digitale Scrivere un programma iterativo che dato in input un naturale calcoli la sua radice digitale. La radice eigitale di un numero si ottiene sommando le sue cifre fino a che non si riducono ad un numero di una sola cifra. Esempio. La radice digitale di 4366554 è 6. Divisibilità per 3 e per 11 Un numero naturale è divisibile per 3 se la somma delle sue cifre è divisibile per 3. Scrivere un programma iterativo per decidere se un naturlae dato è divisibile per 3. Dato un naturale n, siano si(n) e sp(n) rispettivamente la somma delle cifre di ordine pari e dispari in n. (dove la 0-esima cifra è quella di minor peso). n è divisibile per 11 se il valore assoluto della differenza tra sp(n) e si(n ) (cioè abs(sp(n)-si(n)) ) è divisibile per 3. Scriver un programma iterativo per decidere se un numero naturale dato è divisibile per 11. Cambio di Base Scrivere un programma iterativo che dato in input un numero nturale n in base 10 e una base b maggiore o uguale di 2, converte n in base b. Invertire un numero Dato un naturale n, scrivere un programma iterativo che restituisca il naturale m ottenuto invertendo l'ordine delle cifre di n. Massimo comun divisore Scrivere un programma che dati due naturali m ed n, differenti da 0, restituisca il loro massimo comun divisore. Sono riuscito a fare il primo, il secondo, il terzo e l'ultimo, ma l'invertire un numero e il cambio di base non ci riesco. le istruzioni e cotrutti da poter utilizzare sono ciclo while(se possibile), altrimenti ciclo for. IF-then-else. ps:no vettori qualcuno saprebbe darmi una mano. grazie in anticipo. |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
In teoria per invertire il numero basterebbe convertirlo in stringa, poi invertire la stringa e trasformarla in intero... Ti va bene così ?
Altrimenti devi cominciare a lavorare con le divisioni e le moltiplicazioni...ti scrivo un po' questa che mi sembra più "educativa"... Codice:
int n = numero;
int risultato = 0;
int divisore = 1, moltiplicatore = 1;
//cerco il massimo divisore multiplo di 10 del numero
while(n / divisore > 9)
divisore *= 10;
do
{
//calcolo la cifra del risultato
risultato = (n / divisore) * moltiplicatore;
//tolgo la cifra più significativa dal numero iniziale
n -= divisore * (n / divisore);
//ho tolto una cifra quindi posso diminuire il divisore
divisore /= 10;
//e posso far avanzare il moltiplicatore
moltiplicatore *= 10;
}
while(n > 0);
Per poter fare una cmbio generico di base ti consiglio di usare un alfabeto: char alfabeto[] = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"; In questo nodo puoi cambiare da base 10 in qualsiasi base (oviamente <= a 36)... Basta andare a prendere con risultato della divisione il rispettivo carattere dell'alfabeto... |
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Jun 2002
Città:
Provincia De VaRéSe ~ § ~ Lat.: 45° 51' 7" N Long.: 8° 50' 21" E ~§~ Magica Inter ~ § ~ Detto: A Chi Più Amiamo Meno Dire Sappiamo ~ § ~ ~ § ~ Hobby: Divertimento allo Stato Puro ~ § ~ ~ § ~ You Must Go Out ~ § ~
Messaggi: 8896
|
Codice:
int _tmain(int argc, _TCHAR* argv[])
{
int num = 1223744; //numero da invertire
int num_inv = 0; //numero inverito
int app = num;
for (int app=num;app!=0;num_inv=num_inv*10+app%10,app/=10);
return 0;
}
__________________
Meglio essere protagonisti della propria tragedia che spettatori della propria vita
Si dovrebbe pensare più a far bene che a stare bene: e così si finirebbe anche a star meglio. Non preoccuparti solo di essere migliore dei tuoi contemporanei o dei tuoi predecessori.Cerca solo di essere migliore di te stesso |
|
|
|
|
|
#4 |
|
Bannato
Iscritto dal: Feb 2003
Messaggi: 947
|
|
|
|
|
|
|
#5 | |
|
Senior Member
Iscritto dal: Jun 2002
Città:
Provincia De VaRéSe ~ § ~ Lat.: 45° 51' 7" N Long.: 8° 50' 21" E ~§~ Magica Inter ~ § ~ Detto: A Chi Più Amiamo Meno Dire Sappiamo ~ § ~ ~ § ~ Hobby: Divertimento allo Stato Puro ~ § ~ ~ § ~ You Must Go Out ~ § ~
Messaggi: 8896
|
Quote:
![]() ~§~ Sempre E Solo Lei ~§~
__________________
Meglio essere protagonisti della propria tragedia che spettatori della propria vita
Si dovrebbe pensare più a far bene che a stare bene: e così si finirebbe anche a star meglio. Non preoccuparti solo di essere migliore dei tuoi contemporanei o dei tuoi predecessori.Cerca solo di essere migliore di te stesso |
|
|
|
|
|
|
#6 |
|
Member
Iscritto dal: Oct 2006
Messaggi: 56
|
potete anche a me ed aiutarmi nel fare la divisione di due numeri?nel senso che devo creare con2 variabili un istruzione che mi faccia la divisione?grazie
|
|
|
|
|
|
#7 | |
|
Senior Member
Iscritto dal: Jun 2002
Città:
Provincia De VaRéSe ~ § ~ Lat.: 45° 51' 7" N Long.: 8° 50' 21" E ~§~ Magica Inter ~ § ~ Detto: A Chi Più Amiamo Meno Dire Sappiamo ~ § ~ ~ § ~ Hobby: Divertimento allo Stato Puro ~ § ~ ~ § ~ You Must Go Out ~ § ~
Messaggi: 8896
|
Quote:
senza usare nessun operatore non puoi fare nulla. ~§~ Sempre E Solo Lei ~§~
__________________
Meglio essere protagonisti della propria tragedia che spettatori della propria vita
Si dovrebbe pensare più a far bene che a stare bene: e così si finirebbe anche a star meglio. Non preoccuparti solo di essere migliore dei tuoi contemporanei o dei tuoi predecessori.Cerca solo di essere migliore di te stesso |
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 07:13.




















