Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Для новичков > Калькулятор


Автор: paperstreet7 6.12.2009, 08:21
Приветствую тружеников на поле программирования! У меня такой вопрос (может он глупый, но все же):
Я начал изучать C++ и прочитав несколько страниц из самоучителя решил написать простейший калькулятор, который работает на сложение:
Код
#include <iostream>
int main()
{
  int x;
  int y;
  int nSumma;
  nSumma = x + y;
  std::cout << "Введите первое значение: ";
  std::cin >> x;
  std::cout << "Введите второе значение: ";
  std::cin >> y;
  std::cout << "Результат: " << nSumma << std::endl;
  system("pause");
  return 0;
}

Откопилил нормально, без ошибок. Нажал "RUN", ввел 2 + 2 и получил какую-то длинную цифру. Сдается мне что эта цифра есть предел значения для переменной типа int. Открыл код и переставил формулу nSumma = x + y; после строки std::cin >> y;
Все заработало нормально. Ввел 2 + 2 и получил как это ни парадоксально 4. 
Кто-нибудь может сказать что случилось в первом случае? Просто очень интересно. И еще как сделать так, чтобы все операции (+, -, /, *) можно было делать сразу в одном окне? Благодарю за терпимость. smile 



Модератор: не забываем пользоваться кнопочкой "Код"

Автор: chip_and_dayl 6.12.2009, 11:05
В первом случае ты сразу суммируешь у и х, которые имеют неизвестные значения (т. е. мусор). Во втором случае ты присваиваешь х и у значения и потом уже суммируешь

Автор: bsa 6.12.2009, 15:44
Цитата(paperstreet7 @  6.12.2009,  08:21 Найти цитируемый пост)
 И еще как сделать так, чтобы все операции (+, -, /, *) можно было делать сразу в одном окне?
Почитай про циклы и условия в той книжке.

Автор: stat007 6.12.2009, 20:48
Вот так приблизительно должна выглядеть программа:
Код

#include <iostream>
using namespace std;
int main()
{
  int x;
  int y;
  int nSumma;
  char ch;
  cout<<"Enter 2 numbers: ";
  cin>>x>>ch>>y;               //Вводим значения в формате например: 2 + 2
  switch(ch)
  {
  case '+':
    nSumma=x+y;
    break;
  case '-':
    nSumma=x-y;
    break;
  case '*':
    nSumma=x*y;
    break;
  case '/':
    nSumma=x/y;
    break;
  }
  cout << "Result = " << nSumma << endl;
  system("pause");
  return 0;
}

Автор: papochka 6.12.2009, 21:28
Код

#include <iostream>
int main()
{
  int x;
  int y;
  int nSumma;
  nSumma = x + y; [color=green]//так нельзя[/color]
  std::cout << "Введите первое значение: ";
  std::cin >> x;
  std::cout << "Введите второе значение: ";
  std::cin >> y;
  std::cout << "Результат: " << nSumma << std::endl;
  system("pause");
  return 0;


Код

#include <iostream>
int main()
{
  int x,y,nSumma;
  std::cout << "Введите первое значение: ";
  std::cin >> x;
  std::cout << "Введите второе значение: ";
  std::cin >> y;
  nSumma = x + y;
  std::cout << "Результат: " << nSumma << std::endl;
  system("pause");
  return 0;


Русский язык поддерживатся не будет. Для этого нужно написать setlocale(LC_ALL,"Russian");
А для других подсчётов можно(нужно) использовать switch 

Автор: paperstreet7 7.12.2009, 06:47
Цитата(papochka @  6.12.2009,  21:28 Найти цитируемый пост)
А для других подсчётов можно(нужно) использовать switch 

К сожалению я пока не знаю что такое switch. Но как видно из названия этот switch что-то переключает.
В свою очередь я  вечером все думал как сделать, чтобы можно было выбрать сложение или вычитание и вот что надумал: 

Код
#include <iostream>
int main()
{
    int nPlus, nMinus;
    nMinus = 0;
    int x, y;
    int nResult;
    std::cout << "Enter 0 for subtracting or any other number for adding:  ";
    //то есть     Введите 0 для вычитания или любую другую цифру для сложения
    std::cin >> nPlus;
    //условие – если введенное число больше 0, то слагаем
    //если 0, то вычитаем, ничего оригинальнее в голову пока не пришло
    if (nPlus > nMinus)
    {
              std::cout << "x = ";
              std::cin >> x;
              std::cout << "y = ";
              std::cin >> y;
              nResult = x + y;
              std::cout << "Result is " << nResult << std::endl;
              }
    else
    {
              std::cout << "x = ";
              std::cin >> x;
              std::cout << "y = ";
              std::cin >> y;
              nResult = x - y;
              std::cout << "Result is " << nResult << std::endl;
              }
system("pause");
return 0;
}

Выглядит, конечно, все это глуповато, но я в самоучителе дошел только до использования if и else. Дальше читать не могу (Никаких сил нет). А так охота что-нибудь написать самому. Еще бы добавить туда операции умножения и деления. Тогда было бы уже что-то.

Добавлено @ 06:52
Цитата(bsa @  6.12.2009,  15:44 Найти цитируемый пост)
Почитай про циклы и условия в той книжке.

Спасибо за совет. Обязательно прочту. У меня уже были предположения что надо что-то делать с условиями и циклами.

Добавлено @ 06:56
Цитата(papochka @  6.12.2009,  21:28 Найти цитируемый пост)
Русский язык поддерживатся не будет. Для этого нужно написать setlocale(LC_ALL,"Russian");

Кстати, а в каком месте писать то? В коде что-ли?

Добавлено @ 07:01
Цитата(paperstreet7 @  6.12.2009,  08:21 Найти цитируемый пост)
Модератор: не забываем пользоваться кнопочкой "Код"

Извиняюсь. Не сразу нашел кнопочку. 


Модератор: не забываем пользоваться кнопочкой "Код"

Автор: Леопольд 7.12.2009, 10:05
Цитата(paperstreet7 @  6.12.2009,  08:21 Найти цитируемый пост)
Я начал изучать C++ и прочитав несколько страниц из самоучителя решил написать простейший калькулятор, который работает на сложение:

Всё правильно сделал (с)
Так и надо учить, почитал - попробовал, почитал... Не останавливайся на "попробовал" или "почитал" надолго. Почитаешь ещё, усовершенствуешь...

Автор: bsa 7.12.2009, 11:07
Цитата(Леопольд @  7.12.2009,  10:05 Найти цитируемый пост)
Так и надо учить, почитал - попробовал, почитал...
Только надо пробовать делать используя то, что уже знаешь. Не стоит забегать вперед.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)