Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <stdio.h>
- #include <math.h>
- struct roots {
- double x1;
- double x2;
- int n;
- // Метод для печати корней уравнения
- void print() {
- if (n < 0) {
- printf("Уравнение имеет бесконечное количество корней.\n");
- } else if (n == 0) {
- printf("НЕТ КОРНЕЙ!\n");
- } else if (n == 1) {
- printf("Уравнение имеет один корень: x = %.2f\n", x1);
- } else {
- printf("Уравнение имеет два корня: x1 = %.2f, x2 = %.2f\n", x1, x2);
- }
- }
- };
- struct equation {
- double a;
- double b;
- double c;
- equation(double a, double b, double c) {
- this->a = a;
- this->b = b;
- this->c = c;
- }
- equation(double k, double b) {
- this->b = k;
- this->c = b;
- this->a = 0;
- }
- roots solve() {
- roots r;
- if (a == 0) {
- if (b == 0) {
- if (c == 0) {
- r.n = -1; //бесконечно
- } else {
- r.n = 0; //нет корней
- }
- } else {
- r.n = 1; //один корень
- r.x1 = -(b / c);
- }
- } else {
- double d = b * b - 4 * a * c;
- if (d < 0) {
- r.n = 0; //нет корней
- } else if (d == 0) {
- r.n = 1; //один корень
- r.x1 = -b / (2 * a);
- } else {
- r.n = 2; //два корня
- r.x1 = (-b + sqrt(d)) / (2 * a);
- r.x2 = (-b - sqrt(d)) / (2 * a);
- }
- }
- return r;
- }
- };
- int main() {
- double a, b, c;
- printf("Введите коэффициенты a, b, c для уравнения в формате: ");
- if (scanf("%lf %lf", &a, &b) == 2) {
- if (getchar() == '\n') {
- equation eq(a, b);
- roots r = eq.solve();
- r.print();
- } else {
- if (scanf("%lf", &c) == 1) {
- equation eq(a, b, c);
- roots r = eq.solve();
- r.print();
- } else {
- printf("Неверный ввод.\n");
- }
- }
- } else {
- printf("Неверный ввод.\n");
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement