[C] Scindere il numero nelle sue singole cifre

Pubblicità
Stato
Discussione chiusa ad ulteriori risposte.
Mi sembra logico che devi adattarlo al tuo codice con delle opportune modifiche.. E' ovvio che non puoi usare il mio codice per risolvere il tuo problema quindi devi un pò modificarlo.. Invece di usare la variabile cifra magari ti conviene usare un array che contiene tutte le cifre della parola!

Ps. Essendo un nuovo problema ti consiglio di inserirlo in una nuova discussione!
 
Mi sembra logico che devi adattarlo al tuo codice con delle opportune modifiche.. E' ovvio che non puoi usare il mio codice per risolvere il tuo problema quindi devi un pò modificarlo.. Invece di usare la variabile cifra magari ti conviene usare un array che contiene tutte le cifre della parola!

Ps. Essendo un nuovo problema ti consiglio di inserirlo in una nuova discussione!

no vabbè a me non interessa, quindi non c'è bisogno di aprire una nuova discussione ed in effetti il mio algoritmo è diverso, perchè non vuole 5 numeri interi e sapere se è palindromo ecc. è un semplice riordinamento delle cifre.

per gli array... quando li farò :lol:
 
il punto è che non posso usare gli array perchè non ancora li ho studiati,posso usare solo while e if/else.
 
Mi sa ke c'è stata un pò di confusione.. La mia ultima risposta era per Jolly.. comunque:
e_ale:

beh il codice è infinito perchè n non sarà mai minore di 10 in base al codice che hai scritto.
Inoltre nonostante il ciclo infinito il codice non credo che funziona..Io non l'ho provato ma leggendolo ti faccio questo esempio seguendo il tuo algoritmo:
il numero è 40;
40 % 10 = 0; :boh:
x = 40 - (0*10) ;
la singola cifra è 40.

forse hai sbagliato l'operatore..non so cosa volevi fare.

jolly:
Ah non lo sapevo.. allora ora capisco perchè c'è il limite di 5 lettere..
Allora il tuo codice credo che vada bene.. certo una volta che farai gli array capirai che bastava un ciclo per risolvere il problema.. :sisi:
 
Mi sa ke c'è stata un pò di confusione.. La mia ultima risposta era per Jolly.. comunque:
e_ale:

beh il codice è infinito perchè n non sarà mai minore di 10 in base al codice che hai scritto.
Inoltre nonostante il ciclo infinito il codice non credo che funziona..Io non l'ho provato ma leggendolo ti faccio questo esempio seguendo il tuo algoritmo:
il numero è 40;
40 % 10 = 0; :boh:
x = 40 - (0*10) ;
la singola cifra è 40.

forse hai sbagliato l'operatore..non so cosa volevi fare.

jolly:
Ah non lo sapevo.. allora ora capisco perchè c'è il limite di 5 lettere..
Allora il tuo codice credo che vada bene.. certo una volta che farai gli array capirai che bastava un ciclo per risolvere il problema.. :sisi:

mmm in effetti non funziona per tutti i numeri :sisi:
bene :D

---------- Post added at 19:18 ---------- Previous post was at 19:13 ----------

tu come lo hai fatto??

3456/1000, poi /100 ecc, giusto??

e se metto
345678??
come fai?? mi sono perso qualcosa?? e per vedere se è palindromo useresti l'array?
 
Ah ok è colpa mia forse ho fatto un po di confusione perchè in un solo topic ho parlato di più argomenti,la prossima volta cerco di fare più attenzione.

Ma infatti mi capita spesso,ad esempio il libro mette degli esercizi che in realtà ci vorrebbero 15 righe di codice,ma poichè posso usare solo alcuni comandi mi costringe a scriverne 50 di righe.
Oppure perchè non mette come ad esempio questo esercizio dopo che ho studiato gli array,in modo da usare un solo ciclo come hai detto tu?
Mistero... :D

Cawletto e e_ale92 grazie per l'aiuto e la disponibilità,alla prossima.
 
tu come lo hai fatto??

3456/1000, poi /100 ecc, giusto??

e se metto
345678??
come fai?? mi sono perso qualcosa?? e per vedere se è palindromo useresti l'array?
 
