Помогите найти ошибки в калькуляторе.

Помогите найти ошибки в калькуляторе.

Здравствуйте! У меня не получается найти ошибку в программе. Подскажите мне пожалуйста, буду признателен.

/* telo.h */

#include <iostream>

#include <string>


class Telo {

        public:
        //Установка номера операции
           void set_name (ctd::int oper_name)
       {
         name = oper_name;
       }
                //Получение помера операции
       std::int get_name()
       {
          return name;
       }
            //Установка 2 чисел
           void set_zis (ctd::int zis_A, zis_B)
       {
         zis1 = zis_A;
         zis2 = zis_B;
       }
                //Получение 2 числа
       std::int zis_get_name()
       {
          return zis1;
          return zis2;

       }

       void calculator(ctd::int s) //Условие 
       {

           if (name == 1) 
            std::cout << "+" << std::endl;
       s = zis1 + zis2;
           else if (name == 2)
             std::cout << "-" << std::endl;
       s = zis1 - zis2;
           if (name == 3)
            std::cout << "*" << std::endl;
       s = zis1 * zis2;
           else if (name == 4)
             std::cout << "/" << std::endl;
       s = zis1 / zis2;

           return s;
           }



         private: //Приват
           std::int name;
       std::int zis1, zis2, s;

};
/* calkulator.cpp */
#include <iostream>
#include <string>
#include "telo.h"

int main()
{

      Telo telo;

   std::int name;
   std::int zis1, zis2, s;

   std::cout << "Name: ";
   getline(std::cin, name);

   std::cout << "numbers: ";
   getline(std::cin, zis1);
   getline(std::cin, zis2);

   telo.set_name(name);

   telo.set_zis(zis1);
   telo.set_zis(zis2);


   std::cout << "Otvet :" << s << std::endl;


   return 0;

}

Sparda, зачем вы везде ставите std::? Перед именами типов данных неймспейс совершенно не нужен.

В функции Telo::calculator() у вас внутри условий if выполняется больше одной операции. Ставьте фигурные скобки.

Функции с типом void не должны ничего возвращать. И да, читайте то, что вам говорит компилятор.

Исправил вам синтаксические ошибки и поправил тип возвращаемого значения у функции calculator().

telo.h

/* telo.h */
#ifndef TELO_H_INCLUDED
#define TELO_H_INCLUDED

#include <iostream>
#include <string>

class Telo {
    public:
        //Установка номера операции
       void set_name (int oper_name)
       {
         name = oper_name;
       }
                //Получение помера операции
       int get_name()
       {
          return name;
       }
       //Установка 2 чисел
       void set_zis(int zis_A, int zis_B)
       {
           zis1 = zis_A;
           zis2 = zis_B;
       }

       //Получение 2 числа
       int zis_get_name()
       {
          return zis1;
          return zis2;
       }

       int calculator(int s) //Условие 
       {

           if (name == 1)  {
               std::cout << "+" << std::endl;
               s = zis1 + zis2;
           } else if (name == 2) {
               std::cout << "-" << std::endl;
               s = zis1 - zis2;
           }
           if (name == 3) {
               std::cout << "*" << std::endl;
               s = zis1 * zis2;
           } else if (name == 4) {
               std::cout << "/" << std::endl;
               s = zis1 / zis2;
           }

           return s;
       }

     private: //Приват
        int name;
        int zis1, zis2, s;

};

#endif // TELO_H_INCLUDED

calculator.cpp

/* calkulator.cpp */
#include <iostream>
#include <string>
#include "telo.h"

int main()
{

   Telo telo;

   int name;
   int zis1, zis2, s;

   std::cout << "Name: ";
   std::cin >> name;

   std::cout << "numbers: ";
   std::cin >> zis1;
   std::cin >> zis2;

   telo.set_name(name);
   telo.set_zis(zis1, zis2);
   s = telo.calculator(s);

   std::cout << "Otvet: " << s << std::endl;


   return 0;

}

P.S. Исходный код должен быть отделен от края 4-мя пробелами. В панели редактора постов есть нужная кнопка для выделения исходников.

Внимание! Это довольно старый топик, посты в него не попадут в новые, и их никто не увидит. Пишите пост, если хотите просто дополнить топик, а чтобы задать новый вопрос — начните новый.

Ответить

Вы можете использовать разметку markdown для оформления комментариев и постов. Используйте функцию предпросмотра для проверки корректности разметки.

Пожалуйста, оформляйте исходный код в соответствии с правилами разметки. Для того, чтобы вставить код в комментарий, скопируйте его в текстовое поле ниже, после чего выделите то, что скопировали и нажмите кнопку «код» в панели инструментов. Иначе ваш код может принять нечитаемый вид.

Либо производите оформление кода вручную, следующим образом:

``` #include <iostream> using namespace std; int main() { // ... } ```

Предпросмотр сообщения

Ваше сообщение пусто.