• Sábado 14 de Diciembre de 2024, 20:39

Autor Tema:  numeros capicua  (Leído 3042 veces)

elpis

  • Nuevo Miembro
  • *
  • Mensajes: 9
  • Nacionalidad: 00
    • Ver Perfil
numeros capicua
« en: Domingo 10 de Julio de 2011, 22:37 »
0
Haber como es esto....

problema: todo numero que ingreso da null !!

el programa permite ingresar un numero y dice si es capicúa
 
//codigo
#include<stdio.h>
#include<conio.h>
#include<string.h>
char* capicua(char*);
char* capicua(char*num){
   int largo=strlen(num),i;
   char* auxi,otro;
   for(i=0;i<largo;i++){
      auxi=num;
      num=num[largo];
      num[largo]=auxi;
      largo--;
   }
   i=0;
   while (i<strlen(num)){
      if(auxi==num){
         i++;
         if(i==strlen(num))
            printf("Numero capicula");
      }else{
         printf("nttNo es capicua");
         break;
      }
   }
}
void main(){
   clrscr();
   char* numero;
   printf("Ingrese numero");
   scanf("%s",&numero);
   flushall();
   printf("%s",capicua(numero));
   getch();
}

elpis

  • Nuevo Miembro
  • *
  • Mensajes: 9
  • Nacionalidad: 00
    • Ver Perfil
Re:numeros capicua
« Respuesta #1 en: Jueves 28 de Julio de 2011, 23:59 »
0
A ver ahora:

(todos los valores me da que NO es capicua)    :ayuda:

Código: [Seleccionar]
#include<stdio.h>
#include<conio.h>
#include<string.h>
char* invertir (char *);
char* invertir (char *n){
char* auxi;
int largo=(strlen(n)),o=0,i=0;
while (o<=(strlen(n))){
auxi[i]=n[largo];
largo--;
o++;
i++;
}
return auxi;
}

void main(){
clrscr();
char *numero,*resultado;
int conf,i;
printf("\n\n\t\tIngrese numero\n\t\t");
gets(numero);
clrscr();
// resultado=invertir(numero);
printf("resutado %s",invertir(numero));
for(i=0;i<strlen(numero);i++)
if(numero[i]==resultado[i]);
conf++;
if(conf==strlen(numero))
printf("\n\n\n\t\tEs capicua");
else
printf("\n\n\n\t\tNo es capicua");
getch();
}

Checho360

  • Miembro activo
  • **
  • Mensajes: 84
    • Ver Perfil
Re:numeros capicua
« Respuesta #2 en: Viernes 29 de Julio de 2011, 00:50 »
0
En la función utilizas auxi como si fuera una cadena y es un apuntador a char. Tendrías que usar calloc para hacer eso.
« última modificación: Viernes 29 de Julio de 2011, 00:52 por Checho360 »

herzdark

  • Miembro activo
  • **
  • Mensajes: 38
  • Nacionalidad: ar
    • Ver Perfil
Re:numeros capicua
« Respuesta #3 en: Miércoles 10 de Agosto de 2011, 00:29 »
0
estas recorriendo toooda la cadena para saber si es capicua, si te pongo el numero 1224 ya a la primera pregunta me da q no es capi entonces mejoraria el codigo q se valla moviendo mientras sean los numeros iguales, y cuando salis del ciclo preguntas si tu valor x == y y retornarias q es capi sino no

en codigo seria así:

Código: C
  1. in capicua(char*num) //1- Capicua y 0- No capicua
  2. {int largo=strlen(num),i=0,med=largo/2;
  3.  while(num[largo]==num[i]&&i<med)
  4.  {i++;
  5.   largo--;
  6.  }
  7.  return num[largo]==num[i];
  8. }      
  9.  

espero q te alla aclarado tu problema y si no enteden algo pregunta
« última modificación: Miércoles 10 de Agosto de 2011, 02:11 por herzdark »