Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.83/18: Рейтинг темы: голосов - 18, средняя оценка - 4.83
2 / 2 / 2
Регистрация: 04.10.2013
Сообщений: 155
1

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

04.03.2014, 21:51. Показов 3256. Ответов 20
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Помогите исправить программу, чтобы она учитывала ввод дробных чисел...
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;
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
04.03.2014, 21:51
Ответы с готовыми решениями:

Дробные числа
Всем привет. Подскажите - почему то значения ver2 и ver3 считает, как целые числа. Почему? ...

Дробные числа
Дpoбныe числa oкpyглить дo 2 знaкoв пoслe зaпятoй как это можно сделать. к примеру число 23.333...

дробные числа
Здраствуйте, народ! Есть глупый вопрос: как сделать проверку для ввода только дробных чисел?...

Дробные числа, С++
Уважаемые знатоки, требуется ваша помощь. Передо мной стоит задача посчитать приблизительную сумму...

20
121 / 121 / 32
Регистрация: 04.03.2013
Сообщений: 370
04.03.2014, 22:06 2
Это имеется ввиду?

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

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

100000 0.00001 10000.000000000000005

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

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

Добавлено через 1 минуту
Цитата Сообщение от p1ka4y777 Посмотреть сообщение
я так понимаю Вы что-то хотите нового добавить по этой теме? не тяните, пожалуйста
Можешь считать, что дядя пошутил.
2
Модератор
Эксперт по электронике
8908 / 6677 / 918
Регистрация: 14.02.2011
Сообщений: 23,521
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 хорошо описал
https://www.cyberforum.ru/blogs/18334/blog88.html
1
Диссидент
Эксперт C
27706 / 17322 / 3812
Регистрация: 24.12.2010
Сообщений: 38,979
04.03.2014, 23:30 14
Цитата Сообщение от ValeryS Посмотреть сообщение
вот Evg хорошо описал
Да, неплохо. Во всяком случае, проблема поставлена и очень внятно (даже для начинающих) объяснена. Но не решена, конечно (что ИМХО и невозможно)

Не по теме:

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

1
ValeryS
04.03.2014, 23:41
  #15

Не по теме:

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

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

0
Диссидент
Эксперт C
27706 / 17322 / 3812
Регистрация: 24.12.2010
Сообщений: 38,979
05.03.2014, 00:00 16
Цитата Сообщение от ValeryS Посмотреть сообщение
так она и не решается на этом уровне
может если только свои типы вводить
Она не решается вообще. Ни на каком уровне. И никакие типы не помогут. Простейший пример. Вот у тебя есть супер-пупер комп, 5 террабайт диска и все остальное. Придумай-ка программку, которая выведет на консоль тривиальный корень из двух. Твой комп - всего лишь конечный автомат (хоть и очень большой). И наступит момент, когда он повторит свое состояние. И впадет в период. А вычисляемая нами штука - непериодическая.
2
Модератор
Эксперт по электронике
8908 / 6677 / 918
Регистрация: 14.02.2011
Сообщений: 23,521
05.03.2014, 00:13 17
Цитата Сообщение от Байт Посмотреть сообщение
И наступит момент, когда он повторит свое состояние. И впадет в период. А вычисляемая нами штука - непериодическая.
не решаемая на перодичных/ непереодичных десятичных дробях( в случае с компом двоичных )
но
если перейти на другой уровень то легко решается, та же 1/3
число Пи как то ведь вычисляют

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

Не по теме:

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

0
2 / 2 / 2
Регистрация: 04.10.2013
Сообщений: 155
05.03.2014, 00:56  [ТС] 20
ого, вот это называется попросил о помощи
0
05.03.2014, 00:56
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
05.03.2014, 00:56
Помогаю со студенческими работами здесь

Дробные числа
Задание: Напишите функцию main(), которая получает случайные дробные числа от пользова- теля,...

Дробные числа
пишу в Builder C++ нужно дробное число отображать в едите получается примерно так: double...

Дробные числа в массиве
Здравствуйте, нужно найти сумму элементов массива, расположенных после последнего элемента, равного...

Оператор while и дробные числа?
Учусь по специальности машиностроение. Работаю над программой для расчета асинхронного двигателя,...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru