C++ неопределенная ошибка символа

Я получаю неопределенную ошибку символа для всех целочисленных и символьных значений. Пожалуйста, помогите мне. int xy а также z не работают, а также значение char функции.

#include <iostream.h>
#include <conio.h>
#include <math.h>
#include <string.h>

class Calculator
{
    public:
    int x;
    int y;
    int z;
    char function;

    void Calculate()
    {
      if(function=='+')
      {z=x+y;}
      else if(function=='-')
      {z=x-y;}
      else if(function=='*')
      {z=x*y;}
      else if(function=='/')
      {z=x/y;}
      else
      {cout<<"Wrong Function!!!";}
    }
};

void main()
{
    clrscr();
    Calculator  working;
    cout<<"Welcome!"<<endl;
    cout<<"Enter your first number:"<<endl;
    cin>>x;
    cout<<"Enter your function:"<<endl;
    cin>>function;
    cout<<"Enter your second number:"<<endl;
    cin>>y;
    working.Calculate();
    cout<<"Your Result is:"<<z<<endl;
    getch();
}

5 ответов

Решение

Вам необходимо передать значения в функцию Calculate. Переменные x, y, z и функция недоступны вне класса, а также вам необходим тип возвращаемого значения для функции, чтобы вы могли получить выходные данные из функции Calculate.

class Calculator
{
public:
int x;
int y;
int z;
char function;

int Calculate(int main_x,int main_y,char main_function)
{
    x= main_x;
    y=main_y;
    function = main_function;
  if(function=='+')
  {z=x+y; return z;}
  else if(function=='-')
  {z=x-y; return z;}
  else if(function=='*')
  {z=x*y; return z;}
  else if(function=='/')
  {z=x/y; return z;}
  else
  {cout<<"Wrong Function!!!"; return 0;}
}
 };

void main()
 {
     clrscr();
   int main_x,main_y,main_z;
    char main_function;

Calculator  working;
cout<<"Welcome!"<<endl;
cout<<"Enter your first number:"<<endl;
cin>>x;
cout<<"Enter your function:"<<endl;
cin>>function;
cout<<"Enter your second number:"<<endl;
cin>>y;
main_z = working.Calculate(main_x,main_y,main_function);
cout<<"Your Result is:"<<main_z<<endl;
getch();
}

Либо использовать, std::cin, std::cout, std::endl или включить пространство имен std,

using namespace std;

Этот код компилируется:

#include <iostream>
#include <math.h>
#include <string.h>

using namespace std;

class Calculator
{
public:
int x,y;
float z;
void add()
{
cin>>x;
cin>>y;
z=x+y;
cout<<"The addition is:"<<z<<endl;
}
void substract()
{
cin>>x;
cin>>y;
z=x-y;
cout<<"The substraction is:"<<z<<endl;
}
void multiply()
{
cin>>x;
cin>>y;
z=x*y;
cout<<"The multiplication is:"<<z<<endl;
}
void divide()
{
cin>>x;
cin>>y;
z=x/y;
cout<<"The division is:"<<z<<endl;
}

};

int main()
{
cout<<"Hello User!"<<endl;
char Name[23];
cout<<"Enter your name:";
cin>>Name;
cout<<"Hy "<<Name<<endl;

cout<<"Calculator:"<<endl;
Calculator maths;

cout<<"Enter two numbers to Add:"<<endl;
maths.add();
cout<<"Enter two numbers to Substract:"<<endl;
maths.substract();
cout<<"Enter two numbers to Multiply:"<<endl;
maths.multiply();
cout<<"Enter two numbers to Divide:"<<endl;
maths.divide();
}

Вам не хватает std:: квалификаторы всякий раз, когда вы используете cin, cout, или же endl, Либо использовать std::cout, std::cin а также std::endl или включить using namespace std; в начале вашего файла.

Ошибка приходит, потому что вы пытаетесь получить доступ к переменной члена класса x, y, z извне в main(), где x, y, z не объявлено.

Для правильного вычисления () x, y, z должны получить правильное значение, в вашем случае эти переменные имеют значение мусора.

Это успешная компиляция версии вашего кода.

#include <iostream>
#include <cmath>
#include <cstring>
using namespace std;

class Calculator
{
public:
  int x;
  int y;
  int z;
  char function;

  void Calculate()
  {
    if(function=='+')
      {z=x+y;}
    else if(function=='-')
      {z=x-y;}
    else if(function=='*')
      {z=x*y;}
    else if(function=='/')
      {z=x/y;}
    else
      {cout<<"Wrong Function!!!"<<endl;}
  }
};

int main()
{

  Calculator  working;
  cout<<"Welcome!"<<endl;
  cout<<"Enter your first number:"<<endl;
  cin>>working.x;
  cout<<"Enter your function:"<<endl;
  cin>>working.function;
  cout<<"Enter your second number:"<<endl;
  cin>>working.y;
  working.Calculate();
  cout<<"Your Result is:"<<working.z<<endl;
  return 0;
}
Другие вопросы по тегам