Buenas gente, soy nuevo programando en C++, y para esta semana tengo que presentar un trabajo, les explico mas o menos, tengo que pedir una palabra a un usuario x, el programa debe hacer las siguientes opciones:
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{
printf("Que desea realizar: \n1. Ingresar palabras\n2. Ver si es palindromo.\n3. Salir.\n=>"); 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++)
printf ("\n%d. - %d\n", i
+1, L.
elems[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);
}
}