Нужно разбить на подпрограммы, чтобы математика была отдельным блоком - C (СИ)
Формулировка задачи:
#include "stdafx.h"
#include <conio.h>
#include <iostream>
#include <math.h>
int main()
{
float a,b,c,d,x,x1,x2;
scanf ("%f %f %f",&a,&b,&c);
if (a==0)
{
if (b==0) printf ("Uravnenie ne imeet resheniya\n");
else printf ("Uravnenie ne kvadratnoe %0.f\n",x=-c/b);
}
else
{
d=b*b-(4*a*c);
if (d<0) printf ("D<0 reshenij net\n");
else if (d==0) printf ("D=0 Odno reshenie X=%0.f\n",x=-b/(2*a));
else
{
printf ("Dva resheniya ");
printf ("X1=%0.f\n",x1=(-b+sqrt(d))/(2*a));
printf ("X2=%0.f\n",x2=(-b-sqrt(d))/(2*a));
}
}
system("PAUSE");Решение задачи: «Нужно разбить на подпрограммы, чтобы математика была отдельным блоком»
textual
Листинг программы
#include <stdio.h>
#include <math.h>
int Solv(double a,double b,double c,double& x1,double&x2)
{
double d;
if (a==0)
return 0;
d=b*b-(4*a*c);
if (d<0)
return 0;
if (d==0)
{
x1=-b/(2*a);
return 1;
}
x1=(-b+sqrt(d))/(2*a);
x2=(-b-sqrt(d))/(2*a);
return 2;
}
int main()
{
double a,b,c,x1,x2;
scanf("%lf%lf%lf",&a,&b,&c);
int n=Solv(a,b,c,x1,x2);
switch(n)
{
case 0:
puts("No solutions");
break;
case 1:
printf("x1=%lf\n",x1);
break;
case 2:
printf("x1=%lf\n",x1);
printf("x2=%lf\n",x2);
}
system("PAUSE");
return 0;
}
Объяснение кода листинга программы
- В функции
mainобъявлены переменныеa,b,c,x1,x2. - В функции
mainпроисходит считывание значений переменныхa,b,cс помощью функцииscanf. - Результат функции
Solvсохраняется в переменнуюn. - В зависимости от значения переменной
nвыводится сообщение об отсутствии решений, или значенияx1, или значенияx1иx2. - В конце программы выводится сообщение
PAUSEи возвращается 0. - В функции
Solvпроисходит вычисление дискриминантаdи проверка его значений. - Если
d<0, то возвращается 0. - Если
d=0, то возвращается 1 и вычисляетсяx1. - Если
d>0, то вычисляютсяx1иx2и возвращается 2.