PDA

Visualizza versione completa : Problema di programmazione



grifis
26-04-2004, 13.20.48
Dato un numero qualsiasi, come faccio a individuare le cifre di cui composto? Ad esempio inserisco 34 e il mio programma mi deve dire che il numero composto dalla cifra 3 e dalla cifra 4.

EmaWw
26-04-2004, 13.37.12
O_o

scusa in che linguaggio?

grifis
26-04-2004, 13.50.12
In pascal mi servirebbe, ma va bene anche in linguaggio comune poi penso io a tradurlo in linguaggio di programmazione. Mi serve la logica dietro a questo problema, cio come io possa ricavare queste due cifre sapendo che il pascal ha una funzione CHR(numero) che restituisce il simbolo del codice ascii corrispondente a quel numero, e sapendo che il numero zero alla posizione 48 del codice ascii; gli altri numeri sono in sequenza, quindi 49 1, 50 2 etc... fino a 57 che 9.

dexx.
26-04-2004, 13.53.43
Divisione col resto non ti dice niente? :D

57 / 10 = 5 resto 7
Ecco le tue due cifre. E' possibile creare un ciclo che trasformi un numero di qualsiasi lunghezza.

Se invece usi il C o C++, trasforma il tuo numero in stringa, e indirizza il singolo carattere con un indice.

char *str;
itoa(numero,str,10); //il 10 la base

str[0] unit
str[1] decine
ecc ecc

Entrambe i metodi sono equivalenti, in cicli di clock consigliabile il primo fino a numeri con 4 o 5 cifre.

grifis
26-04-2004, 14.05.58
Originally posted by Gandalf1981
Divisione col resto non ti dice niente? :D

57 / 10 = 5 resto 7

Ecco le tue due cifre.


E' vero, ma quando il numero non solamente di due cifre? Dovrei fare una funzione ridondante, infatti se il numero fosse 456 dividendo col resto per 10 mi verrebbe 45 e 6, e ridovrei fare il procedimento sul 45... mmm devo un attimo ingegnarmi.

Frank
26-04-2004, 14.29.10
Trasformi il numero in stringa, conti la lunghezza della stringa e fai n substring di 1 carattere dove n la lunghezza della stringa totale, ogni risultato della stringa equivale ad una delle tue cifre.

Metodo un po' rozzo, ma efficace...

Frank

dexx.
26-04-2004, 14.30.27
Non serve ingegnarsi... gi stato fatto tutto. Basta cercare.

Di metodi ce ne sono infiniti, occorre scegliere il migliore in base alle esigenze.
Ad esempio protresti leggere da tastiera il numero cifra per cifra. C' anche una formula matematica che dato un numero ti dice quante cifre ha.

divisore = 10^(NCifre-1) //potenza del 10 da cui partire
for (int i=0; i<NCifre-1; i++)
{
cifra = Numero / divisore;
resto = Numero % divisore;
//
// In questo punto hai il numero da convertire in lettere nella
// var cifra
//
Numero=resto;
divisore /= 10;
}

Non testato ma dovrebbe funzionare.
Esempio con 5135

I=0
cifra=5
resto=135

I=1
cifra=1
resto=35

I=2
cifra=3
resto=5

fine ciclo.

Altrimenti il For lo fai diventare un bel While, il risultato non cambia.

Consiglio spassionato? Il Pascal buttalo...