[C] Scindere il numero nelle sue singole cifre

Stato
Discussione chiusa ad ulteriori risposte.

cawletto

Utente Attivo
475
25
CPU
i5 750
HDD
1 TB
RAM
6 GB
GPU
GXT 460 SE 1GB overclocked
Monitor
Samsung LCD 1280x1024
PSU
Cooler Master Silent Pro M 600 W
Case
HP
OS
Windows 7-64 bit
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!
 

e_ale92

Utente Èlite
17,011
5,013
CPU
Intel® Core™ i7-920 Processor - @3.33GHz
Dissipatore
Stock Intel
Scheda Madre
Asus P6T - socket LGA 1366
HDD
Samsung 830 128GB + Samsung Spinpoint F4 320GB + Seagate Barracuda 1,5 TB
RAM
Corsair DDR3 1333MHz CL9 XMS3 DHX (3x2GB) - @1674MHz
GPU
MSI R6970 Lightning
Audio
Realtek ALC 1200
Monitor
HP 2310i
PSU
XFX Pro 750W Core Edition
Case
Cooler Master HAF 922
Periferiche
R.A.T. 5 Cyborg Mad Catz - Keycool KC84
OS
Arch Linux + Windows 10 Pro
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:
 

jolly

Utente Attivo
110
4
il punto è che non posso usare gli array perchè non ancora li ho studiati,posso usare solo while e if/else.
 

cawletto

Utente Attivo
475
25
CPU
i5 750
HDD
1 TB
RAM
6 GB
GPU
GXT 460 SE 1GB overclocked
Monitor
Samsung LCD 1280x1024
PSU
Cooler Master Silent Pro M 600 W
Case
HP
OS
Windows 7-64 bit
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:
 

e_ale92

Utente Èlite
17,011
5,013
CPU
Intel® Core™ i7-920 Processor - @3.33GHz
Dissipatore
Stock Intel
Scheda Madre
Asus P6T - socket LGA 1366
HDD
Samsung 830 128GB + Samsung Spinpoint F4 320GB + Seagate Barracuda 1,5 TB
RAM
Corsair DDR3 1333MHz CL9 XMS3 DHX (3x2GB) - @1674MHz
GPU
MSI R6970 Lightning
Audio
Realtek ALC 1200
Monitor
HP 2310i
PSU
XFX Pro 750W Core Edition
Case
Cooler Master HAF 922
Periferiche
R.A.T. 5 Cyborg Mad Catz - Keycool KC84
OS
Arch Linux + Windows 10 Pro
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?
 

jolly

Utente Attivo
110
4
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.
 

e_ale92

Utente Èlite
17,011
5,013
CPU
Intel® Core™ i7-920 Processor - @3.33GHz
Dissipatore
Stock Intel
Scheda Madre
Asus P6T - socket LGA 1366
HDD
Samsung 830 128GB + Samsung Spinpoint F4 320GB + Seagate Barracuda 1,5 TB
RAM
Corsair DDR3 1333MHz CL9 XMS3 DHX (3x2GB) - @1674MHz
GPU
MSI R6970 Lightning
Audio
Realtek ALC 1200
Monitor
HP 2310i
PSU
XFX Pro 750W Core Edition
Case
Cooler Master HAF 922
Periferiche
R.A.T. 5 Cyborg Mad Catz - Keycool KC84
OS
Arch Linux + Windows 10 Pro
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?
 

cawletto

Utente Attivo
475
25
CPU
i5 750
HDD
1 TB
RAM
6 GB
GPU
GXT 460 SE 1GB overclocked
Monitor
Samsung LCD 1280x1024
PSU
Cooler Master Silent Pro M 600 W
Case
HP
OS
Windows 7-64 bit
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:
 

e_ale92

Utente Èlite
17,011
5,013
CPU
Intel® Core™ i7-920 Processor - @3.33GHz
Dissipatore
Stock Intel
Scheda Madre
Asus P6T - socket LGA 1366
HDD
Samsung 830 128GB + Samsung Spinpoint F4 320GB + Seagate Barracuda 1,5 TB
RAM
Corsair DDR3 1333MHz CL9 XMS3 DHX (3x2GB) - @1674MHz
GPU
MSI R6970 Lightning
Audio
Realtek ALC 1200
Monitor
HP 2310i
PSU
XFX Pro 750W Core Edition
Case
Cooler Master HAF 922
Periferiche
R.A.T. 5 Cyborg Mad Catz - Keycool KC84
OS
Arch Linux + Windows 10 Pro
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:??
 

cawletto

Utente Attivo
475
25
CPU
i5 750
HDD
1 TB
RAM
6 GB
GPU
GXT 460 SE 1GB overclocked
Monitor
Samsung LCD 1280x1024
PSU
Cooler Master Silent Pro M 600 W
Case
HP
OS
Windows 7-64 bit
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..
 

e_ale92

Utente Èlite
17,011
5,013
CPU
Intel® Core™ i7-920 Processor - @3.33GHz
Dissipatore
Stock Intel
Scheda Madre
Asus P6T - socket LGA 1366
HDD
Samsung 830 128GB + Samsung Spinpoint F4 320GB + Seagate Barracuda 1,5 TB
RAM
Corsair DDR3 1333MHz CL9 XMS3 DHX (3x2GB) - @1674MHz
GPU
MSI R6970 Lightning
Audio
Realtek ALC 1200
Monitor
HP 2310i
PSU
XFX Pro 750W Core Edition
Case
Cooler Master HAF 922
Periferiche
R.A.T. 5 Cyborg Mad Catz - Keycool KC84
OS
Arch Linux + Windows 10 Pro
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 ;)
 

MrMojoRisin

Nuovo Utente
9
0
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;
}
 

ari24

Nuovo Utente
1
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.

Entra

oppure Accedi utilizzando
Discord Ufficiale Entra ora!

Discussioni Simili