#include <stdio.h>
#include <stdlib.h>
main()
{
char palabra[50];
leer(palabra);
juntar(palabra);
comprobar(palabra);
getch();
}
leer(char *palabra)
{
gets(palabra); // QUERIA USAR "scanf("%s",&palabra);", PERO NO ME LO TRAGA Y ESO QUE EN EL COMPILADOR DE CLASE SIEMPRE PERO AQUI NO...
}
juntar(char *palabra)
{
int i=0,j=0,max=0;
max=strlen(palabra);
char palabra2[50];
for (i=0;i<max;i++) // QUITAMOS ESPACIOS Y LO GUARDAMOS EN PALABRA2
{
if( strcmp(palabra[i],' ')!=0 )
{
palabra2[j]=palabra[i];
j++;
}
}
for (i=0;i<max;i++) // COPIAMOS PALABRA2 en PALABRA
{
palabra[i]=palabra2[i];
}
}
comprobar(char *palabra)
{
int i=0,max=0,contador=0;
max=strlen(palabra);
for (i=0;i<max/2;i++)
{
if( strcmp(palabra[i],palabra[max-i])!=0 )
{contador=1;}
}
if (contador==0)
{
printf("SI ES UN PALINDROMO\n");
}
else
{
printf("NO ES UN PALINDROMO\n");
}
}
madeinsusa escribió:No lo he probado pero creo que va a ser porque te has comido la librería "string.h"
kodeone escribió:En pascal te lo se hacer pero C aún no he tocado xD

/*EJ-->85.- Palíndrom. Un palíndrom és una paraula o una expressió
que es llegeix igual de dreta a esquerra que d'esquerra a dreta.
Llegir del teclat una paraula o una expressió i verificar sí és un palíndrom. */
#include <stdio.h>
#include <stdlib.h>
#define MAX 50
int main(int argc, char *argv[])
{
char N[MAX];
int cont;
int cont2;
char C[MAX];
int suma=0;
int lon;
int cont3=0;
cont=0;
printf("Escriu una cadena de caracters: ");
gets(N);
lon=strlen(N);
cont2=lon-1;
while(cont<MAX){
C[cont]=N[cont2];
cont=cont+1;
cont2=cont2-1;}
C[lon]='\0';
cont=0;
/*while(cont<lon){
printf("%c",C[cont]);
cont=cont+1;}
printf("\n");
puts(N);*/
/////////treu els espais del vector N
cont=0;
while(cont<lon){
cont2=cont;cont3=0;
if(N[cont]==' '){
while(cont2<lon){
N[cont+cont3]=N[cont+cont3+1];
cont2=cont2+1;
cont3=cont3+1;
}}
cont=cont+1;}
////////
///////treu els espais en blanc del vector C
cont=0;
while(cont<lon){
cont2=cont;cont3=0;
if(C[cont]==' '){
while(cont2<lon){
C[cont+cont3]=C[cont+cont3+1];
cont2=cont2+1;
cont3=cont3+1;
}}
cont=cont+1;}
////////
cont=0;
while(cont<lon){
if(N[cont]!=C[cont]){
suma=suma+1;}
cont=cont+1;}
printf("\n");
if(suma!=0){printf("No es palindromo\n");}
else{printf("Es palindromo\n");}
system("PAUSE");
return 0;
}-Crono- escribió:que mania todo el mundo usando el for, el while es más potente ! xD

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
main()
{
char palabra[50];
leer(palabra);
juntar(palabra);
comprobar(palabra);
getch();
}
leer(char *palabra)
{
gets(palabra);
}
juntar(char *palabra)
{
int i=0,j=0,max=0;
max=strlen(palabra);
char palabra2[50];
for (i=0;i<max;i++) // QUITAMOS ESPACIOS Y LO GUARDAMOS EN PALABRA2
{
if( palabra[i]!=' ' )
{
palabra2[j]=palabra[i];
j++;
}
}
for (i=0;i<max;i++) // COPIAMOS PALABRA2 en PALABRA
{
palabra[i]=palabra2[i];
}
}
comprobar(char *palabra)
{
int i=0,max=0,contador=0;
max=strlen(palabra);
for (i=0;i<max/2;i++)
{
if(palabra[i]!=palabra[max-1-i])
{contador=1;}
}
if (contador==0)
{
printf("SI ES UN PALINDROMO\n");
}
else
{
printf("NO ES UN PALINDROMO\n");
}
}
madeinsusa escribió:No estás usando bien strcmp, si lo que quieres es comparar solo caracteres de dos cadenas no hace falta usarlo, es más, está mal hacerlo.
Esa función se usa para comparar cadenas enteras, ese es el fallo.
Cle@r escribió:-Crono- escribió:que mania todo el mundo usando el for, el while es más potente ! xD
¿Por? Hasta donde yo sé, en bajo nivel son lo mismo, sólo que con el for el propio compilador se encarga del contador en vez de tenerlo que poner tú a mano.
Un saludo
madeinsusa escribió:Bueno lo importante al fin y al cabo es darte cuenta del fallo porque a veces terminas dándote de cabezazos...
Ah, y no soy macho
D
![toma [tomaaa]](/images/smilies/nuevos2/tomaa.gif)
kurras escribió:Nota del moderador: Mejor en PC - General
amuchamu escribió:Para la próxima, para poner código se usa la etiqueta Code, no Quote.