Загрузка...

Throw off plz console calculator in C ++?

Thread in C/C++ created by davidcooney Jul 9, 2021. 485 views

  1. davidcooney
    davidcooney Topic starter Jul 9, 2021 Здесь могла быть ваша реклама 202 Jan 18, 2019
    Нужен калькулятор, где можно вводить более 2-х чисел.
     
  2. iSkill
    iSkill Jul 9, 2021 Новостной портал форума — t.me/lolz_news | 24/7 28,954 Aug 3, 2017
    Code
    #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. View previous comments (2)
    2. Z1PP0
      iSkill, smells like govnokod
    3. ReverseFlash
      iSkill, if(x==1 && y==1 && znak == '+')
      sum = 2;
      else if(x==2 && y==1 && znak == '+')
      sum = 3;
    4. davidcooney Topic starter
      iSkill, Можно было через switch проверять знаки + я просил на более 3х чисел
  3. aufvolk1
    aufvolk1 Jul 19, 2021 Banned 59 Nov 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 Topic starter
      @aufvolk1,мне нужен был калькулятор на более чем 2 числа, а не на 2. Смысл от такого калькулятора, он не интересный
  4. theophrastus
    theophrastus Jul 22, 2021 1512 Mar 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 Aug 26, 2021 Waiting for the worms to come 52 Sep 23, 2019
    Code

    #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
     
  6. Zot_inactive4448537
    Zot_inactive4448537 Aug 27, 2021 Banned 0 Aug 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
Loading...