Parola Palindroma

di il
4 risposte

Parola Palindroma

Buona sera a tutti, ho un problema con il seguente esercizio, ovvero di scrivere una funzione per determinare se una parola è "Palindroma" (Ad esempio radar si può leggere in allo stesso modo in entrambi i sensi. Vi allego qui il mio codice:
#include <iostream>
#include <cstring>
#define MAX 10
using namespace std;

int palindroma(char parola[], int lunghezza_parola);

int main()
{
	char parola[MAX];
	cout << "Inserisci una parola: "; cin >> parola;
	int lunghezza_parola = strlen(parola);
	palindroma(parola, lunghezza_parola);
}

int palindroma(char parola[], int lunghezza_parola)
{
	char parola_contrario[MAX];
	int j = 0;
	for (int i = (lunghezza_parola - 1); i >= 0 ; i-- )
	{
		parola_contrario[j] = parola[i];
		j++;
	}	
	cout << "Parola al contrario: " << parola_contrario << endl;
	if (parola_contrario == parola)
		cout << "La parola e' palindroma" << endl;
	else
		cout << "La parola non e' palindroma" << endl;
	return 0;
}
Qui vi è un ciclo for che prende la parola messa in input e la restituisce in ordine inverso
for (int i = (lunghezza_parola - 1); i >= 0 ; i-- )
	{
		parola_contrario[j] = parola[i];
		j++;
	}
. Dopo di che ho messo un if per verifcare se parola_contrario e uguale alla parola inserita precedentemente. Però il programma mi dice sempre che la parola non è palindroma, non capisco cosa dovrei cambiare/aggiungere. Ringrazio in anticipo

4 Risposte

  • Re: Parola Palindroma

    
    if (parola_contrario == parola)
    
    Non puoi controllare l'uguaglianza di due array in questo modo, devi per forza fare un altro ciclo e controllare tutti gli elementi. Oppure controlli tutto in un ciclo unico senza creare un altro array

    Poi magari cerca di ascoltarli i consigli. Ancora "int palindroma" invece del void per come hai scritto la funzione...
  • Re: Parola Palindroma

    Weierstrass ha scritto:


    
    if (parola_contrario == parola)
    
    Non puoi controllare l'uguaglianza di due array in questo modo, devi per forza fare un altro ciclo e controllare tutti gli elementi. Oppure controlli tutto in un ciclo unico senza creare un altro array
    Grazie del consiglio!!! Sono riuscito a risolverlo, lascio qui il codice magari potrà servire a qualcuno
    #include <iostream>
    #include <cstring>
    #define MAX 10
    using namespace std;
    //PROTOTIPI
    char palindroma(char parola[], int lunghezza_parola, char parola_contrario[]);
    int confronto(char parola[], int lunghezza_parola, char parola_contrario[]);
    
    int main()
    {
    	char parola[MAX];
    	cout << "Inserisci una parola: "; cin >> parola;
    	int lunghezza_parola = strlen(parola);
    	char parola_contrario[MAX];
    	palindroma(parola, lunghezza_parola, parola_contrario);
    	confronto (parola, lunghezza_parola, parola_contrario);
    	if (confronto (parola, lunghezza_parola, parola_contrario) == 1)
    		cout << "La parola " << parola << " e' una parola palindroma";
    	else
    		cout << "La parola " << parola << " non e' una parola palindroma";
    }
    //FUNZIONE PER CREARE PAROLA AL CONTRARIO
    char palindroma(char parola[], int lunghezza_parola, char parola_contrario[])
    {
    	int j = 0;
    	for (int i = (lunghezza_parola - 1); i >= 0 ; i-- )
    	{
    		parola_contrario[j] = parola[i];
    		j++;
    	}	
    	cout << "Parola al contrario: " << parola_contrario << endl;
    	return parola_contrario[MAX];
    }
    //FUNZIONE PER CONTROLLARE SE I DUE ARRAY SONO UGUALI
    int confronto(char parola[], int lunghezza_parola, char parola_contrario[])
    {
    	for(int i = 0; i < MAX; i++)
    	{
    		if (parola[i] == parola_contrario[i])
            	return 1;
            else
           		return 0;
    	}
    }
  • Re: Parola Palindroma

    Potevi usare le funzioni

    strrev
    strcmp

    già pronte...
  • Re: Parola Palindroma

    oregon ha scritto:


    Potevi usare le funzioni

    strrev
    strcmp

    già pronte...
    Sto studiando dal libro e queste due funzioni non sono state menzionate per il momento
Devi accedere o registrarti per scrivere nel forum
4 risposte