Форум программистов, компьютерный форум CyberForum.ru

Калькулятор с функциями - C++

Восстановить пароль Регистрация
 
grobnar
2 / 0 / 0
Регистрация: 10.10.2010
Сообщений: 80
21.10.2012, 17:48     Калькулятор с функциями #1
Задали написать калькулятор,действия объединить функции,прописать ошибку при делении на 0,пока не нажму клавишу,программа не заканчивалась(цикличность):
написал вот так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
#include <iostream>
#include <vcl.h>
using namespace std;
double summa(double,double);
double raznost(double,double);
double umnoj(double,double);
double delenie(double,double);
int main(int argc, char* argv[])
{    double arg1;
     double arg2;
     char arg3;
     do{
cout << "Enter first argument : " << endl;
cin >> arg1;
cout << "Enter second argument : " << endl;
cin >> arg2;
cout << "Enter operation : " << endl;
cin >> arg3;
switch (arg3)
{
case '+':
cout << " Summa ravna : " << summa(arg1,arg2) << endl;break;
case '-':
cout << "Raznost ravna : " << raznost(arg1,arg2) << endl;break;
case '*':
cout << "Proizvedenie ravno : " << umnoj(arg1,arg2) << endl;break;
case '/':
if (arg2==0){
cout << "ATTENCIAN!DEVIDE BY ZERO WAS FOUND!CLOSE THIS PROGRAMM NOW" << endl;
}
else{
cout << "Chastnoe ravno : " << delenie(arg1,arg2) << endl;break;}
}
}while (arg3 != 'i') return 0;
 
}
/////////
double summa(double arg1,double arg2)
{
double summa0;
summa0 = arg1 + arg2;
return summa0;
}
double raznost(double arg1,double arg2)
{
double raznost0;
raznost0 = arg1 - arg2;
return raznost0;
}
double umnoj(double arg1,double arg2)
{
double umnoj0;
umnoj0 = arg1 * arg2;
return umnoj0;
}
double delenie(double arg1,double arg2)
{
double delen0;
delen0 = arg1 / arg2;
return delen0;
}
1.Понимаю,что таких калькуляторов уже много сделали
2.Сделал условие деления на 0,но программа вылетает и не хочет производить операцию /
3.Проверьте правильность кода.
Спасибо
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.10.2012, 17:48     Калькулятор с функциями
Посмотрите здесь:

C++ Непонятки с функциями
C++ Калькулятор с инженерными функциями
C++ Работа с функциями..!
Работа с функциями C++
Работа с функциями C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
v.a.l.i.d
 Аватар для v.a.l.i.d
412 / 377 / 10
Регистрация: 21.09.2012
Сообщений: 913
21.10.2012, 19:06     Калькулятор с функциями #2
может быть проверку деления на 0 сделать в самой функции? и тогда не нужно постоянно об этом думать
grobnar
2 / 0 / 0
Регистрация: 10.10.2010
Сообщений: 80
21.10.2012, 19:21  [ТС]     Калькулятор с функциями #3
всё правильно вы написали.У меня она написана,но работает криво,может быть,из-за какого-то элемента в проге.Подскажите как написать правильно.Спасибо
v.a.l.i.d
 Аватар для v.a.l.i.d
412 / 377 / 10
Регистрация: 21.09.2012
Сообщений: 913
21.10.2012, 20:10     Калькулятор с функциями #4
Цитата Сообщение от grobnar Посмотреть сообщение
if (arg2==0){
cout << "ATTENCIAN!DEVIDE BY ZERO WAS FOUND!CLOSE THIS PROGRAMM NOW" << endl;
}
где то видел что числа с десятичной точкой так нельзя сравнивать с нулем. может в этом ошибка?
C++
1
2
3
4
if (fabs(arg2) <= 0.00000001)
{
cout << "ATTENCIAN!DEVIDE BY ZERO WAS FOUND!CLOSE THIS PROGRAMM NOW" << endl;
}
ExpressS
 Аватар для ExpressS
