Spicke

214124124

Jan 20th, 2017
164
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pascal 21.69 KB | None | 0 0
  1. uses
  2. Crt, compl,CompMatr, compvect, vect;
  3.  
  4. const
  5.   MENU_X = 15;
  6.   MENU_Y = 5;
  7.   MENY_ITEMS = 7;
  8.   eps = 0.0001;
  9.  
  10. procedure DrawMenu(x, y: integer);//Рисуем меню
  11. begin
  12.   textbackground(blue);
  13.   ClrScr;
  14.   textcolor(white);
  15.   gotoxy(x, y);write('Комплексные числа');
  16.   gotoxy(x, y + 1);write('Комплексные матрицы');
  17.   gotoxy(x, y + 2);write('Комплексные векторы');
  18.   gotoxy(x, y + 3);write('Вектора');
  19.   gotoxy(x, y + 4);write('Дополнительные примеры');
  20.   gotoxy(x, y + 5);write('Экзамен');
  21.   gotoxy(x, y + 6);write('Exit');
  22. end;
  23.  
  24. procedure DrawExam(x, y: integer);
  25. begin
  26.   clrscr;
  27.   textcolor(white);
  28.   gotoxy(x, y); write('Задача #1');
  29.   gotoxy(x, y + 1); write('Задача #2');
  30.   gotoxy(x, y + 2); write('Exit');
  31. end;
  32.  
  33. procedure DrawCiklNumbers(x, y: integer);
  34. begin
  35.   clrscr;
  36.   textcolor(white);
  37.   gotoxy(x, y); write('Косинус комплексного числа');
  38.   gotoxy(x, y + 1); write('Синус комплексного числа');
  39.   gotoxy(x, y + 2); write('Exp комплексного числа');
  40.   gotoxy(x, y + 3); write('Exit');
  41. end;
  42.  
  43.  
  44. function SelectMenu(x, y, count: integer): integer;//курсор выбора пункта меню
  45. var
  46.   i, current, key: integer;
  47. begin
  48.   textcolor(yellow);
  49.   current := 1;
  50.   while true do
  51.   begin
  52.     //Рисуем
  53.     for i := 1 to count do
  54.     begin
  55.       gotoxy(x, y + i - 1);
  56.       write(' ');
  57.     end;
  58.     gotoxy(x, y + current - 1);
  59.     write('>');
  60.    
  61.     //Обрабатывает нажатые клавиши
  62.     key := Ord(ReadKey);
  63.     if key = 13 then break; // Прерывание цикла
  64.     if key = 38 then current := current - 1;
  65.     if key = 40 then current := current + 1;
  66.     if current <= 0 then current := count;
  67.     if current > count then current := 1;
  68.   end;
  69.   Result := current;
  70. end;
  71.  
  72. procedure wait;
  73. begin
  74.   repeat until KeyPressed;
  75.   while KeyPressed do ReadKey
  76. end;
  77.  
  78. procedure zada4a(var r: complex);
  79. var w3, x3, z2, s3, s2, y3, p3, p1: complex;
  80.     k3: integer;
  81. begin
  82.     one(p3);
  83.     one(p1);
  84.     zero(s3);
  85.     k3 := 0;
  86.     //output(z);
  87.     if (Moduz(r) <= 1) then
  88.     begin
  89.         writeln('Условие |z| > 1 не выполняется');
  90.         exit
  91.     end;
  92.    
  93.     Prod(2,r,z2);
  94.    
  95.     while (Moduz(p3) >= eps) do
  96.     begin
  97.         inc(k3);
  98.         Prod(1/(k3+1),z2,x3);
  99.         Mult(p3,x3,p3);
  100.         Add(s3,p3,s3);
  101.     end;
  102.    
  103.    inv(r,y3);
  104.     while(Moduz(p1) >= eps) do
  105.     begin
  106.         mult(p1,y3,p1);
  107.         Add(s2,p1,s2);
  108.     end;
  109.    
  110.     Add(s3,s2,w3);
  111.     output(w3);
  112.     writeln
  113. end;
  114.  
  115. procedure zada4a2;
  116. var a: array[1..n,1..n] of real;
  117.     i, j, k: integer;
  118.     s: real;
  119. begin
  120.     k := 0;
  121.     for i := 1 to n do
  122.     begin
  123.         for j := 1 to n do
  124.         begin
  125.             read(a[i,j])
  126.         end;
  127.     end;
  128.    
  129.     clrscr;
  130.     for i := 1 to n do
  131.     begin
  132.         for j := 1 to n do
  133.         begin
  134.             write(a[i,j]:4);
  135.         end;
  136.         writeln;
  137.     end;
  138.     writeln;
  139.     for i := 1 to n do
  140.         for j := 1 to n do
  141.         begin
  142.             if (a[i,j] > 0) then
  143.             begin
  144.                 s := s + a[i,j];
  145.                 inc(k)
  146.             end;
  147.         end;
  148.     if (k > 0) then s := s / k;
  149.    
  150.     for i := 1 to n do
  151.         for j := 1 to n do
  152.           if (a[i,j] < 0) then
  153.             if(k > 0) then a[i,j] := a[i,j] + s;
  154.        
  155.     for i := 1 to n do
  156.     begin
  157.         for j := 1 to n do
  158.         begin
  159.             write(a[i,j]:4);
  160.         end;
  161.         writeln;
  162.     end;
  163. end;
  164.  
  165. var
  166.   n, j: integer;
  167.   run: boolean;
  168.   a, nrm, scl: real;
  169.   u, v, w, r: Complex;
  170.   b, c, e: Matrix;
  171.   l, m, k: Cvector;
  172.   x, y, z: vector;
  173.   S: Complex;
  174.  
  175. begin
  176.   run := true;
  177.   while run do
  178.   begin
  179.     DrawMenu(MENU_X, MENU_Y); //Рисуем меню
  180.     n := SelectMenu(MENU_X - 2, MENU_Y, MENY_ITEMS); //Возвращает пункт меню
  181.     case n of
  182.       1:
  183.         begin
  184.           clrscr;  
  185.           DrawComplexNumbers(MENU_X, MENU_Y);
  186.           j := selectmenu(MENU_X - 2, MENU_Y, 9);
  187.           case j of
  188.             1:
  189.               begin
  190.                 clrscr;
  191.                 textcolor(white);
  192.                 writeln('Для продолжения введите 1 число');
  193.                 input(u);
  194.                 writeln('Для продолжения введите 2 число');
  195.                 input(v);
  196.                 add(u, v, W);
  197.                 writeln('Результат программы ');
  198.                 output(W);
  199.                 writeln;writeln('Для продолжения нажмите на любую клавишу...');wait;
  200.               end;
  201.             2:
  202.               begin
  203.                 clrscr;
  204.                 textcolor(white);
  205.                 writeln('Для продолжения введите 1 число');
  206.                 input(u);
  207.                 writeln('Для продолжения введите 2 число');
  208.                 input(v);
  209.                 sub(u, v, w);
  210.                 writeln('Результат программы ');
  211.                 output(W);
  212.                 writeln;writeln('Для продолжения нажмите на любую клавишу...');wait;
  213.               end;
  214.             3:
  215.               begin
  216.                 clrscr;
  217.                 textcolor(white);
  218.                 writeln('Для продолжения введите 1 число');
  219.                 input(u);
  220.                 writeln('Для продолжения введите 2 число');
  221.                 input(v);
  222.                 mult(u, v, w);
  223.                 writeln('Результат программы ');
  224.                 output(W);
  225.                 writeln;writeln('Для продолжения нажмите на любую клавишу...');wait;
  226.               end;
  227.             4:
  228.               begin
  229.                 clrscr;
  230.                 textcolor(white);
  231.                 writeln('Для продолжения введите 1 число');
  232.                 input(u);
  233.                 writeln('Для продолжения введите 2 число');
  234.                 input(v);
  235.                 divz(u, v, W);
  236.                 writeln('Результат программы ');
  237.                 output(W);
  238.                 writeln;writeln('Для продолжения нажмите на любую клавишу...');wait;
  239.               end;
  240.             5:
  241.               begin
  242.                 clrscr;
  243.                 textcolor(white);
  244.                 writeln('Для продолжения введите число ');
  245.                 input(u);
  246.                 inv(u, W);
  247.                 writeln('Результат программы ');
  248.                 output(W);
  249.                 writeln;writeln('Для продолжения нажмите на любую клавишу...');wait;
  250.               end;
  251.             6:
  252.               begin
  253.                 clrscr;
  254.                 textcolor(white);
  255.                 writeln('Для продолжения введите скаляр');
  256.                 readln(a);
  257.                 writeln('Для продолжения введите число');
  258.                 input(v);
  259.                 prod(a, v, W);
  260.                 output(W);
  261.                 writeln;writeln('Для продолжения нажмите на любую клавишу...');wait;
  262.               end;
  263.             7:
  264.               begin
  265.                 clrscr;
  266.                 textcolor(white);
  267.                 writeln('Для продолжения введите число ');
  268.                 input(u);
  269.                 a := Moduz(u);
  270.                 writeln(a);
  271.                 writeln;writeln('Для продолжения нажмите на любую клавишу...');wait;
  272.               end;
  273.             8:
  274.               begin
  275.                 clrscr;
  276.                 textcolor(white);
  277.                 writeln('Для продолжения введите число ');
  278.                 input(u);
  279.                 codj(u, W);
  280.                 output(W);
  281.                 writeln;writeln('Для продолжения нажмите на любую клавишу...');wait;
  282.               end;
  283.           end;
  284.         end;
  285.       2:
  286.         begin
  287.           clrscr;
  288.           DrawComplexMenu(MENU_X, MENU_Y);
  289.           j := selectmenu(MENU_X - 2, MENU_Y, 6);
  290.           case j of
  291.             1:
  292.               begin
  293.                 clrscr;
  294.                 textcolor(white);
  295.                 writeln('1 матрица ');
  296.                 InputMatrix(b);
  297.                 writeln('2 матрица ');
  298.                 InputMatrix(c);
  299.                 addmatrix(b, c, e);
  300.                 writeln('Результат программы ');
  301.                 outputmatrix(e);
  302.                 writeln;writeln('Для продолжения нажмите на любую клавишу...');wait;
  303.               end;
  304.             2:
  305.               begin
  306.                 clrscr;
  307.                 textcolor(white);
  308.                 writeln('1 матрица ');
  309.                 InputMatrix(b);
  310.                 writeln('2 матрица ');
  311.                 InputMatrix(c);
  312.                 MultMatrix(b, c, e);
  313.                 writeln('Результат программы ');
  314.                 outputmatrix(e);
  315.                 writeln;writeln('Для продолжения нажмите на любую клавишу...');wait;
  316.               end;
  317.             3:
  318.               begin
  319.                 clrscr;
  320.                 textcolor(white);
  321.                 writeln('Матрица ');
  322.                 InputMatrix(b);
  323.                 nrm := norm(b);
  324.                 writeln('Результат программы ', nrm);
  325.                 writeln;writeln('Для продолжения нажмите на любую клавишу...');wait;
  326.               end;
  327.             4:
  328.               begin
  329.                 clrscr;
  330.                 textcolor(white);
  331.                 writeln('Матрица ');
  332.                 InputMatrix(b);
  333.                 write('Введите скаляр');
  334.                 readln(scl);
  335.                 prodmatrix(scl, b, c);
  336.                 writeln('Результат программы ');
  337.                 outputmatrix(c);
  338.                 writeln;writeln('Для продолжения нажмите на любую клавишу...');wait;
  339.               end;
  340.             5:
  341.               begin
  342.                 clrscr;
  343.                 textcolor(white);
  344.                 writeln('Матрица ');
  345.                 InputMatrix(b);
  346.                 Expmatrix(b, c);
  347.                 writeln('Результат программы ');
  348.                 outputmatrix(c);
  349.                 writeln;writeln('Для продолжения нажмите на любую клавишу...');wait;
  350.               end;
  351.           end;
  352.         end;
  353.       3:
  354.         begin
  355.           clrscr;
  356.           DrawCompVectMenu(MENU_X, MENU_Y);
  357.           j := selectmenu(MENU_X - 2, MENU_Y, 9);
  358.           case j of
  359.             1:
  360.               begin
  361.                 clrscr;
  362.                 textcolor(white);
  363.                 writeln('1 Вектор ');
  364.                 InputCVector(l);
  365.                 writeln('2 Вектор ');
  366.                 InputCVector(m);
  367.                 addCvector(l, m, k);
  368.                 writeln('Результат программы ');
  369.                 outputCvector(k);
  370.                 writeln;writeln('Для продолжения нажмите на любую клавишу...');wait;
  371.               end;
  372.             2:
  373.               begin
  374.                 clrscr;
  375.                 textcolor(white);
  376.                 writeln('1 Вектор ');
  377.                 InputCVector(l);
  378.                 writeln('2 Вектор ');
  379.                 InputCVector(m);
  380.                 SubCVector(l, m, k);
  381.                 writeln('Результат программы ');
  382.                 outputCvector(k);
  383.                 writeln;writeln('Для продолжения нажмите на любую клавишу...');wait;
  384.               end;
  385.             3:
  386.               begin
  387.                 clrscr;
  388.                 textcolor(white);
  389.                 writeln('Вектор ');
  390.                 InputCVector(m);
  391.                 writeln('Скаляр ');
  392.                 readln(scl);
  393.                 RealProdCVector(scl, m, k);
  394.                 writeln('Результат программы ');
  395.                 outputCvector(k);
  396.                 writeln;writeln('Для продолжения нажмите на любую клавишу...');wait;
  397.               end;
  398.             4:
  399.               begin
  400.                 clrscr;
  401.                 textcolor(white);
  402.                 writeln('Комплексное число ');
  403.                 Input(u);
  404.                 writeln('Вектор ');
  405.                 InputCVector(m);
  406.                 MultComplexCVector(u, m, k);
  407.                 writeln('Результат программы ');
  408.                 outputCvector(k);
  409.                 writeln;writeln('Для продолжения нажмите на любую клавишу...');wait;
  410.               end;
  411.             5:
  412.               begin
  413.                 clrscr;
  414.                 textcolor(white);
  415.                 writeln('1 Вектор ');
  416.                 InputCVector(l);
  417.                 writeln('2 Вектор ');
  418.                 InputCVector(m);
  419.                 ScalarProdCvector(l, m, u);
  420.                 writeln('Результат программы ');
  421.                 output(u);
  422.                 writeln;writeln('Для продолжения нажмите на любую клавишу...');wait;
  423.               end;
  424.             6:
  425.               begin
  426.                 clrscr;
  427.                 textcolor(white);
  428.                 writeln('1 Вектор ');
  429.                 InputCVector(l);
  430.                 writeln('2 Вектор ');
  431.                 InputCVector(m);
  432.                 CVectorProd(l, m, k);
  433.                 writeln('Результат программы ');
  434.                 outputCvector(k);
  435.                 writeln;writeln('Для продолжения нажмите на любую клавишу...');wait;
  436.               end;
  437.             7:
  438.               begin
  439.                 clrscr;
  440.                 textcolor(white);
  441.                 writeln('1 Вектор ');
  442.                 InputCVector(l);
  443.                 writeln('2 Вектор ');
  444.                 InputCVector(m);
  445.                 writeln('3 Вектор ');
  446.                 InputCVector(k);
  447.                 MixProdOfCVector(l, m, k, u);
  448.                 writeln('Результат программы ');
  449.                 output(u);
  450.                 writeln;writeln('Для продолжения нажмите на любую клавишу...');wait;
  451.               end;
  452.             8:
  453.               begin
  454.                 clrscr;
  455.                 textcolor(white);
  456.                 writeln('1 Вектор ');
  457.                 InputCVector(l);
  458.                 writeln('2 Вектор ');
  459.                 InputCVector(m);
  460.                 ModulOfCVector(l, u);
  461.                 writeln('Результат программы ');
  462.                 output(u);
  463.                 writeln;writeln('Для продолжения нажмите на любую клавишу...');wait;
  464.               end;
  465.           end;
  466.         end;
  467.       4:
  468.         begin
  469.           clrscr;
  470.           DrawVectMenu(MENU_X, MENU_Y);
  471.           j := selectmenu(MENU_X - 2, MENU_Y, 8);
  472.           case j of
  473.             1:
  474.               begin
  475.                 clrscr;
  476.                 textcolor(white);
  477.                 writeln('1 Вектор ');
  478.                 InputVector(x);
  479.                 writeln('2 Вектор ');
  480.                 InputVector(y);
  481.                 AddVector(x, y, z);
  482.                 writeln('Результат программы ');
  483.                 OutputVector(z);
  484.                 writeln;writeln('Для продолжения нажмите на любую клавишу...');wait;
  485.               end;
  486.             2:
  487.               begin
  488.                 clrscr;
  489.                 textcolor(white);
  490.                 writeln('1 Вектор ');
  491.                 InputVector(x);
  492.                 writeln('2 Вектор ');
  493.                 InputVector(y);
  494.                 SubVector(x, y, z);
  495.                 writeln('Результат программы ');
  496.                 OutputVector(z);
  497.                 writeln;writeln('Для продолжения нажмите на любую клавишу...');wait;
  498.               end;
  499.             3:
  500.               begin
  501.                 clrscr;
  502.                 textcolor(white);
  503.                 writeln('1 Вектор ');
  504.                 InputVector(x);
  505.                 writeln('2 Вектор ');
  506.                 InputVector(y);
  507.                 VectProd(X, y, z);
  508.                 writeln('Результат программы ');
  509.                 OutputVector(z);
  510.                 writeln;writeln('Для продолжения нажмите на любую клавишу...');wait;
  511.               end;
  512.             4:
  513.               begin
  514.                 clrscr;
  515.                 textcolor(white);
  516.                 writeln('1 Вектор ');
  517.                 InputVector(x);
  518.                 writeln('2 Вектор ');
  519.                 InputVector(y);
  520.                 scl := ScalarProd(X, y);
  521.                 writeln(scl);
  522.                 writeln;writeln('Для продолжения нажмите на любую клавишу...');wait;
  523.               end;
  524.             5:
  525.               begin
  526.                 clrscr;
  527.                 textcolor(white);
  528.                 writeln('Вектор ');
  529.                 InputVector(x);
  530.                 Scl := ModulVector(x);
  531.                 writeln('Результат программы ');
  532.                 OutputVector(z);
  533.                 writeln(scl);
  534.                 writeln;writeln('Для продолжения нажмите на любую клавишу...');wait;
  535.               end;
  536.             6:
  537.               begin
  538.                 clrscr;
  539.                 textcolor(white);
  540.                 writeln('Вектор ');
  541.                 InputVector(x);
  542.                 writeln('Скаляр ');
  543.                 readln(scl);
  544.                 RealProdVector(scl, X, y);
  545.                 writeln('Результат программы ');
  546.                 outputvector(y);
  547.                 writeln;writeln('Для продолжения нажмите на любую клавишу...');wait;
  548.               end;
  549.             7:
  550.               begin
  551.                 clrscr;
  552.                 textcolor(white);
  553.                 writeln('1 Вектор ');
  554.                 InputVector(x);
  555.                 writeln('2 Вектор ');
  556.                 InputVector(y);
  557.                 writeln('3 Вектор ');
  558.                 InputVector(z);
  559.                 scl := MixProd(X, y, z);
  560.                 writeln(scl);
  561.                 writeln;writeln('Для продолжения нажмите на любую клавишу...');wait;
  562.               end;
  563.           end;
  564.         end;
  565.       5:
  566.         begin
  567.           clrscr;
  568.           DrawCiklNumbers(MENU_X, MENU_Y);
  569.           j := selectmenu(MENU_X - 2, MENU_Y, 9);
  570.           case j of
  571.             1:
  572.               begin
  573.                 clrscr;
  574.                 textcolor(white);
  575.                 writeln('Для продолжения введите число');
  576.                 input(u);
  577.                 CosCompl(u,S);
  578.                 writeln('Результат программы ');
  579.                 output(S);
  580.                 writeln;writeln('Для продолжения нажмите на любую клавишу...');wait;
  581.               end;
  582.             2:
  583.               begin
  584.                 clrscr;
  585.                 textcolor(white);
  586.                 writeln('Для продолжения введите число');
  587.                 input(u);
  588.                 SinCompl(u,S);
  589.                 writeln('Результат программы ');
  590.                 output(S);
  591.                 writeln;writeln('Для продолжения нажмите на любую клавишу...');wait;
  592.               end;
  593.             3:
  594.               begin
  595.                 clrscr;
  596.                 textcolor(white);
  597.                 writeln('Для продолжения введите число');
  598.                 input(u);
  599.                 ExpCompl(u,S);
  600.                 writeln('Результат программы ');
  601.                 output(S);
  602.                 writeln;writeln('Для продолжения нажмите на любую клавишу...');wait;
  603.               end;
  604.           end;
  605.         end;
  606.       6:
  607.       begin
  608.           clrscr;
  609.           DrawExam(MENU_X, MENU_Y);
  610.           j := selectmenu(MENU_X - 2, MENU_Y, 4);
  611.           case j of
  612.             1:
  613.               begin
  614.                 clrscr;
  615.                 textcolor(white);
  616.                 input(r);
  617.                 zada4a(r);
  618.                 writeln;writeln('Для продолжения нажмите на любую клавишу...');wait;
  619.               end;
  620.             2:
  621.               begin
  622.                   clrscr;
  623.                   textcolor(white);
  624.                   zada4a2;
  625.                   writeln;writeln('Для продолжения нажмите на любую клавишу...');wait;
  626.               end;
  627.           end;
  628.         end;    
  629.       7: begin
  630.           clrscr;
  631.           textcolor(white);
  632.           run := false;
  633.          end;          
  634.     end;
  635.   end;
  636. end.
Advertisement
Add Comment
Please, Sign In to add comment