Решение квадратного уравнения - 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