Sailein

Polynoms source

Mar 25th, 2018
280
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 10.98 KB | None | 0 0
  1. //
  2. // Created by Sailein on 18.04.2018.
  3. //
  4. #include "Snake.h"
  5. int main ()
  6. {
  7.     PM p1, p2, p3;
  8.     int type, act, pol; // type- выбор типа коэффициентов/ act- выбор действие над многочленом/ pol- выбор многочлена
  9.     int test;
  10.  
  11.     printf("Нужно ли выполнить проверку функций?\n1 Да\n2 Нет\nОтвет   ");
  12.     scanf("%d", &test);
  13.     while ((test != 1) && (test != 2))
  14.     {
  15.         printf("ошибка(введите 1 или 2)\n");
  16.         scanf("%d", &test);
  17.     }
  18.     if (test == 1) printf("kek"); //test_all_functions(); // тут будет тестер потом
  19.  
  20.     printf("\n\nВыберите тип коэффициентов:");
  21.     printf("\n1-целые\n2-вещественные\n3-выйти из программы\n");
  22.     printf("Ответ   ");
  23.     scanf("%d", &type);
  24.     while ((type != 1) && (type != 2) && (type != 3)) {
  25.         printf("Ошибка(введите 1, 2 или 3)\n");
  26.         scanf("%d", &type);
  27.     }
  28.     while (type != 3) {
  29.  
  30.         // >>>>>>для целых<<<<<<  //
  31.         if (type == 1)
  32.         {
  33.             Scanner(&p1, Scan_int, sizeof(int));
  34.             Scanner(&p2, Scan_int, sizeof(int));
  35.             printf("\nP1(x)= ");
  36.             Printer(&p1, Print_int);
  37.             printf("\nP2(x)= ");
  38.             Printer(&p2, Print_int);
  39.             printf("\nКакое действие выполнить?\n1-сложение\n2-умножение\n3-умножение на скаляр\n4-подстановка аргумента\n5-коспозиция");
  40.             printf("Ответ   ");
  41.             scanf("%d", &act);
  42.             while ((act != 1) && (act != 2) && (act != 3) && (act != 4) && (act != 5))
  43.             {
  44.                 printf("\nошибка(вы можете выбрать 1, 2, 3, 4 или 5)\n");
  45.                 scanf("%d", &act);
  46.             }
  47.             if (act == 1)
  48.             {
  49.                 Create(Max(&p1, &p2)->max, sizeof(int));
  50.                 Summa(&Sum_int, &p1, &p2, &p3);
  51.                 printf("\nРезультат сложения многочленов P1 и P2: ");
  52.                 Printer(&p3, Print_int);
  53.             }
  54.             else if (act == 2)
  55.             {
  56.                 Create(p1.max + p2.max, sizeof(int));
  57.                 Mul(&Sum_int, &Mul_int, &p1, &p2, &p3);
  58.                 printf("Результат умножения многочленов P1 и P2: ");
  59.                 Printer(&p3, Print_int);
  60.                 Free(&p3);
  61.             }
  62.             else if (act == 3)
  63.             {
  64.                 int A;
  65.                 printf("\nКакой многочлен будем умножать на скаляр?:\n1-P1(x)\n2-P2(x)\nОтвет  ");
  66.                 scanf("%d", &pol);
  67.                 while ((pol != 1) && (pol != 2))
  68.                 {
  69.                     printf("ошибка(введите 1 или 2)\n");
  70.                     scanf("%d", &pol);
  71.                 }
  72.                 if (pol == 1)
  73.                 {
  74.                     printf("На какое число умножить многочлен P1?   ");
  75.                     scanf("%d", &A);
  76.                     Skalar(&Mul_int, &p1, (void* )&A);
  77.                     printf("P1(x)*%d=", A);
  78.                     Printer(&p1, Print_int);
  79.                 }
  80.                 else if (pol == 2)
  81.                 {
  82.                     printf("На какое число умножить многочлен P2?   ");
  83.                     scanf("%d", &A);
  84.                     Skalar(&Mul_int, &p2, (void *) &A);
  85.                     printf("P2(x)*%d=", A);
  86.                     Printer(&p2, Print_int);
  87.                 }
  88.             }
  89.             else if (act == 4)
  90.             {
  91.                 int x, res;
  92.                 printf("\nВ какой многочлен подставить значение аргумента?:\n1-P1(x)\n2-P2(x)\nОтвет   ");
  93.                 scanf("%d", &pol);
  94.                 while ((pol != 1) && (pol != 2))
  95.                 {
  96.                     printf("ошибка(введите 1 или 2)\n");
  97.                     scanf("%d", &pol);
  98.                 }
  99.                 if (pol == 1)
  100.                 {
  101.                     printf("\nx=");
  102.                     scanf("%d", &x);
  103.                     Subst(&Sum_int, &Mul_int, &p1,(void*)&x, (void*)&res);
  104.                     printf("P(%d)=%d\n", x, res);
  105.                 }
  106.                 else if (pol == 2)
  107.                 {
  108.                     printf("\nx=");
  109.                     scanf("%d", &x);
  110.                     Subst(&Sum_int, &Mul_int, &p2,(void*)&x, (void*)&res);
  111.                     printf("P(%d)=%d\n", x, res);
  112.                 }
  113.             }
  114.             else if (act == 5)
  115.             {
  116.                 printf("\nКак вы хотите сделать композицию:\n1-P1(x)в P2(x)\n2-P2(x) в P1(x)\nОтвет   ");
  117.                 scanf("%d", &pol);
  118.                 while ((pol != 1) && (pol != 2))
  119.                 {
  120.                     printf("ошибка(введите 1 или 2)\n");
  121.                     scanf("%d", &pol);
  122.                 }
  123.                 if (pol == 1)
  124.                 {
  125.                     Create(p1.max * p2.max, sizeof(int));
  126.                     Composition(&Mul_int, &Sum_int, &p2, &p1, &p3);
  127.                     printf("\nРезультат композиции P1 в P2: ");
  128.                     Printer(&p3, Print_int);
  129.                     Free(&p3);
  130.                 }
  131.                 if (pol == 2)
  132.                 {
  133.                     Create(p1.max * p2.max, sizeof(int));
  134.                     Composition(&Mul_int, &Sum_int, &p1, &p2, &p3);
  135.                     printf("\nРезультат композиции P2 в P1: ");
  136.                     Printer(&p3, Print_int);
  137.                     Free(&p3);
  138.                 }
  139.             }
  140.             Free(&p1);
  141.             Free(&p2);
  142.             Free(&p3);
  143.             type = 3;
  144.         }
  145.             //   >>>>>>для комплексных<<<<<<   //
  146.         else if (type == 2) {
  147.             Scanner(&p1, Scan_float, sizeof(float));
  148.             Scanner(&p2, Scan_float, sizeof(float));
  149.             printf("\nP1(x)= ");
  150.             Printer(&p1, Print_float);
  151.             printf("\nP2(x)= ");
  152.             Printer(&p2, Print_float);
  153.             printf("\nКакое действие выполнить?\n1-сложение\n2-умножение\n3-умножение на скаляр\n4-подстановка аргумента\n5-коспозиция\n");
  154.             printf("Ответ   ");
  155.             scanf("%d", &act);
  156.             while ((act != 1) && (act != 2) && (act != 3) && (act != 4) && (act != 5))
  157.             {
  158.                 printf("\nошибка(вы можете выбрать 1, 2, 3, 4 или 5)\n");
  159.                 scanf("%d", &act);
  160.             }
  161.             if (act == 1)
  162.             {
  163.                 Create(Max(&p1, &p2)->max, sizeof(float));
  164.                 Summa(&Sum_float, &p1, &p2, &p3);
  165.                 printf("\nРезультат сложения многочленов P1 и P2: ");
  166.                 Printer(&p3, Print_float);
  167.                 Free(&p3);
  168.             }
  169.             else if (act == 2)
  170.             {
  171.                 Create(p1.max + p2.max, sizeof(float));
  172.                 Mul(&Sum_float, &Mul_float, &p1, &p2, &p3);
  173.                 printf("Результат умножения многочленов P1 и P2: ");
  174.                 Printer(&p3, Print_float);
  175.                 Free(&p3);
  176.             }
  177.             else if (act == 3)
  178.             {
  179.                 float A;
  180.                 printf("\nКакой многочлен будем умножать на скаляр?:\n1-P1(x)\n2-P2(x)\nОтвет  ");
  181.                 scanf("%d", &pol);
  182.                 while ((pol != 1) && (pol != 2))
  183.                 {
  184.                     printf("ошибка(введите 1 или 2)\n");
  185.                     scanf("%d", &pol);
  186.                 }
  187.                 if (pol == 1)
  188.                 {
  189.                     printf("На какое число умножить многочлен P1?   ");
  190.                     scanf("%f", &A);
  191.                     Skalar(&Mul_float, &p1, (void* )&A);
  192.                     printf("P1(x)*%f=", A);
  193.                     Printer(&p1, Print_float);
  194.                 }
  195.                 else if (pol == 2)
  196.                 {
  197.                     printf("На какое число умножить многочлен P2?   ");
  198.                     scanf("%f", &A);
  199.                     Skalar(&Mul_float, &p2, (void *) &A);
  200.                     printf("P2(x)*%f=", A);
  201.                     Printer(&p2, Print_float);
  202.                 }
  203.             }
  204.             else if (act == 4)
  205.             {
  206.                 float x, res;
  207.                 printf("\nВ какой многочлен подставить значение аргумента?:\n1-P1(x)\n2-P2(x)\nОтвет   ");
  208.                 scanf("%d", &pol);
  209.                 while ((pol != 1) && (pol != 2))
  210.                 {
  211.                     printf("ошибка(введите 1 или 2)\n");
  212.                     scanf("%d", &pol);
  213.                 }
  214.                 if (pol == 1)
  215.                 {
  216.                     printf("\nx=");
  217.                     scanf("%f", &x);
  218.                     Subst(&Sum_float, &Mul_float, &p1,(void*)&x, (void*)&res);
  219.                     printf("P(%f)=%f\n", x, res);
  220.                 }
  221.                 else if (pol == 2)
  222.                 {
  223.                     printf("\nx=");
  224.                     scanf("%f", &x);
  225.                     Subst(&Sum_float, &Mul_float, &p2,(void*)&x, (void*)&res);
  226.                     printf("P(%f)=%f\n", x, res);
  227.                 }
  228.             }
  229.             else if (act == 5)
  230.             {
  231.                 printf("\nКак вы хотите сделать композицию:\n1-P1(x)в P2(x)\n2-P2(x) в P1(x)\nОтвет   ");
  232.                 scanf("%d", &pol);
  233.                 while ((pol != 1) && (pol != 2))
  234.                 {
  235.                     printf("ошибка(введите 1 или 2)\n");
  236.                     scanf("%d", &pol);
  237.                 }
  238.                 if (pol == 1)
  239.                 {
  240.                     Create(p1.max * p2.max, sizeof(float));
  241.                     Composition(&Mul_float, &Sum_float, &p2, &p1, &p3);
  242.                     printf("\nРезультат композиции P1 в P2: ");
  243.                     Printer(&p3, Print_float);
  244.                     Free(&p3);
  245.                 }
  246.                 if (pol == 2)
  247.                 {
  248.                     Create(p1.max * p2.max, sizeof(float));
  249.                     Composition(&Mul_float, &Sum_float, &p1, &p2, &p3);
  250.                     printf("\nРезультат композиции P2 в P1: ");
  251.                     Printer(&p3, Print_float);
  252.                     Free(&p3);
  253.                 }
  254.             }
  255.             Free(&p1);
  256.             Free(&p2);
  257.             type = 3;
  258.         }
  259.     }
  260.     system("pause");
  261.     return 0;
  262. }
Add Comment
Please, Sign In to add comment