Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/4: Рейтинг темы: голосов - 4, средняя оценка - 4.50
 Аватар для tyan
0 / 0 / 0
Регистрация: 03.06.2012
Сообщений: 14

[страуструп] задача на нахождение корней кв ур-я , проверьте пожалуйста

06.12.2013, 17:03. Показов 873. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, в книге Страуструпа "Основы и принципы программирования" есть задача на нахождение корней кв. ур-я, я её написал, но терминал выдает такое - http://puu.sh/5DQV0.png , я так понимаю , что проблема с типами double/int , может кто сказать что не так?

директива "std_lib_facilities.h" дана из книги, функция "keep_window_open" оттуда же

вот код:

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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
#include "../../std_lib_facilities.h"
 
int a;
int b;
int c;
double D;
 
 
// Нахождение дискриминанта
double reshaem_D()
{
    return D=(b^2)-(4*a*c);
}
 
// Нахождение 1го корня для дискриминанта > 0
double reshaem_D_polozh_1(double x)
{
    return x=((-b) + sqrt((b^2)-(4*a*a))) / (2*a);
}
 
// Нахождение 2го корня для дискриминанта > 0
double reshaem_D_polozh_2(double x)
{
    return x=((-b) - sqrt((b^2)-(4*a*a))) / (2*a);
}
 
// Нахождение корня для дискриминанта = 0
double reshaem_D_nol(double x)
{
    return x=(-b)/(2*a);
}
 
 
 
int main()
{
    int a = 0;
    int b = 0;
    int c = 0;
    double x = 0;
    double D = 0;
 
    //Вводим a,b,c
    cout << "Uravnenie imeet vid: a*x^2 + b*x + c = 0, vvedite a,b,c dlya resheniya uravneniya" << endl;
    cout << "Vvedite a= "; cin>> a; cout << "Vvedite b= ";cin>> b; cout << "Vvedite c= ";cin>> c;
 
    //Вычисляем дискриминант 
    reshaem_D();
 
    //Проверяем дискриминант, D>0;D<0;D=0
    if (reshaem_D>0)
    {
        reshaem_D_polozh_1(x);
        reshaem_D_polozh_2(x);
        cout << "Korni uravneniya x1= " << reshaem_D_polozh_1(x) << " x2= " << reshaem_D_polozh_2(x) << endl;
    }
    else if (reshaem_D<0)
    {
        cout << "Net reshenii" << endl;
    }
    else if (reshaem_D==0)
    {
        reshaem_D_nol(x);
        cout << "Korni uravneniya x= " << reshaem_D_nol << endl;
    }
 
    keep_window_open();
}
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
06.12.2013, 17:03
Ответы с готовыми решениями:

Страуструп, "Принципы и практика использования С++": задача на нахождение моды
Здравствуйте ,решаю упражнения из книги &quot;Страуструп принципы и практика использования c++&quot;, столкнулся с модой (4 глава 16 упражнение)...

Нахождение первообразной (проверьте пожалуйста)
Для функции у=х/(х-1)^2 найдите первообразную. У меня получилось F(x)=Ln-1/(x-1) +C

Задача с шарами. Проверьте, пожалуйста
Здравствуйте! Проверьте, пожалуйста. Решения верны? P.S.: Тему назвала не правильно. Здесь 2 задачи, а не только задача с шарами....

4
1406 / 648 / 135
Регистрация: 11.08.2011
Сообщений: 2,299
Записей в блоге: 2
06.12.2013, 17:06
b^2 <---- не то.
b*b <---- то.
0
 Аватар для tyan
0 / 0 / 0
Регистрация: 03.06.2012
Сообщений: 14
06.12.2013, 17:13  [ТС]
Цитата Сообщение от Dani Посмотреть сообщение
b^2 <---- не то.
b*b <---- то.
Исправил, спасибо, но теперь такое - http://puu.sh/5DRxd.png
0
 Аватар для Extrim88
51 / 51 / 21
Регистрация: 08.02.2013
Сообщений: 189
06.12.2013, 17:14
Дискриминант находите в отдельной функции:
C++
1
2
3
4
5
// Нахождение дискриминанта
double reshaem_D()
{
    return D=(b^2)-(4*a*c);
}
В фунции для нахождения корней:
C++
1
2
3
4
5
6
7
8
9
10
11
// Нахождение 1го корня для дискриминанта > 0
double reshaem_D_polozh_1(double x)
{
    return x=((-b) + sqrt((b^2)-(4*a*a))) / (2*a);
}
 
// Нахождение 2го корня для дискриминанта > 0
double reshaem_D_polozh_2(double x)
{
    return x=((-b) - sqrt((b^2)-(4*a*a))) / (2*a);
}
лучше передать еще и второй аргумент - дискриминант, уже вычисленный, чтобы не переписывать, громоздкое выражение.
Вы его переписали, и как следствие допустили ошибку, дискриминант считается правильно как:
C++
1
D = b*b - 4*a*c;
а не, как у вас
C++
1
D = b*b - 4*a*a;
0
1406 / 648 / 135
Регистрация: 11.08.2011
Сообщений: 2,299
Записей в блоге: 2
06.12.2013, 17:21
Много ошибок в коде. Мне лень искать все ошибки, вот
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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
#include <iostream>
#include <cmath>
 
using namespace std;
 
int a;
int b;
int c;
double D;
 
 
// Нахождение дискриминанта
void reshaem_D()
{
    D = ((b*b)-(4*a*c));
}
 
// Нахождение 1го корня для дискриминанта > 0
double reshaem_D_polozh_1(double x)
{
    return ((-b) + sqrt((b*b)-(4*a*a))) / (2*a);
}
 
// Нахождение 2го корня для дискриминанта > 0
double reshaem_D_polozh_2(double x)
{
    return ((-b) - sqrt((b*b)-(4*a*a))) / (2*a);
}
 
// Нахождение корня для дискриминанта = 0
double reshaem_D_nol(double x)
{
    return x=(-b)/(2*a);
}
 
 
 
int main()
{
    double x = 0;
 
    //Вводим a,b,c
    cout << "Uravnenie imeet vid: a*x^2 + b*x + c = 0, vvedite a,b,c dlya resheniya uravneniya" << endl;
    cout << "Vvedite a= "; cin>> a; cout << "Vvedite b= ";cin>> b; cout << "Vvedite c= ";cin>> c;
 
    //Вычисляем дискриминант 
    reshaem_D();
 
    //Проверяем дискриминант, D>0;D<0;D=0
    if (D>0)
    {
        reshaem_D_polozh_1(x);
        reshaem_D_polozh_2(x);
        cout << "Korni uravneniya x1= " << reshaem_D_polozh_1(x) << " x2= " << reshaem_D_polozh_2(x) << endl;
    }
    else if (D<0)
    {
        cout << "Net reshenii" << endl;
    }
    else if (D==0)
    {
        reshaem_D_nol(x);
        cout << "Korni uravneniya x= " << reshaem_D_nol << endl;
    }
 
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
06.12.2013, 17:21
Помогаю со студенческими работами здесь

Проверьте мои решения задач на правильность, пожалуйста.(4)(Интересная задача!)
/*На предмете мы отталкиваемся от понятия &quot;один бит - это количество информации, что уменьшает неопределенность знания в 2 раза&quot;.*/ ...

Задача:Страуструп. 4.11.4
1.Напишите программу,которая печатает символы от 'a' до 'z' и цифры от '0' до '9' и их целые значения. 2.Проделайте то же самое для...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru