1

Тема: допоможіть (С++(cin i cout))

ось завдання

Прихований текст

⦁    Створити програму «Калькулятор» (+, -, *, /, %). Програма повинна складатися лише з директив препроцесора, макросів і назв змінних(на вибір). Можна використати наступні макроси або визначити свої:

ось код

Прихований текст
#define namespace using namespace std;
#define plus +
#define minus - 
#define multiply *
#define divide /
#define modulo %
#define assign =
#define print cout<<
#define enter cin>>
#define endline endl 
#define calc void main()
#define stop system("pause");
#define number int
#define first "Enter first number: "
#define second "Enter second number: " 
#define sign "Enter sign: "
#define result "Result: "
#define start { 
#define end }
#define open (
#define close ) 
#define coma ,
#define semicolon ; 
#define ret return
#define set setlocale(LC_ALL,"ru");
#define begin [
#define rbegin ]
#define numfive 5
#define open1 <<
#define text cout<<"1-додавання\n2-вiднiмання\n3-дiлення\n4-множення\n5-дiлення_по_модулю\nВведiть_вибiр:";
#include <iostream>
namespace
    number sum open number a coma number b close semicolon
    number ris open number a coma number b close semicolon
    number dil open number a coma number b close semicolon
    number mn open number a coma number b close semicolon
    number dilm open number a coma number b close semicolon
    calc start
    set
    number open *p begin numfive rbegin close open number coma number close assign start sum coma ris coma dil coma mn coma dilm end semicolon
    number choice coma a coma b semicolon
    text
    enter choice semicolon
    print first semicolon
    enter a semicolon
    print second semicolon
    enter b semicolon
    number c assign p begin choice - 1 rbegin open a coma b close semicolon
    print result semicolon
    print c semicolon
    stop
    end
    number sum open number a coma number b close start
    ret a plus b semicolon
    end
    number ris open number a coma number b close start
    ret a minus b semicolon
    end
    number dil open number a coma number b close start
    ret a divide b semicolon
    end
    number mn open number a coma number b close start
    ret a multiply b semicolon
    end
    number dilm open number a coma number b close start
    ret a modulo b semicolon
    end

і без цих дій не буде працювати
Navigate to C/C++ -> Preprocessor.

Select Preprocessor Definitions and add

_XKEYCHECK_H;
завжди коли пишу сін або сіаут появляється помилка ідентифікатор сін(або сіаут) не визначено але якщо пишу

std::cin >>

то помилка
namespace "std" не містить члена "cin"

2

Re: допоможіть (С++(cin i cout))

namespace - ключове слово. Не треба перевизначати ключові слова.
Ну і загальна практика - писати назви макросів великими літерами; це дозволяє одразу бачити, що тут може відбуватися не зовсім те, що написано.

Подякували: leofun01, Parsifal2

3

Re: допоможіть (С++(cin i cout))

Крім того, ви просто тупо переклали код на свою "мову макросів". А можна ж було багато чого спростити.

Подякували: leofun01, Parsifal2

4

Re: допоможіть (С++(cin i cout))

тепер при сін або сіаут помилка
це обявленя не містить класс зберігання або спеціфікатор типу

5

Re: допоможіть (С++(cin i cout))

koala написав:

Крім того, ви просто тупо переклали код на свою "мову макросів". А можна ж було багато чого спростити.

як спростити?

6 Востаннє редагувалося Parsifal (14.11.2018 15:52:51)

Re: допоможіть (С++(cin i cout))

Дякую Коало після переведення всіх 1 букв 1 з маленької в велику все запрацювало добре

Подякували: koala1

7 Востаннє редагувалося koala (14.11.2018 16:01:25)

Re: допоможіть (С++(cin i cout))

#define OPERATION_HEADER(name) int name (int a, int b)
#define OPERATION_BODY(operator) { return a operator b; }
...
//рядки 33-37 скорочуються до 
OPERATION_HEADER open sum close semicolon
//і т.д.
...
//рядки 53-67 - до
OPERATION_HEADER open sum close OPERATION_BODY open plus close
//і т.д.

А з лямбдами - так узагалі :)

Подякували: Parsifal1

8

Re: допоможіть (С++(cin i cout))

лямбд я ще не вчив

9

Re: допоможіть (С++(cin i cout))

тут достатньо буде

    typedef int (*op)(int,int); //це замість проголошення всіх заголовків
    op opers[2] = {[](int a,int b){return a+b;},[](int a,int b){return a*b;},...}; //а це замість масива і функцій

Звісно, все можна загнати у відовідні макроси.

Подякували: leofun01, Parsifal2