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

Не учитывает дробные числа - C++

Восстановить пароль Регистрация
 
 
p1ka4y777
 Аватар для p1ka4y777
2 / 2 / 0
Регистрация: 04.10.2013
Сообщений: 155
04.03.2014, 21:51     Не учитывает дробные числа #1
Помогите исправить программу, чтобы она учитывала ввод дробных чисел...
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <cstdio>
#include <iostream>
 
using namespace std;
int main()
{
    setlocale(LC_ALL, "Russian");
    double a, b, c;
    double P, S;
    cout << "Введите три стороны треугольника: ";
    cin >> a >> b >> c;
    if ((a + b > c) && (a + c > b) && (b + c > a))
    {
        P = (a + b + c) / 2.0;
        S = sqrt(P *(P - a)*(P - b)*(P - c));
        cout << "Площадь треугольника: " << S << endl;
    }
    else
        cout << "Такой треугольник не существует..." << endl;
    system("pause");
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.03.2014, 21:51     Не учитывает дробные числа
Посмотрите здесь:

целые и дробные числа C++
C++ Дробные числа, С++
Как кодираются дробные числа в пакетах? C++
C++ дробные числа
Дробные числа C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
FreeMan108
 Аватар для FreeMan108
120 / 120 / 6
Регистрация: 04.03.2013
Сообщений: 368
04.03.2014, 22:06     Не учитывает дробные числа #2
Это имеется ввиду?

C++
1
cout << setprecision (5) <<  "Площадь треугольника: " << S << endl;
p1ka4y777
 Аватар для p1ka4y777
2 / 2 / 0
Регистрация: 04.10.2013
Сообщений: 155
04.03.2014, 22:13  [ТС]     Не учитывает дробные числа #3
Нет не сам результат...
Когда вводишь, например 3,1 4,2 5,3 - всё равно учитывает, что такого треугольника быть не может.
FreeMan108
 Аватар для FreeMan108
120 / 120 / 6
Регистрация: 04.03.2013
Сообщений: 368
04.03.2014, 22:20     Не учитывает дробные числа #4
Цитата Сообщение от p1ka4y777 Посмотреть сообщение
Нет не сам результат...
Когда вводишь, например 3,1 4,2 5,3 - всё равно учитывает, что такого треугольника быть не может.
Конечно выдает, что не существует. Да потому что надо писать 3.1, а не 3,1.
p1ka4y777
 Аватар для p1ka4y777
2 / 2 / 0
Регистрация: 04.10.2013
Сообщений: 155
04.03.2014, 22:24  [ТС]     Не учитывает дробные числа #5
Такая мелочь... Чувтсвую себя млекопитающим с рогами)
ValeryS
Модератор
6377 / 4843 / 442
Регистрация: 14.02.2011
Сообщений: 16,056
04.03.2014, 22:30     Не учитывает дробные числа #6
Цитата Сообщение от p1ka4y777 Посмотреть сообщение
if ((a + b > c) && (a + c > b) && (b + c > a))
при каких числах сработает это условие?
p1ka4y777
 Аватар для p1ka4y777
2 / 2 / 0
Регистрация: 04.10.2013
Сообщений: 155
04.03.2014, 22:37  [ТС]     Не учитывает дробные числа #7
Цитата Сообщение от p1ka4y777 Посмотреть сообщение
C++
1
double a, b, c;
если я правильно понял вопрос...
ValeryS
Модератор
6377 / 4843 / 442
Регистрация: 14.02.2011
Сообщений: 16,056
04.03.2014, 22:39     Не учитывает дробные числа #8
Цитата Сообщение от p1ka4y777 Посмотреть сообщение
если я правильно понял вопрос...
не правильно
набери мне три числа чтобы сработал if
p1ka4y777
 Аватар для p1ka4y777
2 / 2 / 0
Регистрация: 04.10.2013
Сообщений: 155
04.03.2014, 22:41  [ТС]     Не учитывает дробные числа #9
например, стандарт - 3, 4 и 5
ValeryS
Модератор
6377 / 4843 / 442
Регистрация: 14.02.2011
Сообщений: 16,056
04.03.2014, 22:50     Не учитывает дробные числа #10
Цитата Сообщение от p1ka4y777 Посмотреть сообщение
например, стандарт - 3, 4 и 5
хорошо
это я ступил
забыл свойства треугольников
сейчас с конкретными цифрами проверил условие, и понял был не прав

но например вот так
у тебя может не сработать

100000 0.00001 10000.000000000000005

округление, знаете ли
p1ka4y777
 Аватар для p1ka4y777
2 / 2 / 0
Регистрация: 04.10.2013
Сообщений: 155
04.03.2014, 23:06  [ТС]     Не учитывает дробные числа #11
Цитата Сообщение от ValeryS Посмотреть сообщение
100000 0.00001 10000.000000000000005
конечно не сработает, если сложить второе к третьему

я так понимаю Вы что-то хотите нового добавить по этой теме? не тяните, пожалуйста
Байт
 Аватар для Байт
13988 / 8819 / 1230
Регистрация: 24.12.2010
Сообщений: 15,975
04.03.2014, 23:15     Не учитывает дробные числа #12
Цитата Сообщение от ValeryS Посмотреть сообщение
у тебя может не сработать
100000 0.00001 10000.000000000000005
Эт-т-то конечно, верно. Проблема вообще серьезнейшая. Но относится она к тяжелейшим проблемам машинной арифметики. Я бы даже сказал, к проблеме представления бесконечного в конечном виде. И однозначного ее решения, ИМХО, нет. Так стоит ли грузить этой проблемой ТС, человека, видимо, старательного, но только начинающего? Хотя, пусть конечно знает, что есть такая. А разбираться с ней будет чуть попозже. Когда азы улягутся в голове студента.

Добавлено через 1 минуту
Цитата Сообщение от p1ka4y777 Посмотреть сообщение
я так понимаю Вы что-то хотите нового добавить по этой теме? не тяните, пожалуйста
Можешь считать, что дядя пошутил.
ValeryS
Модератор
6377 / 4843 / 442
Регистрация: 14.02.2011
Сообщений: 16,056
04.03.2014, 23:21     Не учитывает дробные числа #13
Цитата Сообщение от p1ka4y777 Посмотреть сообщение
конечно не сработает, если сложить второе к третьему
это почему еще
нормальный прямоугольный треугольник
0.00001+10000.000000000000005>10000
но благодаря округлению дробная часть может потеряться и условие не сработает

Добавлено через 1 минуту
Цитата Сообщение от ValeryS Посмотреть сообщение
100000 0.00001 10000.000000000000005
все понял
косяк, лишний ноль
следует читать так
10000 0.00001 10000.000000000000005

Добавлено через 4 минуты
Цитата Сообщение от Байт Посмотреть сообщение
Так стоит ли грузить этой проблемой ТС, человека, видимо, старательного, но только начинающего?
я тоже считаю что
Цитата Сообщение от Байт Посмотреть сообщение
Хотя, пусть конечно знает, что есть такая
вот Evg хорошо описал
http://www.cyberforum.ru/blogs/18334/blog88.html
Байт
 Аватар для Байт
13988 / 8819 / 1230
Регистрация: 24.12.2010
Сообщений: 15,975
04.03.2014, 23:30     Не учитывает дробные числа #14
Цитата Сообщение от ValeryS Посмотреть сообщение
вот Evg хорошо описал
Да, неплохо. Во всяком случае, проблема поставлена и очень внятно (даже для начинающих) объяснена. Но не решена, конечно (что ИМХО и невозможно)

Не по теме:

Вообще, я считаю Evg одним из самых блестящих умов на нашем форуме. И не жадный, все что знает - рассказывает

ValeryS
04.03.2014, 23:41
  #15

Не по теме:

Цитата Сообщение от Байт Посмотреть сообщение
Но не решена, конечно (что ИМХО и невозможно)
так она и не решается на этом уровне
может если только свои типы вводить
например
класс
один член целые
другой дробные
третий степень
и все это в десятичке

а так это все равно что описать 1/3 в десятичных дробях
0.3333333 и сколько троек не пиши все равно одной трети не получишь

Байт
 Аватар для Байт
13988 / 8819 / 1230
Регистрация: 24.12.2010
Сообщений: 15,975
05.03.2014, 00:00     Не учитывает дробные числа #16
Цитата Сообщение от ValeryS Посмотреть сообщение
так она и не решается на этом уровне
может если только свои типы вводить
Она не решается вообще. Ни на каком уровне. И никакие типы не помогут. Простейший пример. Вот у тебя есть супер-пупер комп, 5 террабайт диска и все остальное. Придумай-ка программку, которая выведет на консоль тривиальный корень из двух. Твой комп - всего лишь конечный автомат (хоть и очень большой). И наступит момент, когда он повторит свое состояние. И впадет в период. А вычисляемая нами штука - непериодическая.
ValeryS
Модератор
6377 / 4843 / 442
Регистрация: 14.02.2011
Сообщений: 16,056
05.03.2014, 00:13     Не учитывает дробные числа #17
Цитата Сообщение от Байт Посмотреть сообщение
И наступит момент, когда он повторит свое состояние. И впадет в период. А вычисляемая нами штука - непериодическая.
не решаемая на перодичных/ непереодичных десятичных дробях( в случае с компом двоичных )
но
если перейти на другой уровень то легко решается, та же 1/3
число Пи как то ведь вычисляют

я не могу точно сказать, но мне кажется, что при каком то другом основании корень из двух может вполне стать конечной дробью
Байт
 Аватар для Байт
13988 / 8819 / 1230
Регистрация: 24.12.2010
Сообщений: 15,975
05.03.2014, 00:24     Не учитывает дробные числа #18
Цитата Сообщение от ValeryS Посмотреть сообщение
число Пи как то ведь вычисляют
Не до конца... До какого-то знака. Все больше и больше. Но конечного.
Цитата Сообщение от ValeryS Посмотреть сообщение
я не могу точно сказать, но мне кажется, что при каком то другом основании корень из двух может вполне стать конечной дробью
Ты мне веришь? Если нет, то и не надо. Ответ - никогда! Never More! (Эдгар По)
ValeryS
05.03.2014, 00:29
  #19

Не по теме:

Цитата Сообщение от Байт Посмотреть сообщение
Ты мне веришь?
ага
но завязываю с офтопом

MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.03.2014, 00:56     Не учитывает дробные числа
Еще ссылки по теме:

C++ Дробные числа
C++ Дробные числа - плавающая и фиксированная точки
Дробные числа C++

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

Или воспользуйтесь поиском по форуму:
p1ka4y777
 Аватар для p1ka4y777
2 / 2 / 0
Регистрация: 04.10.2013
Сообщений: 155
05.03.2014, 00:56  [ТС]     Не учитывает дробные числа #20
ого, вот это называется попросил о помощи
Yandex
Объявления
05.03.2014, 00:56     Не учитывает дробные числа
Ответ Создать тему
Опции темы

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