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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
grobnar
2 / 0 / 0
Регистрация: 10.10.2010
Сообщений: 80
#1

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

21.10.2012, 17:48. Просмотров 733. Ответов 14
Метки нет (Все метки)

Задали написать калькулятор,действия объединить функции,прописать ошибку при делении на 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.Проверьте правильность кода.
Спасибо
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.10.2012, 17:48
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Калькулятор с функциями (C++):

Калькулятор с инженерными функциями - C++
задали задание написать Калькулятор с инженерными функциями на С++ 2006 !!! было бы хорошо еслиб с 0 помогли!!! и с оформлением-правда...

Калькулятор простой дополнить несколькими функциями - C++
Всем доброго времени суток! =) В общем, у меня было задание написать одну цельную программу - калькулятор простой, который выполнял бы...

Простой калькулятор и калькулятор с парсингом - C++
Ребят я совсем не давно только начал изучать сишку, решил написать простенький калькулятор который работает с 2 числами. Возник вопрос, как...

Работа с функциями - C++
Помогите пожалйста))) Очень нужно Задание: Вычислить Z = (X1 + Y1) / (Х2 - Y2), где Х1 и Х2 - корни уравнения 2x2 +x – 4=0; Y1 и Y2 –...

Помогите с функциями - C++
Всем доброго времени суток. В общем нужно написать программу, которая бы выводила на экран среднее арифметическое и геометрическое двух...

Массив с функциями - C++
Должна быть хотя бы одна функция, функция организована так чтоб выполняла обработку любой матрицы, никаких глобальных переменых,матрица...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
v.a.l.i.d
413 / 378 / 10
Регистрация: 21.09.2012
Сообщений: 913
21.10.2012, 19:06 #2
может быть проверку деления на 0 сделать в самой функции? и тогда не нужно постоянно об этом думать
0
grobnar
2 / 0 / 0
Регистрация: 10.10.2010
Сообщений: 80
21.10.2012, 19:21  [ТС] #3
всё правильно вы написали.У меня она написана,но работает криво,может быть,из-за какого-то элемента в проге.Подскажите как написать правильно.Спасибо
0
v.a.l.i.d
413 / 378 / 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;
}
1
ExpressS
5 / 8 / 0
Регистрация: 30.07.2012
Сообщений: 235
21.10.2012, 20:12 #5
у меня вообще не запустилась
0
StanislavUA
44 / 44 / 3
Регистрация: 27.04.2011
Сообщений: 163
21.10.2012, 20:16 #6
все работает, только тут
Цитата Сообщение от grobnar Посмотреть сообщение
while (arg3 != 'i') return 0;
после while точку с запятой забыли поставить
2
ExpressS
5 / 8 / 0
Регистрация: 30.07.2012
Сообщений: 235
21.10.2012, 20:25 #7
заработало
0
grobnar
2 / 0 / 0
Регистрация: 10.10.2010
Сообщений: 80
21.10.2012, 22:39  [ТС] #8
А что здесь даёт fabs перед double числом?
0
v.a.l.i.d
413 / 378 / 10
Регистрация: 21.09.2012
Сообщений: 913
21.10.2012, 22:43 #9
Цитата Сообщение от grobnar Посмотреть сообщение
А что здесь даёт fabs перед double числом?
модуль. а то это число может быть и меньше нуля
0
grobnar
2 / 0 / 0
Регистрация: 10.10.2010
Сообщений: 80
21.10.2012, 22:45  [ТС] #10
у меня же программа только целые числа,не вещественные может воспринимать.Если меньше 0,то согласен с вами.В остальном проблем или недоработок нет в программе?
0
v.a.l.i.d
413 / 378 / 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;
}
1
grobnar
2 / 0 / 0
Регистрация: 10.10.2010
Сообщений: 80
21.10.2012, 22:54  [ТС] #12
Спасибо.А скорость выполнения функции изменится по сравнению с объявлением переменной,занесением в неё результата,вывода этой переменной?
0
v.a.l.i.d
413 / 378 / 10
Регистрация: 21.09.2012
Сообщений: 913
21.10.2012, 23:02 #13
наверно немного побыстрее будет работать. хотя точно не знаю
1
grobnar
2 / 0 / 0
Регистрация: 10.10.2010
Сообщений: 80
21.10.2012, 23:15  [ТС] #14
Спасибо.учту на будущее
0
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;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.10.2012, 03:50
Привет! Вот еще темы с ответами:

2 Задачки с функциями С++ - C++
Кратко говоря: Понятия не имею как это делать, для меня это кучка громких слов. Я с трудом массивы освоил) Прошу разобрать это в код и...

работа с функциями в С++ !! - C++
помогите сделать задачу !нужно найти найбольший общий делитель пятинатуральных чисел !))) очень прошу сделайте кто нибуть !!!! ...

Ошыбка с функциями - C++
Подскажыте в чем ошыбка??? Делаю без функции, все норм!!! #include &lt;stdio.h&gt; #include &lt;conio.h&gt; #include &lt;math.h&gt; void vvod(); ...

задача с функциями - C++
Помогите пожалуйста написать код, никак не могу понять, что нужно делать: При выводе текстов на экран или печатающее устройство часто...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
22.10.2012, 03:50
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru