SoloCodigo
Programación General => C/C++ => Mensaje iniciado por: Rbsmarte en Martes 3 de Junio de 2003, 21:06
-
Necesito hacer una funcion parecida a la de abajo, pero sin usar arrays ni strings, creo que la mejor forma de hacerlo es con punteros pero no se como hacerlo exactamente, asi que si podeis ayudarme os lo agradeceria.
#include <stdio.h>
#include <ctype.h>
#include <conio.h>
#include <string.h>
#define TRUE 1
#define FALSE 0
char letras[80];
int aux, cont, contr, indicador, bucle = TRUE;
void main(void)
{
clrscr();
indicador = TRUE;
/* Leer la frase */
printf("Introduce una frase : n");
gets(letras);
strupr(letras);
aux = strlen(letras) - 1;
/* Realizar la busqueda */
for ((cont=0,contr=aux);cont<=aux/2;(++cont, --contr))
{
while (letras[cont] == ' ')
++cont;
while (letras[contr] == ' ')
--contr;
if (letras[cont] != letras[contr])
{
indicador = FALSE;
break;
}
}
/* Escribir mensaje */
if (indicador==TRUE)
printf("SI es un palindromonn");
else
printf("NO es un palindromonn");
getch();
}
P.D: ES para saber si una palabra es un palindromo, es decir si se escribe igual del derecho que del reves.
-
Hola, creo que ya debes haber comenzado conesto y quisiera saber si has tenido problemas con la implementacion, para poderte colaborar.
Juank
-
hola, creo que lo que tu quieres hacer es el mismo programa con funciones
tienes que tener en claro las siguientes cosas
puedes trabajar con prototipos o sin ellos,
la cosa es saber llamar a la funcion puede ser por valor o referencia
ejem. valor
delclaras
int funcion(void)
{int a;
acciones
return a
}
y para llamar
void main(void)
int b;
b=funcion();
}
si usas, por referencia
void funcion(int*a);
int funcion(void)
{
*a=acciones;
}
y para llamar
void main(void)
int b;
funcion(&b);
}
tambien
void funcion(int&a);
int funcion(void)
{
&a=acciones
}
y para llamar
void main(void)
int b;
funcion(B);
}
-
Ay ay ay, la vida es cruel, no querés usar arreglos ni strings? Como vas a hacerlo si estás trabajando con strings? -_-
Me parece que es más fácil invertir la cadena y después compararla a hacer lo que vos hiciste. Y punteros... los strings están implementados como un puntero a caracter.
bool esPalindromo(char* cadena){
char* cadena_aux;
unsigned int tam = strlen(cadena);
for(int i=0; i<tam; i++) cadena_aux=cadena[tam-i-1];
return !strcmp(cadena,cadena_aux);
};
O algo así... y después simplemente
char* cad;
cout>>"Ingrese una cadena: " cin<<cad;
if(esPalindromo(cad)) cout>>"Es palíndromo">>endl;
else cout>>"No es palíndromo">>endl;
:huh: Algo así, no estoy seguro de si a los strings declarados como char* podés acceder igual como arreglos, pero bueno... el invertir no es difícil de hacer de cualquier forma.