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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 21, средняя оценка - 4.76
Ален
0 / 0 / 0
Регистрация: 21.06.2010
Сообщений: 10
#1

Даны три действительных числа: a, b, c. Проверьте, выполняется ли равенство a + b = c - C++

20.08.2010, 20:26. Просмотров 3064. Ответов 16
Метки нет (Все метки)

Даны три действительных числа: a, b, c. Проверьте, выполняется ли равенство a + b = c . Если равенство выполняется, выведите YES, если не выполняется, выведите NO.

Числа a, b, c – действительные, положительные, не превосходят 10 и заданы не более, чем с 7 знаками после точки.


Вариант простой проверки двух double переменных не прохдит
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.08.2010, 20:26
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Даны три действительных числа: a, b, c. Проверьте, выполняется ли равенство a + b = c (C++):

Даны три действительных числа: a, b, c. Проверьте, выполняется ли равенство a+b=c - C++
Здравствуйте. Нужно выполнить задачку. Даны три действительных числа: a, b, c. Проверьте, выполняется ли равенство a+b=c. ...

Даны три действительных числа - C++
три действительных числа а, b, с. Определить, являются ли они последовательными членами арифметической последовательности.

Даны три действительных числа a, b, c. Найти наибольшее из них - C++
Даны три действительных числа a, b, c. Найти наибольшее из них

Даны три действительных числа a, b, c. Найти наибольшее из них - C++
Даны три действительных числа a, b, c. Найти наибольшее из них!

Даны три действительных числа, выбрать из них те, которые принадлежат интервалу от 1 до 3 - C++
Даны три действительных числа, выбрать из них то которые принадлежат интервалу от 1 до 3. Программа: Program Pawel; Var ...

Даны три действительных числа a, b, c. Возвести в квадрат те из них, значения которых положительные - C++
Даны три действительных числа a, b, c. Возвести в квадрат те из них, значения которых положительные (результат обозначить соответственно...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
easybudda
Модератор
Эксперт CЭксперт С++
9632 / 5580 / 948
Регистрация: 25.07.2009
Сообщений: 10,714
20.08.2010, 20:39 #2
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <stdio.h>
 
int main(void){
    int a, b, c;
    printf("A = ");
    scanf("%d", &a);
    printf("B = ");
    scanf("%d", &b);
    printf("C = ");
    scanf("%d", &c);
    printf("A + B = C ? -> %s\n", ( a + b == c ) ? "YES" : "NO");
    
    return 0;
}
0
iama
1250 / 975 / 49
Регистрация: 30.07.2010
Сообщений: 5,297
20.08.2010, 20:44 #3
Цитата Сообщение от Ален Посмотреть сообщение
Вариант простой проверки двух double переменных не прохдит
как это понимать?
0
ForEveR
В астрале
Эксперт С++
7972 / 4734 / 321
Регистрация: 24.06.2010
Сообщений: 10,542
Завершенные тесты: 3
21.08.2010, 00:23 #4
Ален, Вдогонку.

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
#include <iostream>
 
template<class T>
bool sum(T a, T b, T c)
{
   if((a+b)==c)
      return 1;
   else
      return 0;
}
 
int main()
{
   double a, b, c;
   std::cout<<"Enter a: ";
   std::cin>>a;
   std::cout<<"Enter b: ";
   std::cin>>b;
   std::cout<<"Enter c: ";
   std::cin>>c;
   bool res=sum(a,b,c);
   if(res==1)
      std::cout<<"Sum of a and b is equal to c\n";
   else
      std::cout<<"Sum of a and b is not equal to c\n";
   return 0;
}
0
CyBOSSeR
Эксперт C++
2303 / 1673 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
21.08.2010, 00:32 #5
Цитата Сообщение от Lavroff Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
template<class T>
bool sum(T a, T b, T c)
{
* *if((a+b)==c)
* * * return 1;
* *else
* * * return 0;
}
Может все таки:
C++
1
2
3
4
template<class T>
bool sum(T a, T b, T c) {
  return a + b == c;
}
1
ForEveR
В астрале
Эксперт С++
7972 / 4734 / 321
Регистрация: 24.06.2010
Сообщений: 10,542
Завершенные тесты: 3
21.08.2010, 00:35 #6
CyBOSSeR, Можно и так. Но мне раньше был бы понятнее первый способ. А разница в трех строчках не всегда критична. Тем не менее спасибо. Более красиво.
0
CyBOSSeR
Эксперт C++
2303 / 1673 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
21.08.2010, 00:41 #7
Lavroff, хотел еще спросить почему ты возвращаещь int (0, 1), если тип результата bool?
Цитата Сообщение от Lavroff Посмотреть сообщение
А разница в трех строчках не всегда критична.
В данном случае разница не только в количестве строк, но еще и в производительности, которой ветвления совсем не способствуют.
1
ForEveR
В астрале
Эксперт С++
7972 / 4734 / 321
Регистрация: 24.06.2010
Сообщений: 10,542
Завершенные тесты: 3
21.08.2010, 00:42 #8
CyBOSSeR, Гм. Про возвращение совершенно не суть. Любое ненулевое значение - true. Нулевое - false.
Про производительность да, спасибо. Тем не менее, в таких задачах она обычно не критична)
0
CyBOSSeR
Эксперт C++
2303 / 1673 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
21.08.2010, 00:47 #9
Цитата Сообщение от Lavroff Посмотреть сообщение
Про возвращение совершенно не суть. Любое ненулевое значение - true. Нулевое - false.
Ну не скажи. В каждый раз при возврате значения будет происходить неявное преобразования из int в bool, что опять же не есть хорошо для производительности, да и смотрится странновато.
0
ForEveR
В астрале
Эксперт С++
7972 / 4734 / 321
Регистрация: 24.06.2010
Сообщений: 10,542
Завершенные тесты: 3
21.08.2010, 00:49 #10
CyBOSSeR, Однако в Си ведь так возвращали, потому что просто напросто не было типа bool. Но если учитывать опять же производительность - вы правы.
0
ISergey
21.08.2010, 01:52
  #11

