• Domingo 15 de Diciembre de 2024, 08:02

Autor Tema:  Problema con ejercicio en C  (Leído 1210 veces)

ferthedems

  • Nuevo Miembro
  • *
  • Mensajes: 11
    • Ver Perfil
Problema con ejercicio en C
« en: Domingo 14 de Noviembre de 2010, 18:38 »
0
Buenas! He de resolver este ejercicio y estoy completamente atascado, llevo ya horas intentándolo y no hay tu tía.

Se introducen por teclado una serie de numeros enteros positivos, el final de la secuencia se marca con cero. Escribir un programa que nos indice cuantos numeros de tres cifras capicuas hay en la secuencia. Es necesario usar una funcion que partiendo de un numero entero positivo devuelva: cantidad de cifras, la primera y la última.

He hecho esto:

Código: C
  1.  
  2.  
  3. #include <stdio.h>
  4.  
  5. int funcion(int num, int *ult, int *prim, int *contador);
  6.  
  7. void main()
  8. {
  9.     int n1, n2, n3, suma, ult=0, prim=0, contador=0, capicuas=0;
  10.  
  11.     printf("Introduce una secuencia numerica (cero cierra lectura): ");
  12.     scanf("%d%d%d", &n1,&n2,&n3);
  13.  
  14.     while(n1!=0 && n2!=0 && n3!=0)
  15.     {
  16.          suma=n1*100+n2*10+n3; //Con esto hacemos que el numero a meter en la función tenga tres cifras
  17.          funcion(suma, &ult, &prim, &contador);
  18.          
  19. if(prim==ult)
  20. capicuas++;
  21.  
  22.          scanf("%d%d%d", &n1,&n2,&n3);
  23.     }
  24.    
  25. printf("nEl numero de capicuas de tres cifras es: %d", capicuas);
  26.  
  27. }
  28.  
  29. int funcion(int num, int *ult, int *prim, int *contador)
  30. {
  31.     int contador2=0;
  32.     *ult=num%10;
  33.  
  34.     while(num>10)
  35.     {
  36.     num=num/10;
  37.     contador2++;
  38.     }
  39.  
  40.     contador2++;
  41.     *contador=contador2;
  42.     *prim=num;
  43. }
  44.  
  45.  
  46.  

La función está bien. El tema es que lea las cifras de tres en tres y detecte los ceros. Este modelo que pongo, por ejemplo, no funciona.

Saludos y gracias.

EDITO: ESTABA MAL ESCRITO EL CODIGO.

punteroNULO

  • Miembro activo
  • **
  • Mensajes: 73
    • Ver Perfil
Re: Problema con ejercicio en C
« Respuesta #1 en: Lunes 15 de Noviembre de 2010, 19:15 »
0
La función para calcular si es capicúa funciona, pero los cálculos cuantos más sencillos mejor:
Como es de tres cifras para que sea capicua tiene que coincidir las unidades con las centenas, o sea:
Código: C
  1. if (suma % 10 == suma/100) es capicua
  2.  
(como "suma" es un entero, "suma/100" devuelve las centenas sin decimales, también se puede asegurar mediante casting o una función de redondeo).

Por otro lado para leer el número de tres cifras lees tres números, que pasa si introduzco 1 22 1?
Lo correcto es leer un número y luego se comprueba si es de tres cifras:
Código: C
  1. scanf("%d", &suma);
  2.  
  3. while(suma!=0 ) //salir si cero
  4. {
  5.      // comprobamos que el número sea de tres cifras.
  6.      if (suma >99 && suma <1000)  comprobar si es capicua;
  7.  
  8.      scanf("%d", &suma);
  9. }
  10.