Dev - C++ - ¿Por qué aparecen estos numeros extraños cuando muestro un resultado?

   
Vista:
Imágen de perfil de Vikttorly

¿Por qué aparecen estos numeros extraños cuando muestro un resultado?

Publicado por Vikttorly (1 intervención) el 28/05/2015 17:39:36
No se si es un residuo o algo estoy haciendo de mas en mi codigo aqui les dejo la imagen

imagedata

imagedata

Y salen otros numeros extraños.

Aquí mi codigo:

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
33
34
35
36
37
38
39
40
41
42
#include <stdio.h>
#include <stdlib.h>
#include "iostream"
using namespace std;
 
class numero{
   public:
   int num;
   public:
   numero() { num = 0; }
   int DefNum(void){
         if (num > 9999){
            printf("El numero ingresado es mayor a 4 cifras");
         }else if (num <= 9999 && num > 999 ){
            printf("El numero ingresado es de 4 cifras");
         }else if (num <= 999 && num > 99){
            printf("El numero ingresado es de 3 cifras");
         }else if (num <= 99 && num > 9){
            printf("El numero ingresado es de 2 cifras");
         }else if (num < 10){
            printf("El numero ingresado es de 1 cifra");
         }
        }
   void leercirculo(void)
        {
         cout <<"Ingresar el numero a evaluar:";
         cin >> num;
        }
};
 
class resultado: public numero{
public:
    void calcular(void){
    leercirculo();
    cout << DefNum();
    }
};
 
int main(){
    resultado numevaluado;
    numevaluado.calcular();
}
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
Imágen de perfil de vangodp

¿Por qué aparecen estos numeros extraños cuando muestro un resultado?

Publicado por vangodp (287 intervenciones) el 28/05/2015 21:27:18
en tu programa justo dentro de la clase resultado, en la función calcular haces cout << DefNum();. Ahora bien... centremonos en esa funcion DefNum(). Sabemos que es heredada de la clase numero, que es publica, ¡Y! lo más importante es que retorna un entero... Ahhhh! ¿¿Donde esta ese return algo???? Ese es el error.

Como ya imprimes dentro de la propria funcion no necesitas hacer cout << DefNum();, con un simple DefNum(); bastaria. Por otro lado si deseas imprimir el valor de retorno, entonces las cosas cambian, porque justo olvidaste de retornar algo para que cout lo imprima.

En resumen has declarado DefNum(); como int pero no retornas nada, ese es el error. Si no va retornar nada no tiene sentido que llames a DefNum(); dentro de cout.

tienes 2 opciones:

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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
#include <stdio.h>
 
#include <stdlib.h>
#include "iostream"
 
 
using namespace std;
 
 
 
class numero {
 
public:
 
    int num;
 
public:
 
    numero() { num = 0; }
 
    int DefNum ( void ) {
 
        if ( num > 9999 ) {
 
            printf ( "El numero ingresado es mayor a 4 cifras" );
 
        } else if ( num <= 9999 && num > 999 ) {
 
            printf ( "El numero ingresado es de 4 cifras" );
 
        } else if ( num <= 999 && num > 99 ) {
 
            printf ( "El numero ingresado es de 3 cifras" );
 
        } else if ( num <= 99 && num > 9 ) {
 
            printf ( "El numero ingresado es de 2 cifras" );
 
        } else if ( num < 10 ) {
 
            printf ( "El numero ingresado es de 1 cifra" );
 
        }
        cout << endl;
        return num;
    }
 
    void leercirculo ( void ){
 
        cout << "Ingresar el numero a evaluar:";
 
        cin >> num;
 
    }
 
};
 
 
 
class resultado: public numero {
 
public:
 
    void calcular ( void ) {
 
        leercirculo();
 
        cout << DefNum();
 
    }
 
};
 
 
 
int main() {
 
    resultado numevaluado;
 
    numevaluado.calcular();
 
}

y 2º
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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
#include <stdio.h>
 
#include <stdlib.h>
#include "iostream"
 
 
using namespace std;
 
 
 
class numero {
 
public:
 
    int num;
 
public:
 
    numero() { num = 0; }
 
    DefNum ( void ) {
 
        if ( num > 9999 ) {
 
            printf ( "El numero ingresado es mayor a 4 cifras" );
 
        } else if ( num <= 9999 && num > 999 ) {
 
            printf ( "El numero ingresado es de 4 cifras" );
 
        } else if ( num <= 999 && num > 99 ) {
 
            printf ( "El numero ingresado es de 3 cifras" );
 
        } else if ( num <= 99 && num > 9 ) {
 
            printf ( "El numero ingresado es de 2 cifras" );
 
        } else if ( num < 10 ) {
 
            printf ( "El numero ingresado es de 1 cifra" );
 
        }
        cout << endl;
    }
 
    void leercirculo ( void ){
 
        cout << "Ingresar el numero a evaluar:";
 
        cin >> num;
 
    }
 
};
 
 
 
class resultado: public numero {
 
public:
 
    void calcular ( void ) {
 
        leercirculo();
 
        DefNum();
 
    }
 
};
 
 
 
int main() {
 
    resultado numevaluado;
 
    numevaluado.calcular();
 
}
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