5 / 8 / 0
Регистрация: 30.07.2012
Сообщений: 235
21.10.2012, 20:12     Калькулятор с функциями #5
у меня вообще не запустилась
StanislavUA
 Аватар для StanislavUA
44 / 44 / 3
Регистрация: 27.04.2011
Сообщений: 163
21.10.2012, 20:16     Калькулятор с функциями #6
все работает, только тут
Цитата Сообщение от grobnar Посмотреть сообщение
while (arg3 != 'i') return 0;
после while точку с запятой забыли поставить
ExpressS
 Аватар для ExpressS
5 / 8 / 0
Регистрация: 30.07.2012
Сообщений: 235
21.10.2012, 20:25     Калькулятор с функциями #7
заработало
grobnar
2 / 0 / 0
Регистрация: 10.10.2010
Сообщений: 80
21.10.2012, 22:39  [ТС]     Калькулятор с функциями #8
А что здесь даёт fabs перед double числом?
v.a.l.i.d
 Аватар для v.a.l.i.d
412 / 377 / 10
Регистрация: 21.09.2012
Сообщений: 913
21.10.2012, 22:43     Калькулятор с функциями #9
Цитата Сообщение от grobnar Посмотреть сообщение
А что здесь даёт fabs перед double числом?
модуль. а то это число может быть и меньше нуля
grobnar
2 / 0 / 0
Регистрация: 10.10.2010
Сообщений: 80
21.10.2012, 22:45  [ТС]     Калькулятор с функциями #10
у меня же программа только целые числа,не вещественные может воспринимать.Если меньше 0,то согласен с вами.В остальном проблем или недоработок нет в программе?
v.a.l.i.d
 Аватар для v.a.l.i.d
412 / 377 / 10
Регистрация: 21.09.2012
Сообщений: 913
21.10.2012, 22:50     Калькулятор с функциями #11
вроде все нормально. вот только можно все эти функции который складывают, вычитают, умножают и делят, их можно сократить. немного покороче будут
C++
1
2
3
4
double summa(double arg1,double arg2)
{
   return arg1 + arg2;
}
grobnar
2 / 0 / 0
Регистрация: 10.10.2010
Сообщений: 80
21.10.2012, 22:54  [ТС]     Калькулятор с функциями #12
Спасибо.А скорость выполнения функции изменится по сравнению с объявлением переменной,занесением в неё результата,вывода этой переменной?
v.a.l.i.d
 Аватар для v.a.l.i.d
412 / 377 / 10
Регистрация: 21.09.2012
Сообщений: 913
21.10.2012, 23:02     Калькулятор с функциями #13
наверно немного побыстрее будет работать. хотя точно не знаю
grobnar
2 / 0 / 0
Регистрация: 10.10.2010
Сообщений: 80
21.10.2012, 23:15  [ТС]     Калькулятор с функциями #14
Спасибо.учту на будущее
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.10.2012, 03:50     Калькулятор с функциями
Еще ссылки по теме:

Разбираюсь с функциями C++
C++ Калькулятор простой дополнить несколькими функциями
задача с функциями C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
respect_people
Сообщений: n/a
22.10.2012, 03:50     Калькулятор с функциями #15
вот может поможет

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
#include <locale.h>
using namespace std;
int main()
{
  setlocale( 0, "" );
  long dividend, divisor;
  char ch;
  do {
    cout << "Введите делимое: "; cin >> dividend;
    cout << "Введите делитель: " ; cin >> divisor;
    if( divisor == 0 )       // при попытке 
    {                        // деления на ноль
      cout << "Некорректный делитель!\n"; // вывод сообщения
      continue;                           // возврат в начало цикла
    }
    cout << "Частное равно " << dividend / divisor;
    cout << ", остаток равен " << dividend % divisor;
    cout << "\nЕще раз?(y/n): ";
    cin >> ch;
  } while( ch != 'n' );
  return 0;
}
Yandex
Объявления
22.10.2012, 03:50     Калькулятор с функциями
Ответ Создать тему
Опции темы

Текущее время: 20:26. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru