1. Guardar esa palabra en un arreglo
2. Eliminar x palabra
3. Imprimir el arreglo
4. Ver si x palabra es palindromo o no
5. Salir del programa
Ya pude hacer el codigo para saber si la palabra es palindromo, lo que no he podido es ingresar x palabra a un arreglo y con esto desplejar las demas opciones.
Aca les dejo lo que tengo hasta el momento:
Les agradecería enormemente la ayuda que me puedan brindar gente...buena nota y gracias por adelantado
Código C++:
Ver original
#include "iostream.h" #include "conio.h" #include <stdio.h> #include <stdlib.h> #include <conio.h> #include <dos.h> #define MAX 100 #define Valor_Error -9999 // Declaramos la variable tipo Cadena, de longitud maxima MAX typedef char Cadena[MAX]; typedef char pal[]; // Declaramos la variable tipo Caracter, de longitud 1 typedef char Caracter; int x,ind; // Devuelve la longitud de una cadena int longitud(Cadena cadena) { int i=0; while(cadena[i]!='\0') { i++; } return i; } // Determina si una cadena es un palindromo bool esPalindromo(Cadena cadena) { Caracter caracter1, caracter2; int longCadena, mitad, posCaracter1, posCaracter2, i; bool esPalindromo=true; // tamCadena: longitud de la cadena longCadena=longitud(cadena); /* (tamCadena-1)/2: mitad de los caracteres efectivos a evaluar */ // Verificamos si la longitud de la cadena es par if(longCadena%2==0) // mitad: Posicion que indica la posicion del caracter hasta el cual recorreremos mitad=longCadena/2-1; else mitad=longCadena/2; i=0; /* el indice i se detendra hasta llegue a mitad o hasta que ya se halla determinado que esPalindromo es false*/ while(i<=mitad&&esPalindromo) { /* caracter1 y caracter2 seran detrminados tomando los extremos de la subcadena segun el indice i */ posCaracter1=i; posCaracter2=longCadena-1-i; caracter1=cadena[posCaracter1]; caracter2=cadena[posCaracter2]; if(caracter1!=caracter2) esPalindromo=false; i++; } return esPalindromo; } typedef int posicion, logico; struct Lista {Cadena elems [MAX];posicion ultimo;}; typedef struct Lista lista; void Inicializa (lista &L); void Elementos (lista &L); void Elimina (lista &L); logico Vacia(lista L); logico Llena (lista L); posicion Fin (lista L); posicion Primero (lista L); posicion Ultimo (lista L); logico Inserta (Cadena x, posicion p, lista &L); logico Elimina (posicion p, lista &L); posicion Localiza (Cadena x, lista L); void Imprime (lista L); //Cadena RecuperaValor (posicion p, lista L); int main() { int res=1, posicion; Cadena cadena; lista LISTA; Inicializa(LISTA); do{ ind=1; while(ind==1){ switch (x){ case 1: Elementos(LISTA); break; case 2: Cadena cadena; cout<<"Ingrese la cadena: "<<endl; cin.getline(cadena,MAX); if(esPalindromo(cadena)) cout<<"SI es palindromo"; else cout<<"NO es palindromo"; cout<<endl; ind=0; break; case 3: res=0; return 0; break; } } }while(res=1); return 0; } ///////////////////////////////////////////// void Inicializa (lista &L){ L.ultimo=-1;} /*////////////////////////////////////////////// Cadena RecuperaValor (posicion p, lista L) { if (!Vacia (L) && p >= Primero (L) && p <= Ultimo(L)) return (L.elems [p]); else return (NULL); } //////*///////////////////////////////////////// void Elementos (lista &L) // Esta funcion es la que inserta los digitos en la lista { int n,i; Cadena x; cout << ("Numero de elementos en la lista? : "); for (i=1; i<=n; i++) { Inserta(x, Fin (L), L); } Imprime (L); } ////////////////////////////////////////////////// void Imprime (lista L) { int i; if (Vacia (L)) cout<<("\nLa lista esta sin nada\n"); else { for(i=0; i<=L.ultimo; i++) } } //////////////////////////////////////////////////// logico Vacia(lista L) { if (L.ultimo==-1) return(1); else return (0) ; } //////////////////////////////////////////////////// posicion Fin (lista L) { return (L.ultimo+1); } //////////////////////////////////////////////////// logico Inserta (Cadena x, posicion p, lista &L) { int i; if (Llena (L) || (p<Primero(L) || p>Fin(L))) return (0); else { for(i=L.ultimo; i>=p; i--) L.elems[i+1]=L.elems[i]; L.elems [p] = x; L.ultimo++; return (1); } }