0 / 0 / 0
Регистрация: 08.06.2009
Сообщений: 48
1

Решение квадратного уравнения

17.06.2009, 19:51. Показов 6222. Ответов 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
33
34
35
36
37
38
39
40
41
42
43
44
private: System::Void btn_Click(System::Object^  sender, System::EventArgs^  e) {
             double a, b, c;
                double *pa, *pb, *pc;
                pa=&a; pb=&b; pc=&c;
             double D, x1, x2;
                double *pD, *px1, *px2;
                pD=&D; px1=&x1; px2=&x2;
             *pa = Convert::ToDouble(txtA->Text);
             *pb = Convert::ToDouble(txtB->Text);
             *pc = Convert::ToDouble(txtC->Text);
             *pD = Math::Pow(2,*pb)-4**pa**pc;
             if (*pD<0) {
                label5->Text = "This equation has no real-number roots!";
                label4->Left = Form1::Width / 4;
                label4->Top = btn->Top + btn->Height+10;
                label5->Left = 5;
                label5->Top = label4->Top + label4->Height + 5;
                Form1::Height = Form1::Height + (label4->Height+10) + (label5->Height+5) + 10;
                label4->Visible = true; label5->Visible = true;
             };
             if (*pD=0) {
                x1=-(*pb/2**pa);
                label5->Text = "This equation has 1 real-number root: x = " + Convert::ToString(x1);
                label4->Left = Form1::Width / 4;
                label4->Top = btn->Top + btn->Height+10;
                label5->Left = 5;
                label5->Top = label4->Top + label4->Height + 5;
                Form1::Height = Form1::Height + (label4->Height+10) + (label5->Height+5) + 10;
                label4->Visible = true; label5->Visible = true;
             };
             if (*pD>0) {
                x1=(-*pb-Math::Sqrt(*pD))/2**pa;
                x2=(-*pb+Math::Sqrt(*pD))/2**pa;
                label5->Text = "x1 = " + Convert::ToString(x1) + 
                    "; x2 = " + Convert::ToString(x2);
                label4->Left = Form1::Width / 4;
                label4->Top = btn->Top + btn->Height+10;
                label5->Left = 5;
                label5->Top = label4->Top + label4->Height + 5;
                Form1::Height = Form1::Height + (label4->Height+10) + (label5->Height+5) + 10;
                label4->Visible = true; label5->Visible = true;
             };
 
         }
ЗЫ: Наверное я чет с указателями накрутил...
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.06.2009, 19:51
Ответы с готовыми решениями:

Есть вычислитель корней квадратного уравнения
Программа WinForms, MVS2010 По задумке должна считать корни квадратного уравнения, выводя...

Найти ошибку в программе решения квадратного уравнения
Вот код проверки частного случая(b=0) решения квадратного уравнения. Каким-то волшебным образом...

Решение квадратного уравнения
Ребята не правильно считает почему то (только начал изучать) program cat; uses crt; var a, b, c,...

Решение квадратного уравнения
Найти действительные корни квадратного уравнения вида ax2 + bx + c = 0, путем вычисления...

11
Заказ софта
343 / 188 / 21
Регистрация: 26.05.2009
Сообщений: 863
17.06.2009, 20:41 2
Наверное это:

C++
1
if (*pD=0)
нужно заменить на это:

C++
1
if (*pD == 0)
----------------------------------
А это:

C++
1
x1=-(*pb/2**pa);
на это:

C++
1
x1 -= (*pb/2**pa);
0
0 / 0 / 0
Регистрация: 08.06.2009
Сообщений: 48
17.06.2009, 20:48  [ТС] 3
Цитата Сообщение от Search.. Посмотреть сообщение
Наверное это:

Код C++
1
if (*pD=0)

нужно заменить на это:

Код C++
1
if (*pD == 0)
Ну да... Я просто с Visual Basic'a пришел, еще не привык.

Цитата Сообщение от Search.. Посмотреть сообщение
А это:

Код C++
1
x1=-(*pb/2**pa);

на это:

Код C++
1
x1 -= (*pb/2**pa);
А почему так? Это ведь будет все равно, что
C++
1
x1 = x1 - (*pb/2**pa)
Может так:
C++
1
x1 = (-(*pb/2**pa))
????
0
Заказ софта
343 / 188 / 21
Регистрация: 26.05.2009
Сообщений: 863
17.06.2009, 20:51 4
Не вникал в код... Если тебе нужно вечесть из x1 то, что идет после него и ответ сохранить в нем же (x1), то нужно так, как я показал. А если тебе нужно инициализировать x1 результатом выражения, которое идет после него (x1), то, конечно, у тебя код правильный !
0
125 / 123 / 0
Регистрация: 30.03.2009
Сообщений: 766
17.06.2009, 20:53 5
а зачем вообще указатели??? чтоб жизнь сказкой не казалась?
0
Заказ софта
343 / 188 / 21
Регистрация: 26.05.2009
Сообщений: 863
17.06.2009, 21:05 6
Цитата Сообщение от Lolcht0 Посмотреть сообщение
а зачем вообще указатели???
Чтобы указывать =)
0
0 / 0 / 0
Регистрация: 08.06.2009
Сообщений: 48
17.06.2009, 21:08  [ТС] 7
Search.., тогда получается, что эта часть кода у меня правильная. Работает.
Lolcht0, этого я сам до конца не понимаю. Просто последовал инструкциям из книги, хотя это предложение из книги мне показалось ну о-о-очень странным и протеворечещим логике:
C++
1
2
3
4
5
6
7
8
9
10
int n1;
int n2;
int m;
int* pn1;
int* pn2;
n1 = 5;
n2 = 7;
pn1 = &n1;
pn2 = &n2;
m = *pn1 + *pn2;
Для этого можно было бы воспользоваться следующим банальным способом:
C++
1
m = n1 + n2;
Но не стоит искать простых путей. По-этому выполняйте необходимые
вычисления, применив указатели.
До этого мне вообще казалось, что одной из основных задач программиста является происк простых (оптимальных) путей
0
Заказ софта
343 / 188 / 21
Регистрация: 26.05.2009
Сообщений: 863
17.06.2009, 21:12 8
Так тут же цель определенная есть у афтара: научить тебя хорошо пользоваться указателями и не бояться их ! Афтар дело говорит...
0
0 / 0 / 0
Регистрация: 08.06.2009
Сообщений: 48
17.06.2009, 21:20  [ТС] 9
Может и так... Просто, когда впервые читаешь, то звучит (выглядит) чуть странно.

А как перейти на новую строку в TLabel ? Я об этом:
C++
1
lbl1->Text = "The 1-st line" + ??? + "The 2-nd line";
И еще, как получить ASCII символ, зная его код? (последний вопрос возник из 1ого, ибо первое, что пришло в голову так это CHR(13), но как на С++ бдует CHR(13)? )
0
125 / 123 / 0
Регистрация: 30.03.2009
Сообщений: 766
17.06.2009, 21:26 10
а по-моему, такие аффтары только запугивают и запутывают людей! указатели тут нужны как вешний снег! хочешь научиться пользоваться указателями, запрогай двунаправленный список - добавление, удаление и поиск элемента. тем более кто-то недавно просил такую задачку решить))

Добавлено через 5 минут 49 секунд
А как перейти на новую строку в TLabel
??? = "\n"
0
Заказ софта
343 / 188 / 21
Регистрация: 26.05.2009
Сообщений: 863
17.06.2009, 21:32 11
C++
1
2
char symbol = 65; //65 - это код.
    printf("Symbol: %c\n", symbol); //Напечатать символ, соответствующий коду.
0
0 / 0 / 0
Регистрация: 08.06.2009
Сообщений: 48
17.06.2009, 22:26  [ТС] 12
Спасибо всем за помощь
0
17.06.2009, 22:26
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
17.06.2009, 22:26
Помогаю со студенческими работами здесь

Решение квадратного уравнения
Буду очень благодарна и признательна если кто в этом разбирается и поможет. Необходимо на Лиспе...

Решение квадратного уравнения
Доброго времени суток. Нужна помощь в решении задачи по паскалю. Задача простейшая, но вот выдаёт...

Решение квадратного уравнения
Здравствуйте. Тут такое дело, что дали написать программку с использованием классов решения...

решение квадратного уравнения
Ребят, помогите с составлением программы... Вновь слезно прошу! Добавлено через 28 минут S O...


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Опции темы

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