Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Калькулятор, Как написать калькулятор? 
:(
    Опции темы
paperstreet7
Дата 6.12.2009, 08:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 48
Регистрация: 4.12.2009
Где: Омск

Репутация: нет
Всего: 1



Приветствую тружеников на поле программирования! У меня такой вопрос (может он глупый, но все же):
Я начал изучать 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 



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

Это сообщение отредактировал(а) bsa - 6.12.2009, 15:42
PM MAIL   Вверх
chip_and_dayl
Дата 6.12.2009, 11:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 603
Регистрация: 22.4.2007
Где: Украина, Киев

Репутация: нет
Всего: 9



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


--------------------
Фсё будет хорошо!!!
PM MAIL Skype   Вверх
bsa
Дата 6.12.2009, 15:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 85
Всего: 196



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

PM   Вверх
stat007
Дата 6.12.2009, 20:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 521
Регистрация: 9.10.2008

Репутация: -2
Всего: -4



Вот так приблизительно должна выглядеть программа:
Код

#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;
}

PM MAIL   Вверх
papochka
Дата 6.12.2009, 21:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 46
Регистрация: 28.10.2009

Репутация: нет
Всего: нет



Код

#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 

Это сообщение отредактировал(а) papochka - 6.12.2009, 21:29
PM MAIL   Вверх
paperstreet7
Дата 7.12.2009, 06:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 48
Регистрация: 4.12.2009
Где: Омск

Репутация: нет
Всего: 1



Цитата(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 Найти цитируемый пост)
Модератор: не забываем пользоваться кнопочкой "Код"

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


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

Это сообщение отредактировал(а) bsa - 7.12.2009, 11:05
PM MAIL   Вверх
Леопольд
Дата 7.12.2009, 10:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 943
Регистрация: 17.6.2009

Репутация: 3
Всего: 13



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

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


--------------------
вопросов больше чем ответов
PM MAIL   Вверх
bsa
Дата 7.12.2009, 11:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 85
Всего: 196



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

PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0552 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.