为什么此 TAD 返回 0.0000 而不是所涉及的函数的结果

Why this TAD is returning 0.0000 instead of the result of the functions involved?

本文关键字:函数 结果 TAD 返回 0000 为什么      更新时间:2023-10-16

我编写了这个小程序,以便通过考试。它涉及一种名为 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 这不是程序的目标。知道这段代码可能有什么问题吗?

您正在打印出在函数main()中未初始化的局部变量resultado

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

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

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

结果 = 计算。苏玛(a,b);

谢谢!

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

指示该函数返回一个值,但您可以使用以下命令调用它:

cal.Sumar(a,b);

有效地(假设你的C+-语言像C)扔掉结果。

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

resultado = cal.Sumar(a,b);