Загрузка...

Скиньте плз консольный калькулятор на С++?

Тема в разделе C/C++ создана пользователем davidcooney 9 июл 2021. 485 просмотров

  1. davidcooney
    davidcooney Автор темы 9 июл 2021 Здесь могла быть ваша реклама 202 18 янв 2019
    Нужен калькулятор, где можно вводить более 2-х чисел.
     
  2. iSkill
    iSkill 9 июл 2021 Новостной портал форума — t.me/lolz_news | 24/7 28 954 3 авг 2017
    Код
    #include <iostream>
    using namespace std;
    int main(){
    int x,y,sum;
    char znak;
    begin:
    cout << "Vvedite deystvie(+,-,*,/): ";
    cin >> znak;
    cout << endl;
    cout << "Vvedite pervoe chislo: ";
    cin >> x;
    cout << endl;
    cout << "Vvedite vtoroe chislo: ";
    cin >> y;
    cout << endl;
    if (znak=='+'){
    sum=x+y;
    cout << "Otvet: " << sum << endl;
    goto begin;
    }
    else if (znak=='-'){
    sum=x-y;
    cout << "Otvet: " << sum << endl;
    goto begin;
    }
    else if (znak=='*'){
    sum=x*y;
    cout << "Otvet: " << sum << endl;
    goto begin;
    }
    else if (znak=='/'){
    sum=x/y;
    cout << "Otvet: " << sum << endl;
    goto begin;
    }
    }
     
    1. Посмотреть предыдущие комментарии (1)
    2. iSkill
      alvkN, код не мой
    3. Z1PP0
      iSkill, smells like govnokod
    4. ReverseFlash
      iSkill, if(x==1 && y==1 && znak == '+')
      sum = 2;
      else if(x==2 && y==1 && znak == '+')
      sum = 3;
    5. Посмотреть следующие комментарии (1)
  3. aufvolk1
    aufvolk1 19 июл 2021 Заблокирован(а) 59 8 ноя 2020
    davidcooney,
    #include <iostream>
    using namespace std;
    int main(){
    int a,b,s;
    char znak;
    cout<<"Введите первое число:"; cin>>a;
    cout<<"Введите знак:"; cin>>znak;
    cout<<"Введите второе число число:";cin>>b;
    bool f = true;
    switch(znak)
    {
    case '+': s = a+b; break;
    case '-': s = a-b; break;
    case '*': s = a*b; break;
    case '/': s = a/b; break;

    }
    if (f) cout<<s;
    }
     
    1. aufvolk1
      aufvolk1, еще можно, добавить сообщение о ошибке неизвестного операнда, типа:
      #include <iostream>
      using namespace std;
      int main(){
      int a,b,s;
      char znak;
      cout<<"Введите первое число:"; cin>>a;
      cout<<"Введите знак:"; cin>>znak;
      cout<<"Введите второе число число:";cin>>b;
      bool f = true;
      switch(znak)
      {
      case '+': s = a+b; break;
      case '-': s = a-b; break;
      case '*': s = a*b; break;
      case '/': s = a/b; break;
      default : cout<<"Неизвестный операнд"; f = 0;
      }
      if (f) cout<<s;
      }
    2. davidcooney Автор темы
      @aufvolk1,мне нужен был калькулятор на более чем 2 числа, а не на 2. Смысл от такого калькулятора, он не интересный
  4. theophrastus
    theophrastus 22 июл 2021 1512 7 мар 2020
    #include <iostream>
    #include <windows.h>
    using namespace std;
    int main()
    {
    system("cls");
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    float a, b;
    char c;
    cout << "Введите 2 числа:" << endl;
    cin >> a >> b;
    cout << "Что сделать с числами? + - * /" << endl;
    cin >> c;
    switch (c)
    {
    case '+': a + b;
    cout << a + b;
    break;
    case '-': a - b;
    cout << a - b;
    break;
    case '*': a * b;
    cout << a * b;
    break;
    case '/': a / b;
    cout << a / b;
    default:
    cout << "Ошибка!" << endl;
    }
    system("pause");
    return 0;
    }
     
    1. пользователь
      theophrastus, да блин ему нужно не на 2 числа, а на сколько угодно, такой калькулятор не решит пример 5+(2*4)
  5. TheWall_inactive2650523
    TheWall_inactive2650523 26 авг 2021 Waiting for the worms to come 52 23 сен 2019
    Код

    #include <iostream>

    using namespace std;

    int main() {
    int num = 0;
    char operatr;
    bool addMore = false;
    double numbers[99];
    do
    {
    cout << "Enter number " << num + 1 << ": \t";
    cin >> numbers[num];
    cout << "Do you want to add one more number? 1 - Yes 0 - No: \t";
    cin >> addMore;
    num++;
    }
    while (addMore);

    cout << "Enter the operation with them: - + * /" << endl;
    cin >> operatr;
    double result = numbers[0];
    switch (operatr)
    {
    case ('-'):
    for (int i = 1; i < num; i++)
    result -= numbers[i];
    cout << "Result: " << result;
    break;
    case ('+'):
    for (int i = 1; i < num; i++)
    result += numbers[i];
    cout << "Result: " << result;
    break;
    case ('*'):
    for (int i = 1; i < num; i++)
    result *= numbers[i];
    cout << "Result: " << result;
    break;
    case ('/'):
    for (int i = 1; i < num; i++)
    result /= numbers[i];
    cout << "Result: " << result;
    break;
    default:
    cout << "Error!";
    break;
    }

    return 1;
    }
    Количество чисел зависит лишь от длины массива numbers
     
    26 авг 2021 Изменено
  6. Zot_inactive4448537
    Zot_inactive4448537 27 авг 2021 Заблокирован(а) 0 27 авг 2021
    C
    #include "stdafx.h"
    #include <iostream>
    #include <iomanip>

    double number();
    double factor();
    double expr();
    double brackets();

    int main()
    {
    double n;

    setlocale(LC_ALL, "Rus");

    std::cout << "Введите выражение: ";

    n = expr();

    std::cout << "Результат вычисления: " << std::setprecision(8) << n << std::endl;

    std::cin.get();
    return 0;
    }

    double number()
    {
    double result = 0.0;
    double k = 10.0;
    int sign = 1;
    char c;

    c = std::cin.get();

    while (c == ' ')
    c = std::cin.get();

    if (c == '-')
    sign = -1;
    else
    std::cin.putback(c);

    while (true)
    {
    c = std::cin.get();

    while (c == ' ')
    c = std::cin.get();

    if (c >= '0' && c <= '9')
    result = result * 10.0 + (c - '0');
    else
    {
    std::cin.putback(c);
    break;
    }
    }

    c = std::cin.get();

    if (c == '.')
    {
    while (true)
    {
    c = std::cin.get();

    if (c >= '0' && c <= '9')
    {
    result += (c - '0') / k;
    k *= 10.0;
    }
    else
    {
    std::cin.putback(c);
    break;
    }
    }
    }
    else
    std::cin.putback(c);

    return sign * result;
    }

    double factor()
    {
    double result = brackets();
    double temp;
    char c;

    while (true)
    {
    c = std::cin.get();

    while (c == ' ')
    c = std::cin.get();

    switch (c)
    {
    case '*':
    result *= brackets();
    break;
    case '/':
    temp = brackets();

    if (temp == 0.0)
    {
    std::cout << "Деление на нуль!" << std::endl;
    exit(-1);
    }

    result /= temp;
    break;
    default:
    std::cin.putback(c);
    return result;
    }
    }
    }

    double expr()
    {
    double result = factor();
    char c;

    while (true)
    {
    c = std::cin.get();

    while (c == ' ')
    c = std::cin.get();

    switch (c)
    {
    case '+':
    result += factor();
    break;
    case '-':
    result -= factor();
    break;
    default:
    std::cin.putback(c);
    return result;
    }
    }
    }

    double brackets()
    {
    double result;
    int sign = 1;
    char c;

    c = std::cin.get();

    while (c == ' ')
    c = std::cin.get();

    if (c == '-')
    {
    sign = -1;
    c = std::cin.get();
    }

    while (c == ' ')
    c = std::cin.get();

    if (c == '(')
    {
    result = sign * expr();

    c = std::cin.get();

    if (c != ')')
    {
    std::cout << "Неверная расстановка скобок!" << std::endl;
    exit(-1);
    }

    return result;
    }
    else
    {
    std::cin.putback(c);

    return sign * number();
    }
    }
     
Top
Загрузка...