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

Решение задачи - C++

Восстановить пароль Регистрация
 
razum777
0 / 0 / 0
Регистрация: 15.12.2009
Сообщений: 46
17.12.2012, 12:12     Решение задачи #1
Доброго времени суток!
Очень глупый, уверен, для Вас вопрос, но мне задали задачу, решить пример: (a+b)2-(a2+2ab)/b2
Вот код программы:
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
#include <windows.h>
#include <iostream>
#include <stdio.h>
 
using std::cout;
using std::cin;
using std::endl;
 
int main()
 
{ int a;
float b;
SetConsoleCP(1251); 
    SetConsoleOutputCP(1251);
cout<< "\n Введите a ";
cin>>a;
cout<<"\n Введите b ";
cin>>b;
    cout<<"\n Значение выражения = "<< ((a+b)*(a+b)-(a*a+2*a*b))/(b*b);
cout<<"\n ";
 
 system("PAUSE");
 
    return 0;
}
Программа считает, но результат получается 1.00117, а должен просто 1, в чем ошибка? я не могу понять.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.12.2012, 12:12     Решение задачи
Посмотрите здесь:

Решение задачи C++
Решение задачи C++
Решение задачи c++ C++
C++ Решение задачи
C++ Решение задачи
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Байт
 Аватар для Байт
13973 / 8804 / 1227
Регистрация: 24.12.2010
Сообщений: 15,949
17.12.2012, 12:19     Решение задачи #2
C
1
 double a, b;
В строчке 20 в скобках уверен ?
BumerangSP
 Аватар для BumerangSP
4283 / 1405 / 121
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
17.12.2012, 12:20     Решение задачи #3
У Вас происходит вещественное деление, это нормально. Можно дописать (int) перед выражением (прям в скобках), тогда результат округлится.
razum777
0 / 0 / 0
Регистрация: 15.12.2009
Сообщений: 46
17.12.2012, 13:01  [ТС]     Решение задачи #4
не совсем понял, где нужно написать int, можно поточнее? Пробовал ставить перед выражением, у меня результат получился просто "0"
и еще мне нужно в это выражение поставить а=1000, b=0.0001
BumerangSP
 Аватар для BumerangSP
4283 / 1405 / 121
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
17.12.2012, 13:06     Решение задачи #5
Во-первых, как говорилось выше - скобки неправильно расставлены, во-вторых, почему именно 1?
http://liveworkspace.org/code/39IUQv$4
razum777
0 / 0 / 0
Регистрация: 15.12.2009
Сообщений: 46
17.12.2012, 13:22  [ТС]     Решение задачи #6
так если эти числа поставить в это выражение и посчитать, то получится 1, а тут: -1e+14, что это ваще за число? поясните, пожалуйста.
Kojt
73 / 69 / 2
Регистрация: 19.05.2010
Сообщений: 167
17.12.2012, 14:51     Решение задачи #7
вместо потоков лучше использовать функции форматированного вывода
double a,b;
...
double res = ((a+b)*(a+b)-(a*a+2*a*b))/(b*b);
printf("Результат = %0.3f\n", res);
getch();
BumerangSP
 Аватар для BumerangSP
4283 / 1405 / 121
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
17.12.2012, 15:14     Решение задачи #8
razum777, обычное большое число)
Вы на калькуляторе считали? 1 получилось?
Введите свой пример ((1000+0.0001)^2-(1000^2 +2*1000*0.0001)/0.0001^2) в нигму.
razum777
0 / 0 / 0
Регистрация: 15.12.2009
Сообщений: 46
17.12.2012, 15:19  [ТС]     Решение задачи #9
хорошо, скорей всего не правильно сосчитал я сам))) до сих пор поверить не могу, вот взял ввел в программу сокращения(так надо по заданию), вроде все правильно сделал:
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
#include <windows.h>
#include <iostream>
#include <stdio.h>
#include <math.h>
 
 
using std::cout;
using std::cin;
using std::endl;
 
int main()
 
{ int a;
    float b,c,d,e;
    SetConsoleCP(1251); 
        SetConsoleOutputCP(1251);
cout<< "\n Введите a ";
cin>>a;
cout<<"\n Введите b ";
cin>>b;
c=(a+b)*(a+b);
d=a*a;
e=pow(b,2);
cout<<"\nЗначение выражения = "<<c-(d+2*a*b)/e;
cout<<"\n ";
 
 system("PAUSE");
 
    return 0;
}
Schizorb
 Аватар для Schizorb
508 / 460 / 16
Регистрация: 07.04.2012
Сообщений: 865
Записей в блоге: 1
Завершенные тесты: 1
17.12.2012, 15:27     Решение задачи #10
Цитата Сообщение от razum777 Посмотреть сообщение
(a+b)2-(a2+2ab)/b2
У вас в задании точно такая формула была?

Просто если вы хотите получить единицу в ответе, должно быть так: ((a+b)2-(a2+2ab))/b2
razum777
0 / 0 / 0
Регистрация: 15.12.2009
Сообщений: 46
17.12.2012, 15:35  [ТС]     Решение задачи #11
Цитата Сообщение от Schizorb Посмотреть сообщение
У вас в задании точно такая формула была?

Просто если вы хотите получить единицу в ответе, должно быть так: ((a+b)2-(a2+2ab))/b2
Ааа, у меня щас голова лопнет, вот мой пример, напишите, пожалуйста, готовую формулу:
Миниатюры
Решение задачи  
BumerangSP
 Аватар для BumerangSP
4283 / 1405 / 121
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
17.12.2012, 16:16     Решение задачи #12
Цитата Сообщение от razum777 Посмотреть сообщение
((a+b)2-(a2+2ab))/b2
Готовая в первом посте.

Добавлено через 2 минуты
C++
1
2
3
4
a=1000.0;
b=0.0001;
    cout<<"\n Г‡Г*Г*Г·ГҐГ*ГЁГҐ âûðГ*æåГ*ГЁГї = "<< ((a+b)*(a+b)-(a*a+2*a*b))/(b*b);
cout<<"\n ";
У меня 1 и выводит.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.12.2012, 10:28     Решение задачи
Еще ссылки по теме:

C++ Решение задачи
Решение задачи C++
Деструкторы (решение задачи) C++

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

Или воспользуйтесь поиском по форуму:
razum777
0 / 0 / 0
Регистрация: 15.12.2009
Сообщений: 46
18.12.2012, 10:28  [ТС]     Решение задачи #13
Всем спасибо!
Yandex
Объявления
18.12.2012, 10:28     Решение задачи
Ответ Создать тему
Опции темы

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