为什么这个TAD返回0.0000而不是涉及的函数的结果?

时间:2014-11-26 03:27:09

标签: c++

为了通过考试,我编写了这个小程序。它涉及一种名为C +的语言中的抽象类型数据,它是C ++的有限版本。它在我的大学中使用,以提供一种有助于学习和纠正的小语言,没有C ++那么多的可能性。

#include <stdio.h>


//Definimos una estructura, casi una clase, que contiene lo siguiente
typedef struct Calculadora
{
    //procesos
    float Sumar(float a, float b);
    float Restar(float a, float b);

  //variables

  private:

    float a;
    float b;
    float resultado;

};
// Fin de declaración de la estructura
// Declaración de los tipos de datos de la estructura

float Calculadora::Sumar(float a, float b)  // Así declaramos las funciones de una estructura
{

    resultado = a + b;
    return (resultado);
}

float Calculadora::Restar(float a, float b)  // Así declaramos las funciones de una estructura
{

    resultado = a - b;
    return (resultado);
}

// FIN DE LA DECLARACION DE TIPOS DE DATOS Y FUNCIONES DE LA ESTRUCTURA



int main()
{
float resultado,a,b;

printf("Introduce aquí los valores de la primera variable");
scanf("%f",&a);
printf("Introduce aquí los valores de la segunda variable");
scanf("%f",&b);

   Calculadora cal;
   cal.Sumar(a,b);

   printf("El resultado es %f", resultado);
}

但是,结果总是0.00000这不是该计划的目标。对这段代码有什么不妥的想法?

3 个答案:

答案 0 :(得分:2)

您正打印出函数resultado中未初始化的本地变量main()

您可能想要做的是使用成员函数打印Calculadora中的成员变量

cal.Sumar(a,b);的结果被丢弃,在这种情况下,如果要存储结果,必须将结果分配给main函数中的局部变量。

答案 1 :(得分:0)

float Calculadora::Sumar(float a, float b) { ...

表示该函数返回一个值,但您用:

调用它
cal.Sumar(a,b);

有效(假设你的C+-语言就像C)丢弃结果。

你应该存储结果将其打印出来:

resultado = cal.Sumar(a,b);

答案 2 :(得分:0)

当然,解决方案很明显(只有当有人指出代码中存在愚蠢的错误时)。

resultado = calc.Sumar(a,b);

谢谢!