Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
52 changes: 52 additions & 0 deletions HomeWork1/GnedykVolodimir_HomeWork1.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
#include <cmath>
#include <cstdio>
#include <iostream>
int main(int argc, char const *argv[]) {
std::cout << "Вас приветствует програма Quadratic_equation." << std::endl;
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Я не очень сильно рекомендую использовать руский текст в консольных приложениях. Ну это на ваше усмотрение)

std::cout
<< "Данная програма предназначена для опредиления решений квадратного "
"уравнения типа А*х^2+B*х+С=0 над полем действительных чисел."
<< std::endl;
const short kShortMin = std::numeric_limits<short>::min();
const short kShortMax = std::numeric_limits<short>::max();
short A;
std::cout << "Введите значение параметра А в виде целого ненулевого числа в "
"диапазоне от "
<< kShortMin << " до " << kShortMax << std::endl;
std::cin >> A;
// Если А=0, то у нас нет квадратного уравнения
while ((A < kShortMin) && (A > kShortMax) && (A == 0)) {
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

у вас эта проверка никогда не выполниться, т.к. тип переменной A и kShortMin одного типа.
Вам нужно сделать тип переменной A больше чем тип переменной kShortMin. Например int A

std::cout << "Параметр А задан не верно\n";
return 1;
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ну тут немного не верно, если вы делаете while это значит что вы даете пользователю возможность повторно ввести данные, а вы делаете return 1, т.е. в таком случае лучше написать if а не цикл. Или используйте цикл как у вас это есть, но тогда уберите return а добавте cin

}
short B;
std::cout
<< "Введите значение параметра B в виде целого числа в диапазоне от "
<< kShortMin << " до " << kShortMax << std::endl;
std::cin >> B;
while ((B < kShortMin) && (B > kShortMax)) {
std::cout << "Параметр B задан не верно\n";
return 1;
}
short C;
std::cout
<< "Введите значение параметра B в виде целого числа в диапазоне от "
<< kShortMin << " до " << kShortMax << std::endl;
std::cin >> C;
while ((C < kShortMin) && (C > kShortMax)) {
std::cout << "Параметр С задан не верно\n";
return 1;
}
auto D = B ^ 2 - 4 * A * C;
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

оператор ^ в языке С++ это не оператор возведение в степень, это побитовый xor. Вам нужно просто написать B * B

if (D < 0) {
std::cout
<< "Заданое квадратное уравнение не имеет действительных решеий\n";
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

и что дальше пошли выполнять код? в этом случае вы получили решение и должны сделать return 0 дальше выполнять код не имеет смысла

}
auto X1 = (-B + std::sqrt(D)) / (2 * A);
auto X2 = (-B - std::sqrt(D)) / (2 * A);
std::cout << "Заданое квадратное уравнение имеет 2 действительных решеий\n";
std::cout << "Первое решение Х1=" << X1 << std::endl;
std::cout << "Второе решение Х2=" << X2 << std::endl;

return 0;
}