Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.85/13: Рейтинг темы: голосов - 13, средняя оценка - 4.85
0 / 0 / 0
Регистрация: 26.11.2012
Сообщений: 22
1

Арифметические операции над числами

26.11.2012, 23:16. Показов 2427. Ответов 20
Метки нет (Все метки)

Доброго вечера.Помогите-помогите,завтра нужно сдать,иначе не видать зачета(
нужно написать программу,которая при запуске:
1.попросит задать 2 числа и оператора,где числа - это переменная типа Double,а оператор-один из знаков(+;-;*; /)
2.Приведет к действию заданную операцию.
В случае ошибки выдаст "Ошибкаблабланеважночто".Примеры:
Вход Выход
1 + 2 Результат: 3.000000

-1--2 Результат: 1.000000

14.4794 *2 Результат: 28.958800

7 / 2 Результат: 3.500000

3.1 / 0 Ошибка:деление на ноль

12/a Ошибка

-7.78 x 1.3 Ошибка

1 Ошибка

Покорнейше благодарю.У меня есть 15 часов.Жду.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
26.11.2012, 23:16
Ответы с готовыми решениями:

Арифметические операции над числами
Пользователь вводит с клавиатуры два целочисленных значения: X и Y. Рассчитать сумму X+Y и...

Арифметические операции с числами
Составьте программу, выводящую на экран текст: Для любых двух чисел вычисляю: 1) сумму...

Для чего нужны арифметические операции над указателями
Столкнулся с таким вот вопросам: Для чего нужны арифметические операции над указателями ? ...

Операции над числами
Здрасьте.Скажите пожалуйста.Есть программа, которая с помощью функции <Rand> в цикле-While, выводит...

__________________
20
22 / 22 / 11
Регистрация: 14.11.2012
Сообщений: 64
26.11.2012, 23:26 2
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

как-то так...
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
 
 #include <iostream>
 #include <conio.h>
 
 using namespace std;
 
int main()
{
    char ch;
    double a,b;
    cout<<"Vvedite chislo a: \n";
    cin>>a;
    cout<<"Vvedite chislo b: \n";
    cin>>b;
     cout<<"Vvedite znak: \n";
     cin>>ch;
     if(ch=='-')cout<<"Rezultat: "<<a-b<<endl;
     if(ch=='+')cout<<"Rezultat: "<<a+b<<endl;
     if(ch=='*')cout<<"Rezultat: "<<a*b<<endl;
     if(ch=='/'&&b!=0)cout<<"Rezultat: "<<a/b<<endl;
     else cout<<"Oshibka: delenie na null!";
     getch();
     return 0;
     }
1
0 / 0 / 0
Регистрация: 26.11.2012
Сообщений: 22
26.11.2012, 23:29  [ТС] 3
_andrew_,
Спасибо огромное,забыл упомянуть,мне нужно это в С..то есть еще проще.А то препод спалит сразу,мы такого не проходили.
0
24 / 11 / 0
Регистрация: 26.11.2012
Сообщений: 110
Записей в блоге: 2
26.11.2012, 23:33 4
ИМХО
а не просче не через if ы а через
C++
1
2
3
4
5
6
7
switch (ch)
{
     case '-' :cout<<"Rezultat: "<<a-b<<endl; break;
     case '+' :cout<<"Rezultat: "<<a+b<<endl; break;
     case '*' :cout<<"Rezultat: "<<a*b<<endl; break;
     case '/'  :cout<<"Rezultat: "<<a/b<<endl; break;
}
Добавлено через 1 минуту
Ну если С то никаких cout а только printf =) сам сможешь вывод принтфами сделать или помочь? =)
0
22 / 22 / 11
Регистрация: 14.11.2012
Сообщений: 64
26.11.2012, 23:34 5
Замени
cout на printf(),
cin на scanf(),
со всеми вытекающими последствиями...
а так же
вместо #include <iostream>
cтавишь #include <stdio.h>
И да поможет тебе google)
0
3327 / 2701 / 732
Регистрация: 25.03.2012
Сообщений: 9,770
Записей в блоге: 1
26.11.2012, 23:35 6
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <stdio.h>
int main(){
  double a, b, c;
  char znak;
  printf("Vvedite vyrazhenije");
  scanf("%f%c%f", &a, &znak, &b);
  switch(znak){
    case '+': c=a+b; break;
    case '-': c=a-b; break;
    case '*': c=a*b; break;
    case '/': c=a/b; break;
    default: c=0; printf("error");
  }
  printf("=%f", c);
  return 0;
}
1
0 / 0 / 0
Регистрация: 26.11.2012
Сообщений: 22
27.11.2012, 02:43  [ТС] 7
MaRKerNSK,
Kuzia domovenok,
_andrew_,
я вас люблю.кот,свитер,борода.
СПА-СИ-БО!

Добавлено через 1 час 41 минуту
Ребята,
а киньте пожалуйста еще одну версию данной проги?
А то мне второй вариант вдруг потребовался...Наподобие того,что прислал
Kuzia domovenok,

Добавлено через 1 час 21 минуту

Добавлено через 31 секунду
Kuzia domovenok,
Ахтунг,задание не выполняется.
прием заявок снова открыт.Дайте кто еще варианты..пожалуйста-пожалуйста.
0
3327 / 2701 / 732
Регистрация: 25.03.2012
Сообщений: 9,770
Записей в блоге: 1
27.11.2012, 02:48 8
%f везде заменить на %lf (строки 14, 6 и ещё раз 6)
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <stdio.h>
int main(){
  double a, b, c;
  char znak;
  printf("Vvedite vyrazhenije");
  scanf("%lf%c%lf", &a, &znak, &b);
  switch(znak){
    case '+': c=a+b; break;
    case '-': c=a-b; break;
    case '*': c=a*b; break;
    case '/': c=a/b; break;
    default: c=0; printf("error");
  }
  printf("=%lf", c);
  return 0;
}
0
0 / 0 / 0
Регистрация: 26.11.2012
Сообщений: 22
27.11.2012, 03:00  [ТС] 9
Дело в том,что препод заметил эту ошибку,сам же ее исправил и сказал,что после этого программа все равно не выполняется,мол,даже 1+2 не считает.А у Вас программа запускается и работает?
0
3327 / 2701 / 732
Регистрация: 25.03.2012
Сообщений: 9,770
Записей в блоге: 1
27.11.2012, 03:27 10
Что я делаю не так?
1
0 / 0 / 0
Регистрация: 26.11.2012
Сообщений: 22
28.11.2012, 02:11  [ТС] 11
моя ошибка.заменил не подумавши кое-что.
Доброй ночи,господа.
спасибо за помощь.

Добавлено через 11 часов 12 минут
Уважаемый Kuzia domovenok,
ответивший преподаватель на этот раз сказал,что все в порядке,но при задании чисел напр. "1 + 2 " программа не работает.То есть пробелы мешают вычислению.посоветовал заменить scanf(%c) при загрузке знака на getchar().
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
> #include <stdio.h>
> int main(){
> double cislo1, cislo2, vysledek;
> char znamenko;
> printf("Zadejte_vyraz" );
> scanf("%lf%c%lf", &cislo1, &znamenko, &cislo2);
> switch(znamenko)
> {
> case '+': vysledek = cislo1+cislo2 ; break;
> case '-': vysledek = cislo1- cislo2; break;
>
> case '*': vysledek = cislo1 * cislo2; break;
> case '/': vysledek = cislo1/cislo2 ; break;
> default: vysledek = 0; printf("error");
> }
> printf("=%lf", vysledek);
> return 0;
> }
Это версия программы,которую я послал.cislo1=a,cislo2=b,vysledek=c,znamenko=знак.Zadejte_vy raz=Введите выражение.Привет из Чехии.Помогите в конечном счете добить эту прогу.

Добавлено через 7 часов 51 минуту
Ребята,осталось совсем мало времени.

Добавлено через 3 часа 30 минут
Лю-ю-юди-и-и...отзовиииитеееесь
0
3327 / 2701 / 732
Регистрация: 25.03.2012
Сообщений: 9,770
Записей в блоге: 1
28.11.2012, 02:31 12
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
//вводить: "число знак число равно"
//пробелы игнорируются
#include "stdafx.h"
#include <stdio.h>
#include <conio.h>
#define EQUAL 61
#define SPACE 32
int main(){
 double cislo1, cislo2, vysledek;
 char znamenko;
 printf("Zadejte_vyraz" );
 char line[20];
 int i=0;
 while ((line[i]=getch())!=EQUAL) {
     putch(line[i]);
     if (line[i]!= SPACE) i++;
 }
 line[i]=0; 
 sscanf(line, "%lf%c%lf", &cislo1, &znamenko, &cislo2);
 switch(znamenko)
 {
   case '+': vysledek = cislo1+cislo2 ; break;
   case '-': vysledek = cislo1- cislo2; break;
   case '*': vysledek = cislo1 * cislo2; break;
   case '/': vysledek = cislo1/cislo2 ; break;
   default: vysledek = 0; printf("error");
 }
 printf("=%lf", vysledek);
 getchar();
 return 0;
}
1
0 / 0 / 0
Регистрация: 26.11.2012
Сообщений: 22
28.11.2012, 23:59  [ТС] 13
Это снова я
ответ препода на присланную версию Kuzia domovenok

Здравствуйте,
1.В задании не сказано,что должен присутствовать знак "=" за выражением.
2.Было бы лучше не использовать #include "stdafx.h" ; #include <conio.h> ;и функции getch() и putch(). Их альтернативы в языке C - getchar() и putchar().
3.Также важно то,чтобы при загрузке программа невыписывала за конец поля line[]. Можно использовать fgets().


Ребята..вопрос снова открыт.
0
0 / 0 / 0
Регистрация: 26.11.2012
Сообщений: 22
30.11.2012, 16:48  [ТС] 14
UP UP UP!!
ПОМОЩИ!
0
0 / 0 / 0
Регистрация: 26.11.2012
Сообщений: 22
03.12.2012, 03:25  [ТС] 15
ЭЭЭЙ,почему молчим все?
0
3327 / 2701 / 732
Регистрация: 25.03.2012
Сообщений: 9,770
Записей в блоге: 1
03.12.2012, 04:42 16
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
#include "stdafx.h"
//вводить: "число знак число равно"
//пробелы игнорируются
#include "stdafx.h"
#include <stdio.h>
#include <conio.h>
#define EQUAL 61
#define SPACE 32
int main(){
 double cislo1, cislo2, vysledek;
 char znamenko;
 printf("Zadejte_vyraz" );
 char line[20];
 char input[20];
 int i=0, j=0;
 gets(input);
 while (input[i]){
     if(input[i]!=SPACE)line[j++]=input[i];
     i++;
 } 
 line[i]=0; 
 sscanf(line, "%lf%c%lf", &cislo1, &znamenko, &cislo2);
 switch(znamenko)
 {
   case '+': vysledek = cislo1+cislo2 ; break;
   case '-': vysledek = cislo1- cislo2; break;
   case '*': vysledek = cislo1 * cislo2; break;
   case '/': vysledek = cislo1/cislo2 ; break;
   default: vysledek = 0; printf("error");
 }
 printf("=%lf", vysledek);
 getchar();
 return 0;
}
1
ForEveR
03.12.2012, 10:26
  #17
 Комментарий модератора 
Перенесено из С++ для начинающих
0
0 / 0 / 0
Регистрация: 26.11.2012
Сообщений: 22
04.12.2012, 02:25  [ТС] 18
Догадайтесь?пришел ответ!но теперь все уже почти правильно...вот что он написал:
-#include "stdafx.h" и #include <conio.h> в программе не нужны и только мешают

-функцию gets() лучше не использовать(почему-http://pubs.opengroup.org/onlinepubs/009695399/functions/gets.html).
Вместо нее лучше использовать fgets()

- Программа не работает при заданиях
"3.1 / 0", "12/a", "-7.78 x 1.3", "1".

Я думаю,это последний бросок.Уважаемый и великопревозношенный мной Kuzia domovenok, позвольте последний раз Вас побеспокоить...
0
3327 / 2701 / 732
Регистрация: 25.03.2012
Сообщений: 9,770
Записей в блоге: 1
04.12.2012, 02:52 19
Цитата Сообщение от marrrow Посмотреть сообщение
- Программа не работает при заданиях
"3.1 / 0", "12/a", "-7.78 x 1.3", "1".
а что она должна делать в каждом из случаев? О проверке деления на ноль речи вообще не шло, например.
0
159 / 159 / 30
Регистрация: 09.11.2012
Сообщений: 1,008
04.12.2012, 03:01 20
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
а что она должна делать в каждом из случаев? О проверке деления на ноль речи вообще не шло, например.
была в самом первом сообщении
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
04.12.2012, 03:01

Заказываю контрольные, курсовые, дипломные работы и диссертации здесь.

Арифметические операции с числами из файла - определить суммарную стоимость всех купленных товаров
Прошу помочь мне в написании программы: Создать программу , которая по текстовому файлу,каждая...

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

Вычислить указанные операции над числами и вывести результат
помогите пожалуйста написать программу

Выполнить арифметические действия над матрицами
Выполнить действия над матрицами Буду очень благодарен.


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

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