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

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

Войти
Регистрация
Восстановить пароль
 
Rakot568
15 / 15 / 1
Регистрация: 11.04.2013
Сообщений: 171
#1

Исправить программу - C++

13.10.2013, 20:40. Просмотров 223. Ответов 4
Метки нет (Все метки)

Дано выражение. По законам математики вне зависимости от значений переменных a и b выражение всегда имеет значение 1.
Нужно исправить программу, чтобы она выдавала значение 1.
Текст:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <stdio.h>
#include <conio.h>
void main(void)
{
   float a,b,c,t1,t2,t3;
   clrscr();
   a=95.0; //a=100.0
   b=0.02;
   t1=(a+b)*(a+b);
   t2=-2.0*a*b-a*a;
   t2=(a*a)+(2.0*a*b);
   t3=b*b;
   c=(t1-t2)/t3;
   printf("c=%f",c);
   getch();
}
P.S.: Если решение слишком простое, прошу не судить строго - я новичок в C и еще многого не знаю.
Изображения
 
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.10.2013, 20:40     Исправить программу
Посмотрите здесь:

Как исправить программу? C++
C++ Исправить программу
Помогите исправить программу C++
Массивы (исправить программу) C++
проверить программу и исправить ошибки C++
C++ Не выполняет программу, нужно исправить
Исправить программу C++
Исправить программу C++
C++ Нужно исправить программу
Исправить программу С++ C++
Исправить программу на строки C++
Исправить программу суммы C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
newb_programmer
237 / 237 / 19
Регистрация: 03.09.2011
Сообщений: 555
13.10.2013, 20:59     Исправить программу #2
Rakot568, программа работает нормально! имхо это специфика задания-или изза большой разности a b или еще что теряется точность
zss
Модератор
Эксперт С++
6239 / 5842 / 1890
Регистрация: 18.12.2011
Сообщений: 14,959
Завершенные тесты: 1
13.10.2013, 21:08     Исправить программу #3
Поменяйте float на double.
newb_programmer
237 / 237 / 19
Регистрация: 03.09.2011
Сообщений: 555
13.10.2013, 21:12     Исправить программу #4
zss, ништяк-работает!=)
zss
Модератор
Эксперт С++
6239 / 5842 / 1890
Регистрация: 18.12.2011
Сообщений: 14,959
Завершенные тесты: 1
13.10.2013, 23:06     Исправить программу #5
ошибка возникает, когда b -маленькое.
Тогда значение, которое вносит b в произведение
(a+b)*(a+b) выходит за разрядность числа.
a=1,b=1e-5 дает
(1.00001)*(1.00001) - 1.0000200001
единицу в 10 разряде, которая пропадает для float.
Yandex
Объявления
13.10.2013, 23:06     Исправить программу
Ответ Создать тему
Опции темы

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