Dev - C++ - programa.exe dejó de funcionar

   
Vista:

programa.exe dejó de funcionar

Publicado por rosai (2 intervenciones) el 02/01/2015 19:59:03
Hola, estoy intentando hacer un programa, el problema es que no se ejecuta, aunque sí compila. No se qué le pasa, porque sé que normalmente este error se debe a que falte algún "&", pero lo he comprobado y no falta ninguno!

El programa debe comprobar que el número que se introduce es un número de Harshad, es decir, que es divisible entre la suma de sus dígitos (algunos ejemplos: 10, 12, 18, 20, 24, 27, 30, 36, 40).

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
 #include<stdio.h>
main()
{
int numero, aux1, aux2, sumadig=0;
int res=-1; // Vale 1 si numero es harshad, 0 si No lo es
 
printf("Introduzca un numero natural: ");
scanf("%d", &numero);
 
numero=aux1;
while(aux1>=1)
{
	aux2=aux1%10;
	sumadig=sumadig+aux2;
	aux1=aux1/10;
}
if (numero%sumadig==0)
	res=1;
else
	res=0;
 
if(res==1)
printf("\nEl numero %d es un numero Harshad\n",numero);
if(res==0)
printf("\nEl numero %d NO es un numero Harshad\n",numero);
}

Muchas gracias por vuestra ayuda!!!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

programa.exe dejó de funcionar

Publicado por Thanatos (73 intervenciones) el 03/01/2015 03:48:42
La variable aux1 está declarada, pero no ha sido inicializada, sin embargo, le estás asignando el valor de aux1 a numero en esta linea:

1
numero=aux1;

Al hacer eso, le estás asignando a numero un valor desconocido.

Tu código con algunas modificaciones:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#include <stdio.h>
 
int main(void) {
    int numero = 0;
    int digito = 0;
    int sumaDig = 0;
    int esHarshad = 0; // Vale 1 si numero es harshad, 0 si No lo es
 
    printf("Introduzca un numero natural: ");
    scanf("%d", &numero);
 
    int aux = numero;
    while(aux >= 1) {
        digito = aux % 10;
        sumaDig = sumaDig + digito;
        aux = aux / 10;
    }
 
    if (sumaDig != 0) {
        if (numero % sumaDig == 0)
            esHarshad = 1;
        else
            esHarshad = 0;
    }
 
    if(esHarshad == 1)
        printf("\nEl numero %d es un numero Harshad\n",numero);
    if(esHarshad == 0)
        printf("\nEl numero %d NO es un numero Harshad\n",numero);
 
    return 0;
}

Saludos...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar

programa.exe dejó de funcionar

Publicado por rosai (2 intervenciones) el 03/01/2015 11:55:48
Muchas gracias!!! No conseguía encontrar el error. Lo he puesto al revés (que era lo que quería hacer) y todo funciona perfectamente.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar