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

Ошибка в коде: возведение в квадрат числа 5

02.06.2019, 21:55. Показов 925. Ответов 11
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте!
Поставлено следующее условие задачи: вывести все возможные рациональные корни уравнения ax2+bx+c=0.
На вводе даются 3 числа: a, b и c.
Проблема: при расчёте дискриминанта в строке d=pow(b,2)-4*a*c; (а точнее, в функции pow(b,2)) происходит ошибка, когда значением b является число 5(или любое другое число, кратное 5). Программа возводит число 5 во вторую степень и получает 24.
Пожалуйста, помогите выявить ошибку, так как с другими числами такой проблемы не возникает. Понимаю, что можно сделать просто b*b вместо функции, но сейчас интересно узнать суть проблемы. Надеюсь на вышу помощь. Код программы ниже.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
#include <cmath>
using namespace std;
 
int main() {
    int a, b, c, d;
    cin >> a >> b >> c;
    double koren;
    d=pow(b,2)-4*a*c;
    if(d>0){
        koren=sqrt(d);
        cout << (-1*koren-1*b)/2/a<< endl;
        cout << (koren-1*b)/2/a<< endl;
    }
    else if(d==0){
        cout << -1*b/(2*a)<< endl;
    }
    else{
        cout << "No"<< endl;
    }
    return 0;
}
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
Блог
02.06.2019, 21:55
Ответы с готовыми решениями:

Возведение натурального числа в квадрат
Составить программу на языке С++ возведения натурального числа в квадрат, используя следующую...

Возведение натурального числа в квадрат не используя умножение
Здравствуйте, помогите доделать задание, #include &lt;iostream&gt; using namespace std; int...

Возведение в квадрат и ошибка "sqare: идентификатор не найден"
Компилятор пишет, что &quot;sqare: идентификатор не найден&quot;. Подскажите как исправить! sqare должно...

Все отрицательные числа возвести в квадрат, найти их количество, порядковые номера и сумму. Что не так в коде?
Вводится последовательность из N чисел. Все отрицательные числа возвести в квадрат, найти их...

11
21 / 16 / 5
Регистрация: 22.06.2015
Сообщений: 68
02.06.2019, 22:26 2
Цитата Сообщение от Alainen Посмотреть сообщение
Программа возводит число 5 во вторую степень и получает 24.
Звучит не очень правдоподобно. В чем запускаете и как смотрите значение?
0
0 / 0 / 0
Регистрация: 28.07.2018
Сообщений: 7
02.06.2019, 22:48  [ТС] 3
Цитата Сообщение от Albinos Посмотреть сообщение
Звучит не очень правдоподобно. В чем запускаете и как смотрите значение?
Согласна, так как с подобной проблемой не встречалась ни в Pascal, ни в Python, ни где либо ещё.
Использую Eclipse. Значения смотрю там же по Debug системе.
0
21 / 16 / 5
Регистрация: 22.06.2015
Сообщений: 68
02.06.2019, 23:11 4
Цитата Сообщение от Alainen Посмотреть сообщение
Значения смотрю там же по Debug системе.
Можно скрин? Аналогичный код 10ая студия воспроизводит успещно без ошибок
Миниатюры
Ошибка в коде: возведение в квадрат числа 5  
0
0 / 0 / 0
Регистрация: 28.07.2018
Сообщений: 7
02.06.2019, 23:29  [ТС] 5
Albinos, вот скриншот:
Миниатюры
Ошибка в коде: возведение в квадрат числа 5  
0
21 / 16 / 5
Регистрация: 22.06.2015
Сообщений: 68
02.06.2019, 23:40 6
Забавно. Если вывести значение в консоль то же самое будет?) И тип всех переменных заменить double(убрать неявное приведение, хотя оно вряд ли играет роль)
0
0 / 0 / 0
Регистрация: 28.07.2018
Сообщений: 7
02.06.2019, 23:43  [ТС] 7
Albinos, да, всё то же Видимо, что-то в самой функции поломались ,если такое вообще может быть.
0
21 / 16 / 5
Регистрация: 22.06.2015
Сообщений: 68
02.06.2019, 23:46 8
Если в них никто не правил, то они не ломаются) Дичь
1
7437 / 5029 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
02.06.2019, 23:46 9
Alainen, ошибка в первой строке - нужен тип double. подправил:
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
#include <iostream>
#include <cmath>
using namespace std;
 
int main()
{
    double a, b, c, D, x1, x2, eps=1e-9;
    cout << "Enter a,b,c:\n";
    cin >> a >> b >> c;
    
    D=b*b-4.*a*c;
    
    if(D>eps)
    {
        x1=(-b+sqrt(D))/(2.*a);
        x2=(-b-sqrt(D))/(2.*a);
        cout << "x1=" << x1 << "\nx2=" << x2 << "\n";
    }
    else if (fabs(D)<eps)
    {
        x1=-b/(2.*a); 
        cout << "x1=x2=" << x1 << "\n";
    }    
    else cout << "No solutions\n";
    
system("pause");
return 0;
}
1
0 / 0 / 0
Регистрация: 28.07.2018
Сообщений: 7
02.06.2019, 23:58  [ТС] 10
Albinos, Yetty, спасибо большое. И правда помогло. Без вас так бы и не нашла ошибку
0
7437 / 5029 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
03.06.2019, 00:02 11
Alainen, пожалуйста, это не сложно. предложенный код для a не равно 0. можете усовершенствовать, добавив решение линейного при a=0. кроме того рассмотреть a=0, b=0. a=0, b=0, c=0
0
0 / 0 / 0
Регистрация: 28.07.2018
Сообщений: 7
03.06.2019, 00:08  [ТС] 12
Yetty, действительно
Спасибо вам за советы
0
03.06.2019, 00:08
BasicMan
Эксперт
19315 / 2622 / 84
Регистрация: 17.02.2009
Сообщений: 10,364
Блог
03.06.2019, 00:08
Помогаю со студенческими работами здесь

Задача на возведение в квадрат
Составить программу, вычисляющую и выводящую на экран квадраты всех натуральных чисел от 1 до 20....

Поэлементное возведение в квадрат
Нужно написать программу, содержащую функцию поэлементного возведения в квадрат массива...

Возведение палиндрома в квадрат
Всем доброго времени суток. Не могу понять как можно возвести палиндром в квадрат согласно...

Возведение многочлена в квадрат
Всем привет! Подскажите пожалуйста, дана такая задачка. Дан многочлен P(x) в степени n, получить...


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

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