Не по теме:

Lavroff, Одно не пойму.. зачем лишний раз else писать?

C++
1
2
3
4
5
6
7
8
template<class T>
bool sum(T a, T b, T c)
{
   if((a+b)==c)
      return 1; Если условие сработает то в любом случаи будет выход из функции..
  // else
   return 0;
}

1
ForEveR
В астрале
Эксперт С++
7972 / 4734 / 321
Регистрация: 24.06.2010
Сообщений: 10,542
Завершенные тесты: 3
21.08.2010, 01:56 #12
ISergey, А вот с этим да) Протупил. Привык с чего-то так писать оО
0
NightmareZ
1340 / 563 / 37
Регистрация: 31.03.2009
Сообщений: 1,919
21.08.2010, 03:14 #13
Я конечно понимаю, вы молодцы и всё такое. Шаблоны уже пошли, дальше в теме будут паттерны и цитирования Александреску....

А проблема то ТС заключается в том, что ему нужно складывать действительные числа. Более того, он явно указал, что складывает для числа типа double и оно не равно третьему, хотя, должно бы.

Ален, нужно сравнивать не a + b == c, а fabs((a + b) - c) <= x, где x - допустимая величина погрешности, например, 0.001
2
ForEveR
В астрале
Эксперт С++
7972 / 4734 / 321
Регистрация: 24.06.2010
Сообщений: 10,542
Завершенные тесты: 3
21.08.2010, 03:38 #14
NightmareZ, Увлеклись.(
0
Nick Alte
Эксперт С++
1638 / 1010 / 119
Регистрация: 27.09.2009
Сообщений: 1,945
Завершенные тесты: 1
21.08.2010, 18:28 #15
При сравнении результатов действий с числами с плавающей точкой не проверяют абсолютное равенство. Вместо этого проверяют попадание в некоторый доверительный интервал:
C++
1
2
3
4
5
const double epsilon = 1e-8;
inline bool IsEqual(double op1, double op2)
{
    return fabs(op1-op2)<epsilon;
}
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.08.2010, 18:28
Привет! Вот еще темы с ответами:

Даны три действительных числа. Возвести в квадрат те из них, значения которых неотрицательны - C++
Даны три действительных числа. Возвести в квадрат те из них, значения которых неотрицательны.

Даны три действительных числа, выбрать (вывести на экран) те из них, которые пренадлежат интервалу - C++
Задание такое: Даны три действительных числа, выбрать (вывести на экран) те из них, которые пренадлежат интервалу (4,7)... При написании...

Даны три действительных вектора. Найти индекс ближайшего нулевого элемента - C++
Помогите пожалуйста! Дано три вектора А, В, С действительного типа типа.Найти индекс ближайшего нулевого элемента!

Возвести в квадрат три действительных числа - C++
Даны три действительных числа. Возвести в квадрат те из них, значения которых неотрицательны. Только надо на старом компиляторе.


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

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

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