Нужно разбить на подпрограммы, чтобы математика была отдельным блоком - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Листинг программы
  1. #include "stdafx.h"
  2. #include <conio.h>
  3. #include <iostream>
  4. #include <math.h>
  5. int main()
  6. {
  7. float a,b,c,d,x,x1,x2;
  8. scanf ("%f %f %f",&a,&b,&c);
  9. if (a==0)
  10. {
  11. if (b==0) printf ("Uravnenie ne imeet resheniya\n");
  12. else printf ("Uravnenie ne kvadratnoe %0.f\n",x=-c/b);
  13. }
  14. else
  15. {
  16. d=b*b-(4*a*c);
  17. if (d<0) printf ("D<0 reshenij net\n");
  18. else if (d==0) printf ("D=0 Odno reshenie X=%0.f\n",x=-b/(2*a));
  19. else
  20. {
  21. printf ("Dva resheniya ");
  22. printf ("X1=%0.f\n",x1=(-b+sqrt(d))/(2*a));
  23. printf ("X2=%0.f\n",x2=(-b-sqrt(d))/(2*a));
  24. }
  25. }
  26. system("PAUSE");

Решение задачи: «Нужно разбить на подпрограммы, чтобы математика была отдельным блоком»

textual
Листинг программы
  1. #include <stdio.h>
  2. #include <math.h>
  3. int Solv(double a,double b,double c,double& x1,double&x2)
  4. {
  5.     double d;
  6.     if (a==0)
  7.         return 0;
  8.     d=b*b-(4*a*c);  
  9.     if (d<0)
  10.         return 0;    
  11.     if (d==0)
  12.     {
  13.          x1=-b/(2*a);
  14.          return 1;
  15.     }  
  16.      x1=(-b+sqrt(d))/(2*a);
  17.      x2=(-b-sqrt(d))/(2*a);
  18.      return 2;
  19.  }
  20. int main()  
  21. {  
  22.     double a,b,c,x1,x2;  
  23.     scanf("%lf%lf%lf",&a,&b,&c);
  24.     int n=Solv(a,b,c,x1,x2);
  25.     switch(n)
  26.     {
  27.      case 0:
  28.         puts("No solutions");
  29.         break;
  30.      case 1:
  31.        printf("x1=%lf\n",x1);
  32.        break;
  33.      case 2:
  34.        printf("x1=%lf\n",x1);
  35.        printf("x2=%lf\n",x2);
  36.     }
  37.     system("PAUSE");
  38.     return 0;
  39. }

Объяснение кода листинга программы

  1. В функции main объявлены переменные a, b, c, x1, x2.
  2. В функции main происходит считывание значений переменных a, b, c с помощью функции scanf.
  3. Результат функции Solv сохраняется в переменную n.
  4. В зависимости от значения переменной n выводится сообщение об отсутствии решений, или значения x1, или значения x1 и x2.
  5. В конце программы выводится сообщение PAUSE и возвращается 0.
  6. В функции Solv происходит вычисление дискриминанта d и проверка его значений.
  7. Если d<0, то возвращается 0.
  8. Если d=0, то возвращается 1 и вычисляется x1.
  9. Если d>0, то вычисляются x1 и x2 и возвращается 2.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 3.769 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы