Нужно разбить на подпрограммы, чтобы математика была отдельным блоком - 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.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д