Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 21
  1. #1
    Utente di HTML.it L'avatar di XWolverineX
    Registrato dal
    Aug 2005
    residenza
    Prague
    Messaggi
    2,565

    C - Capire se un numero è palindromo

    Per chi non lo sapesse, un numero è palindromo se leggendono da ambo i sensi, il numero resta uguale.
    Alcuni esempi sono
    55555 12321 4554

    Come capire se, digitando un numero, questo è palindromo?
    Si potrebbe fare cosi
    codice:
    bool Palindromo(int numero = 111)
    {
      char *c = new char[5];
      itoa(numero,c,0);
      return !strcmp(c,strrev(c));
    }
    O comunque, una cosa del genere (il codice può essere errato, non ricordo bene gli argomenti di itoa.
    Però su un libro propone di capire ciò usando solo le strutture di controllo e le 4 operazioni, facendo particolare riferimento a % e /.
    Io ci ho riflettuto ma non sono arrivato a una soluzione.
    Voi come fareste?
    "Se proprio devono piratare, almeno piratino il nostro." (Bill Gates)

    "Non è possibile che 2 istituzioni statali mi mettano esami nello stesso giorno." (XWolverineX)

    http://xvincentx.netsons.org/programBlog

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Così ...

    codice:
    	int a = 12321;
    	
    	char cifra[30];
    	int nd=-1;
    	while(cifra[++nd] = (a % 10)) a /= 10;
    
    	int pali=1;
    	for(int c=0; c<nd/2; c++)
    		if(cifra[c] != cifra[nd-c-1])
    			pali=0;
    
    	if(pali) printf("Palindromo\n");
    	else printf("NON Palindromo\n");

  3. #3
    Utente di HTML.it L'avatar di XWolverineX
    Registrato dal
    Aug 2005
    residenza
    Prague
    Messaggi
    2,565
    Gli array non sono stati ancora introdotti!
    "Se proprio devono piratare, almeno piratino il nostro." (Bill Gates)

    "Non è possibile che 2 istituzioni statali mi mettano esami nello stesso giorno." (XWolverineX)

    http://xvincentx.netsons.org/programBlog

  4. #4
    Utente di HTML.it L'avatar di Il Pazzo
    Registrato dal
    Jul 2004
    Messaggi
    1,071
    e boh guarda... mi pare di aver capito che deve essere senza vettori....

    a parte che sono un casinista assoluto... l'ho fatto però boh.. ho toccato qualcosa e non mi va più.... ma nulla di particolare... il calcolo di p.. sballa dalla 3za cifra in poi credo...
    codice:
    #include<iostream>
    #include<cmath>
    
    using namespace std;
    
    int Palindromo(int numero){
    	int j = numero;
    	int i = 0;
    	int p = 0, u = 0; // Prima e Ultima cifra del numero
    	double k;
    
    	while(j!=0){ //calcolo la lunghezza del numero
    		j/=10;
    		i++;
    	}
    
    	for(j = i - 1, k = 0; j > i/2; j--, k++){
    		p = (numero / pow(10,(double)j )) - (p * pow(10, k));
    		cout<<p<<endl;
    		u = (numero % (int)pow(10, k + 1)) / pow(10, k);
    		cout<<u<<endl;
    		if(p != u) return 0;
    	}
    	return 1;}
    
    void main(){
    	int c = Palindromo(12321);
    	if(c) cout<<"palindromo";
    	else cout<< "Non palindromo";
    }
    Quando rientro vedo di finirlo...

  5. #5
    Propongo un alternativa, un pò più lunga , ma forse più semplice da capire.

    Codice PHP:
    #include<iostream>

    using namespace std;


    int calcola_cifre int num );
    int estrai_cifra int numint i);
    int confronto_cifreint num int cifre );

     
    int main()
    {   
        
    int num=0;
        
    int cifre=0;
        
    int ris=0;
            
        
    cout<<"Inserisci numero:  ";
        
    cin>>num;
        
        
    cifre calcola_cifre(num);
        
        
    ris confronto_cifre(num,cifre);
        
        if(
    ris==0cout<<"\nPalindromo\n\n";
          else 
    cout<< "\nNon palindromo\n\n";
          
        
    system("pause");
        return 
    0;
    }


    int calcola_cifre int num )
    {   
        
    int cifre=0;
        
           while(
    num!=0){ 
            
    num/=10;
            
    cifre++;
        } 
        
        return 
    cifre;
    }    


    int confronto_cifreint num int cifre)
    {
      
    int i;
      
      for (
    i=i<=cifre/i++) {
        if ( 
    estrai_cifra(num,i) != estrai_cifra(num,cifre+1-i) ) 
        return 
    1;
      }
      
      return 
    0;
    }


    int estrai_cifra int numint n)
    {   
        
    int j;
        
        for ( 
    j=j<j++) 
         
    num/=10;
         
        return 
    num%10;

    Ci sono 10 tipi di persone al mondo, chi conosce il sistema binario e chi no.

  6. #6
    Utente di HTML.it L'avatar di XWolverineX
    Registrato dal
    Aug 2005
    residenza
    Prague
    Messaggi
    2,565
    L'algoritmo è chiaro ma non capisco il principio che usi!!
    "Se proprio devono piratare, almeno piratino il nostro." (Bill Gates)

    "Non è possibile che 2 istituzioni statali mi mettano esami nello stesso giorno." (XWolverineX)

    http://xvincentx.netsons.org/programBlog

  7. #7
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Ma se l'algoritmo e' chiaro, come fai a non avere chiaro il principio?

    1) calcola il numero di cifre del numero (12321 ha 5 cifre)

    2) per le prime n/2 cifre (per 12321 per le prime 2 cifre)

    3) confronta la cifra 1 con la cifra 5+1-1, la prima con l'ultima

    4) confornta la cifra 2 con la cifra 5+1-2, la seconda con la penultima

    5) se tutte le cifre cosi' confrontate sono uguali allora e' palindromo

    Esattamente come per il mio algoritmo ma senza memorizzare le cifre nell'array.

  8. #8
    Utente di HTML.it L'avatar di XWolverineX
    Registrato dal
    Aug 2005
    residenza
    Prague
    Messaggi
    2,565
    Intendevo dire che sono chiare le operazioni che fa, ma non ne capivo il funzionamento.
    "Se proprio devono piratare, almeno piratino il nostro." (Bill Gates)

    "Non è possibile che 2 istituzioni statali mi mettano esami nello stesso giorno." (XWolverineX)

    http://xvincentx.netsons.org/programBlog

  9. #9
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Originariamente inviato da XWolverineX ma non ne capivo il funzionamento.
    Cosa, particolare, non capisci?

  10. #10
    Scusa ma se scrivi il numero iniziale in un altra variabile ma lo riporti al contrario e poi guardi se i due numeri sono uguali non è piu facile?

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.