ahahahah beh perchè / e % sono due cose diverse :) facendo a % b trovi il resto della divisione tra a e b. mentre con / fai la divisione ! :)
Se intendevi / e non % allora il tuo codice va benissimo..è anche più semplice del mio! :sisi:
 
ahahahah beh perchè / e % sono due cose diverse :) facendo a % b trovi il resto della divisione tra a e b. mentre con / fai la divisione ! :)
Se intendevi / e non % allora il tuo codice va benissimo..è anche più semplice del mio! :sisi:

allora, io nel codice ho messo % il percento (sisi conosco la differenza) e in effetti non funziona con tutti i numeri.

però, non è questo che mi interessa... io vorrei sapere come fai con il tuo algoritmo a scindere un numero tipo 345678.
tu hai preso es. 3456 / 1000, poi /100 ecc. ... e con numeri più grossi o meglio di cui non conosci la lunghezza :boh:??
 
L'ho scritto già a Jolly:
Codice:
int x=10;    while(n>=x)    {        x*=10; // è uguale a x = x*10;    }        x /= 10;       printf("ord di grandezza : %d\n" , x );
In questo modo se n=5165 x è 1000, se n=345678 x è 100000 e così via..
 
L'ho scritto già a Jolly:
Codice:
int x=10;    while(n>=x)    {        x*=10; // è uguale a x = x*10;    }        x /= 10;       printf("ord di grandezza : %d\n" , x );
In questo modo se n=5165 x è 1000, se n=345678 x è 100000 e così via..

ok, non avevo visto ;)
 
Ciao a tutti, sono nuovo del forum, e vi ho scoperto proprio perchè anch'io cercavo di fare un programma che scinda le cifre di un numero.
io avevo pensanto ad un for così:
Codice:
for(i = 10; i < 1000000; i *= 10){        printf("%d\n", (num % i) / (i / 10));
    }
però rimane il problema di salvare le 5 cifre, perchè così le sovrascrive! (non posso usare gli array perchè ancora non li ho studiati)
Qualcuno ha la soluzione? Grazie!

---------- Post added at 16:07 ---------- Previous post was at 15:41 ----------

Ragazzi, se a qualcuno interessa ancora, ci sono riuscito. Ecco il programma (c'è forse molto codice, ma l'ho scritto in 2 minuti, basta copia-incollare il for e cambiargli l'ultimo simbolo a "cifra#"):
Codice:
#include<stdlib.h>
#include<stdio.h>


main()
{
    int i, num, cifra5, cifra4, cifra3, cifra2, cifra1;
    
    printf("Inserisci un intero di 5 cifre...\n");
    scanf("%d", &num);
    
    for(i = 10; i <= 10; i *= 10){                                              //Stampa ultima cifra
        cifra5 = (num % i) / (i / 10);
        printf("%d\n", cifra5 );
        num /= 10;
    }
    
    for(i = 10; i <= 10; i *= 10){
        cifra4 = (num % i) / (i / 10);
        printf("%d\n", cifra4 );
        num /= 10;
    }
    
    for(i = 10; i <= 10; i *= 10){
        cifra3 = (num % i) / (i / 10);
        printf("%d\n", cifra3 );
        num /= 10;
    }
    
    for(i = 10; i <= 10; i *= 10){
        cifra2 = (num % i) / (i / 10);
        printf("%d\n", cifra2 );
        num /= 10;
    }
    
    for(i = 10; i <= 10; i *= 10){
        cifra1 = (num % i) / (i / 10);
        printf("%d\n", cifra1 );
        num /= 10;
    }
    
    if(cifra1 && cifra2 == cifra4 && cifra5)
        printf("Il numero e' palindromo.\n");
    else
        printf("Il numero non e' palindromo.\n");
    
    system("pause");
    return 0;
}
 
Ciao,

vorrei chiedere come si può sviluppare un codice analogo : invece di un numero vorrei separare le lettere di un carattere, per esempio 4t4 stampare e memorizzare separatamente :
4
t
4

grazie mille
 
Stato
Discussione chiusa ad ulteriori risposte.
Pubblicità
Pubblicità
Indietro
Top