Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it L'avatar di Dora
    Registrato dal
    Mar 2009
    Messaggi
    8

    [C++] - Separare le cifre di un numero

    Buongiorno.

    Ho un altro problema: utilizzando solamente "while" e "if-else" (quindi niente "for" o "array") devo ricevere da tastiera un numero intero e determinare se è palindromo o meno. Per far questo devo prima di tutto separare le cifre che compongono il numero, per confrontarle. Quindi se dalla tastiera ricevessi "23432", dovrei separare le cifre "2", "3", "4", ... Ma come posso separare le cifre senza memorizzarle in un array?

    Grazie

    P.S: Il numero deve essere di 5 cifre.

    Io ho scritto il codice (che sicuramente non è dei più efficienti):

    codice:
    #include<iostream>
    #include<cstdlib>
    
    using namespace std;
    
    int main()
    {
        unsigned int numero = 0;
    
    	cout << "Inserisci un numero di 5 cifre: ";
    	cin >> numero;
    
    	if(numero > 9999 && numero <= 99999)
    	{
    		unsigned int quattrocifre, trecifre, duecifre, unacifra, zerocifra;
    		unsigned int primacifra, secondacifra, terzacifra, quartacifra, quintacifra;
    
    		cout << "Ok!" << endl << endl;
    
    		quattrocifre = numero % 10000;
    		trecifre = quattrocifre % 1000;
    		duecifre = trecifre % 100;
    		unacifra = duecifre % 10;
    		zerocifra = unacifra % 1;
    
                    primacifra = (numero - quattrocifre) / 10000;
    		secondacifra = (quattrocifre - trecifre) / 1000;
    	        terzacifra = (trecifre - duecifre) / 100;
    		quartacifra = (duecifre - unacifra) / 10;
    		quintacifra = (unacifra - zerocifra);
    
    		cout << primacifra << secondacifra << terzacifra << quartacifra << quintacifra << endl;
    	}
    	else
    	{
    		cout << "Il numero non e' di 5 cifre!" << endl << endl;
    	}
        
        system("pause");
        return 0;
    }
    Si può migliorare?

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,464
    Devi solo controllare che la prima cifra a sinistra sia uguale alla prima a destra e la seconda a sinistra sia uguale alla seconda a destra. Quella centrale la puoi ignorare.

    Le cifre le confronti dopo averle ottenute con una semplice operazione matematica, e non devi memorizzarle necessariamente.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Utente di HTML.it L'avatar di Dora
    Registrato dal
    Mar 2009
    Messaggi
    8
    Grazie per avermi risposto. Come trovare un palindromo lo sò, il problema è separare le cifre. Più su ho scritto il codice, ma mi sembra mal fatto. Me lo sapresti migliorare (sempre che si possa migliorare)?

  4. #4
    Utente di HTML.it L'avatar di Dora
    Registrato dal
    Mar 2009
    Messaggi
    8
    Questo è il codice completo:
    codice:
    #include<iostream>
    #include<cstdlib>
    
    using namespace std;
    
    int main()
    {
        unsigned int numero = 0;
    
    	cout << "Inserisci un numero di 5 cifre: ";
    	cin >> numero;
    
    	if(numero > 9999 && numero <= 99999)
    	{
    		unsigned int quattrocifre, trecifre, duecifre, unacifra, zerocifra;
    		unsigned int primacifra, secondacifra, terzacifra, quartacifra, quintacifra;
    
    		cout << "Ok!" << endl << endl;
    
    		quattrocifre = numero % 10000;
    		trecifre = quattrocifre % 1000;
    		duecifre = trecifre % 100;
    		unacifra = duecifre % 10;
    		zerocifra = unacifra % 1;
    
            primacifra = (numero - quattrocifre) / 10000;
    		secondacifra = (quattrocifre - trecifre) / 1000;
    	    terzacifra = (trecifre - duecifre) / 100;
    		quartacifra = (duecifre - unacifra) / 10;
    		quintacifra = (unacifra - zerocifra);
    
    
    		if(primacifra==quintacifra && secondacifra==quartacifra)
    			cout << "Il numero e' palindromo." << endl << endl;
    		else
    			cout << "Il numero non e' palindromo." << endl << endl;
    	}
    	else
    	{
    		cout << "Il numero non e' di 5 cifre!" << endl << endl;
    	}
        
        system("pause");
        return 0;
    }

  5. #5
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,464
    Ho capito che sai come e' un palindromo, ma ti ho anche suggerito di non controllare la terza cifra ... quindi non serve calcolarla ... Il codice si riduce a

    codice:
    	if(numero > 9999 && numero <= 99999)
    	{
    		if( (((numero/10000)%10) == ((numero/1)%10)) &&
    			(((numero/1000)%10) == ((numero/10)%10)) )
    			cout << "Il numero e' palindromo" << endl;
    		else
    			cout << "Il numero NON e' palindromo" << endl;
    	}
    	else
    	{
    		cout << "Il numero non e' di 5 cifre!" << endl << endl;
    	}
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  6. #6
    Utente di HTML.it L'avatar di Dora
    Registrato dal
    Mar 2009
    Messaggi
    8
    WoW, solo due righe di codice!

    Grazie mille. Un bacione.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.