ayuda con arreglos en C

DuendeDeOz

Bovino Milenario
#1
el problema segun es ese me a parece despues de compilarlo en linux(ubuntu)

ov.c:26: warning: passing argument 1 of ‘strcmp’ makes pointer from integer without a cast
/usr/include/string.h:142: note: expected ‘const char *’ but argument is of type ‘int’
ov.c:26: warning: passing argument 2 of ‘strcmp’ makes pointer from integer without a cast
/usr/include/string.h:142: note: expected ‘const char *’ but argument is
y el programa es

#include<stdio.h>
#include<string.h>
#define tam 4
main()
{
int i,j,o,fla=0;
int num[tam],ca[tam];

printf("este programa te dice si el numero es obicua\n");
printf("Dame el numero de 4 cifras\n");
for(i=0;i<4;i++)
{
scanf("%d",&num);
}
for(j=0;j<4;j++)
{
ca[j]=num[j];
}
printf("\n");
for(o=4;o>0;o--)
{
printf("%d",ca[o-1]);
}
for(i=0;i<4;i++)
{
if(strcmp(num,ca)==0)
{
fla=1;
}
}
if(fla=1)
{
printf("es capicua\n");
}
else
{
printf("no es capicua\n");
}

}

nota: la linea 26 es if(strcmp(num,ca)==0)

y lo que hace el programa ( o deberia hacer) es que dice si un numero es capicua o no osea que si el numero es igual pero inversamente
ejemplo

1221=1221 eso seria capicua

espero y me puedan ayudar
 

animatrix92

Bovino adolescente
#2
strcmp es para comparar strings y tu estas comparando vectores de tipo entero

lo que tienes que hacer seria poner 2 for que valla comparando el ultimo numero del segundo arreglo con el primero del primer arreglo y asi sucesivamente
 

registro500

Bovino adolescente
#3
lo haria algo asi asumiendo que se tiene ya cargado 4 digitos en el vector num :
int sw=0;
for(i=0; i<tam/2; i++)
{
if( num[ i ] != num[ tam - (1+i) ] ) sw=1;
}
if( sw==0 ) printf("SI es capicua\n");
else printf("NO es capicua\n");
 
Arriba