Duda en resolver
Hola buenas tardes,tengo una duda de un algoritmo que no me sale, trata d lo siguiente:
tengo que realizar un algoritmo que al leer frases de izquierda a derecha o de derecha a izquierda suenen igual. Por ejemplo: daba le zorra ----la zorra el abad
He intentado muchas posibilidades pero no me sale ninguna.Me pongo en contacto con ustedes a ver si me pueden echar una mano.Muchas gracias y un saludo a todos.
tengo que realizar un algoritmo que al leer frases de izquierda a derecha o de derecha a izquierda suenen igual. Por ejemplo: daba le zorra ----la zorra el abad
He intentado muchas posibilidades pero no me sale ninguna.Me pongo en contacto con ustedes a ver si me pueden echar una mano.Muchas gracias y un saludo a todos.
¿Qué tiene que hacer el algoritmo?
¿Inventar frases de ese estilo?
¿Comprobar dada una frase si cumple esa condición?.
Lo primero sería demasiado complejo.
Lo segundo es más sencillo con algo como esto
for (i=0; i<longitudFrase/2; i++)
{
if (frase[i] != frase[longitudFrase-1-i])
fprintf ("No suena igual ...n");
}
Tendrás que ajustar los índices y tener en cuenta si el número de letras es par o impar para que el bucle quede bien ajustado, pero más o menos es eso.
Se bueno.
¿Inventar frases de ese estilo?
¿Comprobar dada una frase si cumple esa condición?.
Lo primero sería demasiado complejo.
Lo segundo es más sencillo con algo como esto
for (i=0; i<longitudFrase/2; i++)
{
if (frase[i] != frase[longitudFrase-1-i])
fprintf ("No suena igual ...n");
}
Tendrás que ajustar los índices y tener en cuenta si el número de letras es par o impar para que el bucle quede bien ajustado, pero más o menos es eso.
Se bueno.
Entiendo que lo que quieres es detectar frases capicuas.
La propuesta del correo anterior es perfecta. Yo te mando algo distinto, que utiliza funciones incluidas en el compilador de borland
// program capicua.cpp
// written in borland c++ - ver 4.5
#include <iomanip.h>
#include <string.h>
#include <stdio.h>
const int N = 81;
int main()
{
char a[N],b[N];
gets(a);
int k = 0;
for(int i =0;i <= strlen(a);i++) // compresion de la cadena
{ // eliminacion de espacios blancos
if(a[i] == ' ')
continue;
a[k++] = a[i];
}
strcpy(b,a); // copia b = a;
strrev(b); // invierte b
if(strcmp(a,b))
cout << "no ";
cout << "es capicua" << endl;
return 0;
} // MAIN
La propuesta del correo anterior es perfecta. Yo te mando algo distinto, que utiliza funciones incluidas en el compilador de borland
// program capicua.cpp
// written in borland c++ - ver 4.5
#include <iomanip.h>
#include <string.h>
#include <stdio.h>
const int N = 81;
int main()
{
char a[N],b[N];
gets(a);
int k = 0;
for(int i =0;i <= strlen(a);i++) // compresion de la cadena
{ // eliminacion de espacios blancos
if(a[i] == ' ')
continue;
a[k++] = a[i];
}
strcpy(b,a); // copia b = a;
strrev(b); // invierte b
if(strcmp(a,b))
cout << "no ";
cout << "es capicua" << endl;
return 0;
} // MAIN
