Решение квадратного уравнения - C (СИ) (77109)
Формулировка задачи:
Корни X1 и X2 - передаются по ссылке и "возвращаются" в main()
сама функция QuadEqu() возвращает 0, если решения нет и 1 - если решение есть
помогите доделать вот эту програмулечку
#include <stdio.h> #include <stdlib.h> #include <windows.h> /*здесь должна быть функция функция QuadEqu() возвращает 0, если решения нет и 1 - если решение есть и чтобы корни х1 и х2 - передавались по ссылке например *х1 */ int main() { double a, b, c, d; a=b=c=d=0.0; SetConsoleCP(1251); SetConsoleOutputCP(1251); printf("Введите коэффициент А: "); scanf("%lf", &a); printf("Введите коэффициент В: "); scanf("%lf", &b); printf("Введите коэффициент C: "); scanf("%lf", &c); if(a==0.0) {printf("Решений нет - А=0\n"); system("pause"); return 1;} d = b*b - 4.0 * a *c; if(d<0.0) {printf("Решений нет - D<0\n"); system("pause"); return 2;} if(d==0.0) printf("Один корень - %.2lf\n", -b/2.0/a); else printf("Два корня: X1= %.2lf X2= %.2lf \n", (-b-sqrt(d))/2.0/a, (-b+sqrt(d))/2.0/a ); system("pause"); return 0; }
Решение задачи: «Решение квадратного уравнения»
textual
Листинг программы
#include <stdio.h> #include <stdlib.h> #include <windows.h> #define CP SetConsoleCP(1251); SetConsoleOutputCP(1251); #define NEWLINE putchar('\n'); #define konec system("pause"); return 0; double QuadEqu(double a, double b, double c, double d, double *X1, double *X2); int main() { double a, b, c, d, result, X1, X2; a=b=c=d=X1=X2=result=0.0; CP printf("Введите число a: "); scanf("%lf", &a); printf("Введите число b: "); scanf("%lf", &b); printf("Введите число c: "); scanf("%lf", &c); printf("Вы ввели: a= %.2lf b= %.2lf c= %.2lf \n", a, b, c); result = QuadEqu(a, b, c, d, &X1, &X2); printf("X1 = %.2lf, X2 = %.2lf\n", X1, X2); printf("Функция вернула значение: %.2lf\n", result); NEWLINE konec } double QuadEqu(double a, double b, double c, double d, double *X1, double *X2) { if(a == 0.0) {printf("Решения нет! a = 0 \n"); return 0.0;} d = b*b - 4 * a * c; if(d < 0.0) {printf("Решения нет! d < 0 \n"); return 0.0;} if(d == 0.0) {printf("Один корень! \n"); *X1=*X2=(-b+sqrt(d))/2.0*a; return 1.0;} else *X1 = (-b+sqrt(d))/2.0*a; *X2 = (-b-sqrt(d))/2.0*a; return 1.0; }
Объяснение кода листинга программы
- Подключение необходимых библиотек для работы с консолью и вводом-выводом данных
- Определение функции
QuadEqu
, которая принимает значения a, b, c, d и возвращает корни квадратного уравнения - Ввод значений a, b, c, d с помощью функции
scanf
- Вывод введенных значений на экран
- Вызов функции
QuadEqu
с передачей ей введенных значений и сохранением результатов в переменных X1, X2 и result - Вывод значений X1, X2 на экран
- Вывод значения result на экран
- Возврат из функции
main
с помощьюkonec
- Если a равно нулю, выводится сообщение
Решения нет! a = 0
и функция возвращает 0 - Вычисление значения d как bb - 4a*c
- Если d меньше нуля, выводится сообщение
Решения нет! d < 0
и функция возвращает 0 - Если d равно нулю, выводится сообщение
Один корень!
и значения X1 и X2 вычисляются как (-b+sqrt(d))/2.0*a и сохраняются в переменных X1 и X2, после чего функция возвращает 1 - В противном случае, значения X1 и X2 вычисляются как (-b+sqrt(d))/2.0a и (-b-sqrt(d))/2.0a соответственно
- Функция возвращает 1
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д