• Domingo 5 de Mayo de 2024, 15:42

Autor Tema:  Programa de numeros naturales  (Leído 1557 veces)

badyalberto

  • Miembro activo
  • **
  • Mensajes: 77
    • Ver Perfil
Programa de numeros naturales
« en: Domingo 23 de Noviembre de 2008, 17:48 »
0
Tengo q hacer un programa que me sume todos los numeros naturales menores de 1000 que cumplan esta condicion:

La suma de las unidades mas las centenas es la mitad de les decenes. Ejemplo: 183 cumple la condicion. Indica a mas a mas de la suma total, quales son los numeros que cumplen esta condicion.


Código: Text
  1.  
  2. #include<stdio.h>
  3.  
  4. main()
  5. {
  6.       int num,unitat=0,sum=0,decenes=0,centenes=0,sumnum=0,i=0;
  7.      
  8.       while (i<=899)
  9.       {    
  10.             i++;
  11.             num = 1000 - i;
  12.             unitat = num % 10;
  13.             sum = sum + unitat;
  14.             num = num / 10;
  15.             decenes = num % 10;
  16.             decenes = decenes / 2;
  17.             centenes = num /10;
  18.             sum = sum + centenes;
  19.      
  20.  
  21.  
  22.           if ((sum == decenes) && (decenes % 2 == 0))
  23.              
  24.              num = 1000 - i;
  25.              printf("Els numeros son: %d n",num);
  26.              sumnum = sumnum + num;
  27.              
  28.          
  29.          
  30.           }
  31.          
  32.              printf("El resutat total es: %d n",sumnum);
  33.                  
  34. getchar();
  35. getchar();
  36. }
  37.  
  38.  
  39.  

eso es lo q tengo  yo, pero no se pq los numeros que me salen son el 10,11,12 y asi de bajos y se repite tanto la solucion :s

eternity

  • Miembro activo
  • **
  • Mensajes: 78
  • Nacionalidad: ar
    • Ver Perfil
    • http://lameriendadejuan.blogspot.com/
Re: Programa de numeros naturales
« Respuesta #1 en: Domingo 23 de Noviembre de 2008, 20:19 »
0
Código: C
  1. #include <stdio.h>
  2.  
  3. #define TRUE 1
  4. #define FALSE 0
  5.  
  6. typedef struct{
  7.     int numero;
  8.     int unidad;
  9.     int decena;
  10.     int centena;
  11. }tNumero;
  12.  
  13. tNumero descompone(int x){
  14.     int aux;
  15.     tNumero n;
  16.  
  17.     n.numero = x;
  18.     n.centena = x / 100;
  19.     aux = x % 100;
  20.     n.decena = aux / 10;
  21.     aux = x % 10;
  22.     n.unidad = aux;
  23.        
  24.     return n;
  25. }
  26.  
  27. int analiza(tNumero n){
  28.     int resultado;
  29.  
  30.     resultado = (n.centena + n.unidad)*2;
  31.     if (resultado == n.decena)
  32.         return TRUE;
  33.     return FALSE;
  34. }
  35.  
  36. int main(void){
  37.     int numero;
  38.     tNumero n;
  39.    
  40.     for (numero=1; numero<1000; numero++){
  41.         n=descompone(numero);
  42.  
  43.         if (analiza(n))
  44.             printf("%d cumple la condicion!n",n.numero);
  45.     }   
  46.    
  47.     return 0;
  48. }
  49.  

bueno ahi esta la solucion, te estabas equivocando en la comparacion, lo hice modular espero que lo entiendas cualquiercosa estoy por aqui!

nota: solo imprimo los numero del 1 al 999 que SI cumplen la condicion!

suerte  :beer:


badyalberto

  • Miembro activo
  • **
  • Mensajes: 77
    • Ver Perfil
Re: Programa de numeros naturales
« Respuesta #2 en: Domingo 23 de Noviembre de 2008, 20:42 »
0
la verdad es q asi modular no lo entiendo xDD

eternity

  • Miembro activo
  • **
  • Mensajes: 78
  • Nacionalidad: ar
    • Ver Perfil
    • http://lameriendadejuan.blogspot.com/
Re: Programa de numeros naturales
« Respuesta #3 en: Domingo 23 de Noviembre de 2008, 21:05 »
0
Código: C
  1. #include <stdio.h>
  2.  
  3. typedef struct{
  4.     int numero;
  5.     int unidad;
  6.     int decena;
  7.     int centena;
  8. }tNumero;
  9.  
  10. int main(void){
  11.     int numero, resultado, aux;
  12.     tNumero n;
  13.    
  14.     for (numero=1; numero<1000; numero++){
  15.         n.numero = numero;
  16.         n.centena = numero / 100;
  17.         aux = numero % 100;
  18.         n.decena = aux / 10;
  19.         aux = numero % 10;
  20.         n.unidad = aux;
  21.        
  22.         resultado = (n.centena + n.unidad)*2;
  23.        
  24.         if (resultado == n.decena)
  25.             printf("%d cumple la condicion!n",n.numero);
  26.     }
  27.     return 0;
  28. }
  29.  

bueno como veras incluso es mas corto sin modular, pero buenoo... espero que asi lo entiendas!
 :good:


badyalberto

  • Miembro activo
  • **
  • Mensajes: 77
    • Ver Perfil
Re: Programa de numeros naturales
« Respuesta #4 en: Domingo 23 de Noviembre de 2008, 21:46 »
0
Editado, vale ya lo e entendido xD
« última modificación: Domingo 23 de Noviembre de 2008, 21:55 por badyalberto »

eternity

  • Miembro activo
  • **
  • Mensajes: 78
  • Nacionalidad: ar
    • Ver Perfil
    • http://lameriendadejuan.blogspot.com/
Re: Programa de numeros naturales
« Respuesta #5 en: Domingo 23 de Noviembre de 2008, 21:51 »
0
uh estamos en problemas, se nota que no hace mucho que programas, en C uno puede generar sus propios tipos de datos, en este caso yo genere el mio, tNumero, que es un registro con el numero y su descomposicion, y tNumero n, es la declaracion de una variable n del tipo tNumero, igual ahora te lo paso legible para tus conocimientos!

Código: C
  1. #include <stdio.h>
  2.  
  3. int main(void){
  4.     int numero, unidad, decena, centena, resultado, aux;
  5.    
  6.     for (numero=1; numero<1000; numero++){
  7.         centena = numero / 100;
  8.         aux = numero % 100;
  9.         decena = aux / 10;
  10.         aux = numero % 10;
  11.         unidad = aux;
  12.        
  13.         resultado = (centena + unidad)*2;
  14.        
  15.         if (resultado == decena)
  16.             printf("%d cumple la condicion!n",numero);
  17.     }
  18.     return 0;
  19. }
  20.  

ahora si? despues te falta poner la suma de sus cifras pero te la dejo a vos!
 :good: