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

Ошибка при вводе вещественного числа

06.10.2021, 19:50. Показов 1489. Ответов 11
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
При вводе числа с запятой в ответ идут рандомные числа. Без запятой всё работает
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
31
32
#include <stdio.h>
#include <math.h>
#include <locale.h>
#include <stdlib.h>
#include <iostream>
using namespace std;
int triangleRR(int a, int b, int c, float *r, float *R) {
    float p, P;
    P = a + b + c; //периметр
    p = P / 2; //полупериметр
    *r = sqrt(((p - a) * (p - b) * (p - c)) / p);
    *R = a * b * c / (4 * (sqrt(p) * sqrt(p - a) * sqrt(p - b) * sqrt(p - c)));
    cout << p << endl;
    cout << P << endl;
    cout << *r << endl;
    cout << *R << endl;
    return 1;
}
void main()
{
    setlocale(LC_ALL, "Russian");
    int a, b, c;
    float r, R, p, P;
    printf("Длина стороны а: ");
    scanf_s("%d", &a);
    printf("Длина стороны b: ");
    scanf_s("%d", &b);
    printf("Длина стороны c: ");
    scanf_s("%d", &c);
 
    triangleRR(a, b, c, &r, &R);
}
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
06.10.2021, 19:50
Ответы с готовыми решениями:

Ошибка при вводе вещественного числа
Подскажите пожалуйста, у меня программа по перевода расстояния (из метра в километр, из километра -...

Ошибка при вводе вещественного числа
При выполнении scanf(&quot;%f&quot;, &amp;e) программа не реагирует на нажатие любой клавиши. #include...

Ошибка при вводе числа
Нужно провести несложный, но массивный расчет. Почему при вводе обычных чисел он часть мне дает...

Ошибка при вводе числа
Подозреваю, что где-то нужно обнулить переменную rows. Потому что (как показано на скрине) число...

Ошибка при вводе числа (GUI)
Есть программа написанная в матлабе. Необходимо считать значение из Эдита типа 0.00415 в...

11
2528 / 1247 / 460
Регистрация: 08.11.2016
Сообщений: 3,428
06.10.2021, 21:41 2
shukshinprod, дробная часть числа отделяется от целой через точку, а не через запятую.
0
0 / 0 / 1
Регистрация: 27.12.2020
Сообщений: 25
06.10.2021, 21:46  [ТС] 3
И через точку и через запятую ответ некорректный
0
из племени тумба-юбма
2467 / 1790 / 417
Регистрация: 29.11.2015
Сообщений: 8,690
Записей в блоге: 15
06.10.2021, 22:06 4
Цитата Сообщение от shukshinprod Посмотреть сообщение
При вводе числа с запятой в ответ идут рандомные числа
Если вводите десятичную точку на цифровой клавиатуре, то вводите числа в английской раскладке, будет всегда правильно. А вообще для консоли, разделителем дробной части числа является точка.
0
0 / 0 / 1
Регистрация: 27.12.2020
Сообщений: 25
06.10.2021, 23:38  [ТС] 5
Ошибка на любой раскладке сохраняется
Ошибка при вводе вещественного числа
0
Вездепух
Эксперт CЭксперт С++
11696 / 6375 / 1724
Регистрация: 18.10.2014
Сообщений: 16,071
06.10.2021, 23:52 6
Лучший ответ Сообщение было отмечено мама Стифлера как решение

Решение

Цитата Сообщение от shukshinprod Посмотреть сообщение
Ошибка при вводе вещественного числа
Не понял. О каком "вводе вещественного числа", "точках" или "запятых" может вообще идти речь, если у вас в коде явным образом делается чтение целого числа

C++
1
2
3
    int a;
    printf("Длина стороны а: ");
    scanf_s("%d", &a);
? Куда вы тут собрались вводить свое 3.3? Вы о чем вообще?
1
0 / 0 / 1
Регистрация: 27.12.2020
Сообщений: 25
07.10.2021, 00:06  [ТС] 7
В таком случае как всё это дело должно выглядеть?
0
Вездепух
Эксперт CЭксперт С++
11696 / 6375 / 1724
Регистрация: 18.10.2014
Сообщений: 16,071
07.10.2021, 00:11 8
Цитата Сообщение от shukshinprod Посмотреть сообщение
В таком случае как всё это дело должно выглядеть?
Так сначала нужно определиться, что нужно сделать. Зачем вы написали программу с вводом целых чисел, а потом пытаетесь туда вводить вещественные числа? Что сделать-то надо было?
0
Модератор
Эксперт С++
13507 / 10757 / 6412
Регистрация: 18.12.2011
Сообщений: 28,714
07.10.2021, 07:06 9
shukshinprod,
Цитата Сообщение от shukshinprod Посмотреть сообщение
cout << p << endl;
Цитата Сообщение от shukshinprod Посмотреть сообщение
printf("Длина стороны а: ");
Почему Вы считаете это нормальным?
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 <cmath>
#include <clocale>
#include <iostream>
using namespace std;
void triangleRR(double a, double b, double c, double *r, double *R) {
    double p = (a + b + c)/2.; 
    *r = sqrt((p - a) * (p - b) * (p - c) / p);
    *R = a * b * c / (4. * (sqrt(p) * sqrt(p - a) * sqrt(p - b) * sqrt(p - c)));
}
int main()
{
    setlocale(LC_ALL, "Russian");
    double a, b, c;
    cout<<"Длина стороны а: ";
    cin>>a;
    cout<<"Длина стороны b: ";
    cin>>b;
    cout<<"Длина стороны c: ";
    cin>>c;
    double r,R;
    triangleRR(a, b, c, &r, &R);
    cout <<"r="<< r << endl;
    cout << "R="<<R << endl;
    return 0;
}
0
0 / 0 / 1
Регистрация: 27.12.2020
Сообщений: 25
09.10.2021, 12:54  [ТС] 10
Сейчас на начальном этапе нахожусь, следовательно, в базовых моментах нет полного осознания. Ознакомлюсь более подробно с типами данных. Благодарю за ответы
0
7437 / 5029 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
09.10.2021, 13:12 11
shukshinprod, лишние вычисления в функции, так будет получше:
S=sqrt(p*(p - a) * (p - b) * (p - c));
r=S/p;
R=a*b*c/(4.*S);
0
0 / 0 / 1
Регистрация: 27.12.2020
Сообщений: 25
09.10.2021, 22:46  [ТС] 12
Цитата Сообщение от zss Посмотреть сообщение
Почему Вы считаете это нормальным?
cout в функции triangle выводил исключительно для себя, для понимания какие числа по итогу выводятся, забыл убрать, изначально в коде не было их. Учили через scanf выводить, cout не использую при сдаче лабораторной
Цитата Сообщение от Yetty Посмотреть сообщение
shukshinprod, лишние вычисления в функции, так будет получше:
S=sqrt(p*(p - a) * (p - b) * (p - c));
r=S/p;
R=a*b*c/(4.*S);
Да, спасибо, осознаю, расписывал подробнее чтоб в отладчике просматривать значения, а так же ещё недостаточно понимаю когда и где нужно использовать указатели
0
09.10.2021, 22:46
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.10.2021, 22:46
Помогаю со студенческими работами здесь

Ошибка при вводе дробного числа
Подскажите пожалуйста , почему при вводе дробного числа (11,5) в edit1 происходит ошибка, если...

Ошибка при вводе большого числа
В этой теме была разобрана задача. Она прекрасно работает с небольшими числами, но вызывает...

Ошибка при вводе дробного числа.
Подскажите, пожалуйста, как при вводе числа через scanf выводить ошибку при вводе дроби либо...

Ошибка при вводе числа при помощи Readconsole
здравствуйте.При программировании на масме32 возникла проблема,а именно:я ввожу в REadconsole...

Почему при вводе числа программа работает нормально, а при вводе буквы уходит в бесконечный цикл?
void mainmenu() { cout &lt;&lt; &quot;Введи число&quot; &lt;&lt; endl; cin &gt;&gt; choice; if (choice == 1) { cout &lt;&lt;...

Ошибка -1.#IND при вводе не целого числа
После ввода дробного числа для b в консоли пишется ошибка -1.#IND. При вводе целого числа все...


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

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