Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2014
    Messaggi
    35

    [c++] vettore palindromo o no

    raga dovrei fare un programma che mi controlla se palindromo o no.
    io ho ragionato così indicizzo l'array con due cicli for uno che parte da a=0 a fino a n, un altro che mi parte dall'ultimo elemento dell'array quindi j=n con j>=0 e vado indietro nell'array quindi a-- e li confronto con un if
    codice:
    #include <iostream>
    using namespace std;
    void palindromo(int array[],int n){
    	
    	int j;
    	int a;
    	for (j=0;j<n;j++){
    		for (a=n;a>=0;a--){
    			if (array[j]==array[a]){
    				cout<<"palindromo";
    			} else {cout<<"non lo è";}}}}
    
    
    int main (int argc, char * const argv[]) {
        int size=5;
    	int vet[size];
    	for (int i=0;i<size;i++){
    		cin>>vet[i];}
    	palindromo( vet,size);
        return 0;
    }
    ma non va bene, che sbaglio??

  2. #2
    Utente di HTML.it
    Registrato dal
    Feb 2014
    Messaggi
    35
    Quote Originariamente inviata da enrico92 Visualizza il messaggio
    raga dovrei fare un programma che mi controlla se palindromo o no.
    io ho ragionato così indicizzo l'array con due cicli for uno che parte da a=0 a fino a n, un altro che mi parte dall'ultimo elemento dell'array quindi j=n con j>=0 e vado indietro nell'array quindi a-- e li confronto con un if
    codice:
    #include <iostream>
    using namespace std;
    void palindromo(int array[],int n){
        
        int j;
        int a;
        for (j=0;j<n;j++){
            for (a=n;a>=0;a--){
                if (array[j]==array[a]){
                    cout<<"palindromo";
                } else {cout<<"non lo è";}}}}
    
    
    int main (int argc, char * const argv[]) {
        int size=5;
        int vet[size];
        for (int i=0;i<size;i++){
            cin>>vet[i];}
        palindromo( vet,size);
        return 0;
    }
    ma non va bene, che sbaglio??

    ho risolto la mia stupidità così se c'è qualche errore o un algoritmo più efficiente sarei contento se me lo comunicaste
    codice:
    #include <iostream>using namespace std;
    void palindromo(int array[],int n){
    	int tmp[n];
    	int tmp2[n];
    	int j;
    	int a;
    	
    		for(a=n-1;a>=0;a--){ 
    	            tmp[n]=array[a];
    				}
    	for (j=0;j<n;j++){
    		tmp2[n]=array[j];}	
    			if (tmp[n]==tmp2[n]){
    				cout<<"palindromo";}}
    
    
    			
    
    
    int main (int argc, char * const argv[]) {
        int size=5;
    	int vet[size];
    	for (int i=0;i<size;i++){
    		cin>>vet[i];}
    	palindromo( vet,size);
        return 0;
    }

  3. #3
    Utente di HTML.it L'avatar di Scara95
    Registrato dal
    Jul 2009
    residenza
    Zimella (VR)
    Messaggi
    2,589
    codice:
    void palindromo(int array[], int n) {
      for(int i = 0; i < n/2; ++i) {
        if(array[i] != array[n-1-i]) {
          cout << "Non palindromo" << endl;
          return;
        }
      }
      cout << "Palindromo" << endl;
    }
    P.s. il tuo codice è errato

    Edit: ti consiglio di cambiare il valore di ritorno a bool e di spostare la stampa nel main.
    Ultima modifica di Scara95; 23-04-2014 a 17:52
    "Quid enim est, quod contra vim sine vi fieri possit?" - Cicerone, Ad Familiares

  4. #4
    Utente di HTML.it
    Registrato dal
    Feb 2014
    Messaggi
    35
    Quote Originariamente inviata da Scara95 Visualizza il messaggio
    codice:
    void palindromo(int array[], int n) {
      for(int i = 0; i < n/2; ++i) {
        if(array[i] != array[n-1-i]) {
          cout << "Non palindromo" << endl;
          return;
        }
      }
      cout << "Palindromo" << endl;
    }
    P.s. il tuo codice è errato

    Edit: ti consiglio di cambiare il valore di ritorno a bool e di spostare la stampa nel main.
    come fa a essere errato, testandolo con diversi numeri palindromi output è giusto!!!, cioè un numero è palindromo (in parole povere) se leggendolo da destra a sinistra e da sinistra a destra è uguale, quindi basta convertire un l'array e confrontarlo con quello originale

  5. #5
    Utente di HTML.it L'avatar di Scara95
    Registrato dal
    Jul 2009
    residenza
    Zimella (VR)
    Messaggi
    2,589
    Quote Originariamente inviata da enrico92 Visualizza il messaggio
    come fa a essere errato, testandolo con diversi numeri palindromi output è giusto!!!, cioè un numero è palindromo (in parole povere) se leggendolo da destra a sinistra e da sinistra a destra è uguale, quindi basta convertire un l'array e confrontarlo con quello originale
    Guarda se questo esempio di utilizzo del tuo codice ti sembra corretto.
    Nel tuo codice confronti solo l'ultimo elemento con il primo, per il resto non fai altro che creare copie inutili degli elementi.
    "Quid enim est, quod contra vim sine vi fieri possit?" - Cicerone, Ad Familiares

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 © 2025 vBulletin Solutions, Inc. All rights reserved.