Нужны комментарии к коду - Pascal (80407)

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

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

Листинг программы
  1. uses crt,graph;
  2. const n=2;
  3. var a,a1:array [1..n,1..n] of real;
  4. b,b1,x:array [1..n] of real;
  5. function f(a,b,c,x:real):real;
  6. begin
  7. f:=-a*x/b+c/b;
  8. end;
  9. var i, j, k,x0,y0: integer;
  10. delenie,xn,xk,m,z,x1,y1:real;
  11. s,s1:string;
  12. begin
  13. clrscr;
  14. writeln('Vedite X1:');
  15. readln(a[1,1]);
  16. writeln('Vedite Y1:');
  17. readln(a[1,2]);
  18. writeln('Vedite koeffesent 1:');
  19. readln(b[1]);
  20. writeln('Vedite X2:');
  21. readln(a[2,1]);
  22. writeln('Vedite Y2:');
  23. readln(a[2,2]);
  24. writeln('Vedite koeffesent 2:');
  25. readln(b[2]);
  26. a1:=a;
  27. b1:=b;
  28. writeln('Rasshirenaya matrisa: ');
  29. for i:=1 to n do
  30. begin
  31. for j:=1 to n do
  32. write (a[i,j]:6:2);
  33. write (b[i]:6:2);
  34. writeln;
  35. end;
  36.  
  37. for i:=1 to n-1 do
  38. begin
  39. for k:=i+1 to n do
  40. begin
  41. delenie:= a[k,i] / a[i,i];
  42. for j:=i+1 to n do
  43. a[k,j]:= a[k,j] - a[i,j] * delenie;
  44. b[k]:= b[k] - b[i] * delenie;
  45. end;
  46. end;
  47. for i:=n downto 1 do
  48. begin
  49. for j:= i+1 to n do
  50. b[i]:= b[i] - a[i,j] * x[j];
  51. x[i]:= b[i] / a[i,i];
  52. end;
  53. writeln('Otvet : ');
  54. for i:=1 to n do
  55. writeln('X[',i:1,']=', x[i]:1:2);
  56. write('Nagmite na libuy klavishu: ');
  57. readln;
  58. x0:=0;
  59. initgraph(x0,y0,'');{инициализация графического режима}
  60. xn:=-16;
  61. xk:=10;{интервал по Х}
  62. x0:=getmaxX div 2;{начало координат по Х}
  63. y0:=getmaxY div 2;{начало координат по Y}
  64. m:=(y0-40)/F(a1[1,1],a1[1,2],b1[1],xk);
  65. line(x0-round(17*m),y0,x0+round(17*m),y0);{оси}
  66. line(x0,0,x0,getmaxY);
  67. for i:=1 to 16 do{максимальное количество засечек в одну сторону}
  68. begin
  69. line(x0-3,y0-round(i*m),x0+3,y0-round(i*m));{засечки на оси У}
  70. line(x0-3,y0+round(i*m),x0+3,y0+round(i*m));
  71. line(x0+round(i*m),y0-3,x0+round(i*m),y0+3); {засечки на оси Х}
  72. line(x0-round(i*m),y0-3,x0-round(i*m),y0+3);
  73. if i mod 2=0 then
  74. begin{подпись оси У}
  75. str(i,s);
  76. outtextXY(x0-25,y0-round(i*m),s);{соответственно засечкам}
  77. outtextXY(x0-30,y0+round(i*m),'-'+s);{подпись оси Х}
  78. outtextXY(x0+round(i*m),y0+10,s);
  79. outtextXY(x0-round(i*m)-10,y0+10,'-'+s);
  80. end;
  81. end;{подписи концов осей}
  82. outtextXY(x0+round(16*m),y0-20,'X');
  83. outtextXY(x0+5,10, 'Y');{график}
  84. z:=xn;
  85. setcolor(12);
  86. while z<=xk do
  87. begin
  88. if z=xn then moveto(x0+round(z*m),y0-round(F(a1[1,1],a1[1,2],b1[1],z)*m))
  89. else lineto(x0+round(z*m),y0-round(F(a1[1,1],a1[1,2],b1[1],z)*m));
  90. z:=z+0.1;
  91. end;
  92. z:=xn;
  93. setcolor(10);
  94. while z<=xk do
  95. begin
  96. if z=xn then moveto(x0+round(z*m),y0-round(F(a1[2,1],a1[2,2],b1[2],z)*m))
  97. else lineto(x0+round(z*m),y0-round(F(a1[2,1],a1[2,2],b1[2],z)*m));
  98. if abs(F(a1[1,1],a1[1,2],b1[1],z)-F(a1[2,1],a1[2,2],b1[2],z))<0.01 then
  99. begin
  100. x1:=z;
  101. y1:=F(a1[2,1],a1[2,2],b1[2],z);
  102. end;
  103. z:=z+0.1;
  104. end;
  105. setcolor(14);
  106. setfillstyle(1,14);
  107. fillellipse(x0+round(x1*m),y0-round(y1*m),3,3);{название}
  108. setcolor(14);
  109. str(x1:0:1,s);
  110. str(y1:0:1,s1);
  111. outtextXY(10,120,'x='+s+' y='+s1);
  112. readln
  113. end.

Решение задачи: «Нужны комментарии к коду»

textual
Листинг программы
  1. uses crt,graph; //Подключаем консольку и Graph - графический построитель
  2. const //Раздел констант
  3.   n = 2; //Целочисленная константа n = 2
  4.  
  5. var //раздел описания переменных
  6.   a, a1: array [1..n, 1..n] of real; //Объявлены два двумерных массива - a и a1 размерностью n строк и n столбцов, элементы которых типа чисел с плавающей точкой
  7.   b, b1, x: array [1..n] of real; //Три массива b b1 и x, такие же, как и предыдущие только ОДНОмерные
  8.  
  9. function f(a, b, c, x: real): real; //Функция f, приниммает аргументы a, b, c, x типа чисел с плавающей точкой и возвращает число такого же типа
  10. begin //начало тела ф-ии
  11.   f := -a * x / b + c / b; //Задание значения ф-ии выражением -a * x / b + c / b
  12. end; //конец описания ф-ии
  13.  
  14. var //раздел описания переменных
  15.   i, j, k, x0, y0: integer; //Объявлние пяти переменных типа целых чисел
  16.   delenie, xn, xk, m, z, x1, y1: real; //Объявлние семи переменных типа чисел с плавающей точкой
  17.   s, s1: string; //Объявлние двух переменных типа строк
  18.  
  19. begin //начало основного тела программы
  20.   clrscr; //очистка экрана (консоли), она появится на экране
  21.   writeln('Vedite X1:'); //Выводим сообщение Vedite X1:
  22.   readln(a[1, 1]); //считываем элемент массива a[1, 1]
  23.   writeln('Vedite Y1:'); //Выводим сообщение Vedite Y1:
  24.   readln(a[1, 2]); //считываем элемент массива a[1, 2]
  25.   writeln('Vedite koeffesent 1:'); //Выводим сообщение Vedite koeffesent 1:
  26.   readln(b[1]); //считываем элемент массива b[1]
  27.   writeln('Vedite X2:'); //Выводим сообщение Vedite X2:
  28.   readln(a[2, 1]); //считываем элемент массива a[2, 1]
  29.   writeln('Vedite Y2:'); //Выводим сообщение Vedite Y2:
  30.   readln(a[2, 2]);  //считываем элемент массива a[2, 2]
  31.   writeln('Vedite koeffesent 2:'); //Выводим сообщение Vedite koeffesent 2:
  32.   readln(b[2]); //считываем элемент массива b[2]
  33.   a1 := a; //присваиваем a1 a
  34.   b1 := b; //присваиваем b1 b
  35.   writeln('Rasshirenaya matrisa: ');//Выводим сообщение Rasshirenaya matrisa:
  36.   for i := 1 to n do //запускаем цикл for для i от 1 до n
  37.   begin //начало тела цикла
  38.     for j := 1 to n do //запускаем цикл for для j от 1 до n
  39.       write(a[i, j]:6:2); //выводим a[i, j] в формате 6 знаков и 2 знака после запятой
  40.     write(b[i]:6:2); //выводим b[i] в формате 6 знаков и 2 знака после запятой
  41.     writeln; //выводим конец строки (переход на новую)
  42.   end; //конец тела цикла
  43.  
  44.  
  45.   for i := 1 to n - 1 do //запускаем цикл for для i от 1 до n - 1
  46.   begin //начало тела цикла
  47.     for k := i + 1 to n do //запускаем цикл for для k от i + 1 до n
  48.     begin //начало тела цикла
  49.       delenie := a[k, i] / a[i, i]; //переменной delenie присваиваем a[k, i] / a[i, i]
  50.       for j := i + 1 to n do //запускаем цикл for для j от i + 1 до n
  51.         a[k, j] := a[k, j] - a[i, j] * delenie; //переменной a[k, j] присваиваем a[k, j] - a[i, j] * delenie
  52.       b[k] := b[k] - b[i] * delenie; //переменной b[k] присваиваем b[k] - b[i] * delenie
  53.     end; //конец тела цикла
  54.   end; //конец тела цикла
  55.  
  56.   for i := n downto 1 do //запускаем цикл for для i от n до 1
  57.   begin //начало тела цикла
  58.     for j := i + 1 to n do  //запускаем цикл for для j от i + 1 до n
  59.       b[i] := b[i] - a[i, j] * x[j]; //переменной b[i] присваиваем b[i] - a[i, j] * x[j]
  60.     x[i] := b[i] / a[i, i]; //переменной x[i] присваиваем b[i] / a[i, i]
  61.   end;//конец тела цикла
  62.  
  63.   writeln('Otvet : ');//выводим сообщение Otvet :
  64.   for i := 1 to n do //запускаем цикл for для i от 1 до n
  65.     writeln('X[', i:1, ']=', x[i]:1:2);//выводим сообщение 'X[', i:1, ']=', x[i]:1:2
  66.  
  67.   write('Nagmite na libuy klavishu: '); //выводим сообщение Nagmite na libuy klavishu:
  68.   readln; //считываем сторку вникуда
  69.   x0 := 0; //x0 присваиваем 0
  70.   initgraph(x0, y0, '');{инициализация графического режима}
  71.   xn := -16; //xn присваиваем -16
  72.   xk := 10;{интервал по Х}
  73.   x0 := getmaxX div 2;{начало координат по Х}
  74.   y0 := getmaxY div 2;{начало координат по Y}
  75.   m := (y0 - 40) / F(a1[1, 1], a1[1, 2], b1[1], xk); //m присваиваем (y0 - 40) / F(a1[1, 1], a1[1, 2], b1[1], xk)
  76.   line(x0 - round(17 * m), y0, x0 + round(17 * m), y0);{оси}
  77.   line(x0, 0, x0, getmaxY); //чертим линию из точки (x0, 0) в (x0, getmaxY)
  78.   for i := 1 to 16 do{максимальное количество засечек в одну сторону}
  79.   begin //начало тела цикла
  80.     line(x0 - 3, y0 - round(i * m), x0 + 3, y0 - round(i * m));{засечки на оси У}
  81.     line(x0 - 3, y0 + round(i * m), x0 + 3, y0 + round(i * m)); // Линия
  82.     line(x0 + round(i * m), y0 - 3, x0 + round(i * m), y0 + 3); {засечки на оси Х}
  83.     line(x0 - round(i * m), y0 - 3, x0 - round(i * m), y0 + 3); // Линия
  84.     if i mod 2 = 0 then //если i чётно
  85.     begin{подпись оси У}
  86.       str(i, s); //строка
  87.       outtextXY(x0 - 25, y0 - round(i * m), s);{соответственно засечкам}
  88.       outtextXY(x0 - 30, y0 + round(i * m), '-' + s);{подпись оси Х}
  89.       outtextXY(x0 + round(i * m), y0 + 10, s); //вывод текста
  90.       outtextXY(x0 - round(i * m) - 10, y0 + 10, '-' + s); //вывод текста
  91.     end; //конец if
  92.   end;{подписи концов осей}
  93.   outtextXY(x0 + round(16 * m), y0 - 20, 'X');//вывод текста
  94.   outtextXY(x0 + 5, 10, 'Y');{график} //вывод текста
  95.   z := xn; //присваиваем z значение xn
  96.   setcolor(12); //устанавливаем цвет поля 12
  97.   while z <= xk do  //пока z меньше либо равно xk
  98.   begin //начало тела цикла
  99.     if z = xn then moveto(x0 + round(z * m), y0 - round(F(a1[1, 1], a1[1, 2], b1[1], z) * m)) //если [условие] то перемещаемся в соответствующую точку
  100.     else lineto(x0 + round(z * m), y0 - round(F(a1[1, 1], a1[1, 2], b1[1], z) * m)); //иначе линия в соответствующую точку
  101.     z := z + 0.1; //увеличиваем z на 0.1
  102.   end; //конец цикла
  103.   z := xn; //присваиваем z значение xn
  104.   setcolor(10); //устанавливаем цвет поля 10
  105.   while z <= xk do //пока z меньше либо равно xk
  106.   begin //начало тела цикла
  107.     if z = xn then moveto(x0 + round(z * m), y0 - round(F(a1[2, 1], a1[2, 2], b1[2], z) * m)) //если [условие] то перемещаемся в соответствующую точку
  108.     else lineto(x0 + round(z * m), y0 - round(F(a1[2, 1], a1[2, 2], b1[2], z) * m)); //иначе линия в соответствующую точку
  109.     if abs(F(a1[1, 1], a1[1, 2], b1[1], z) - F(a1[2, 1], a1[2, 2], b1[2], z)) < 0.01 then //если [условие]
  110.     begin //начало if
  111.       x1 := z; //присваиваем x1 z
  112.       y1 := F(a1[2, 1], a1[2, 2], b1[2], z); //присваиваем y1 F(a1[2, 1], a1[2, 2], b1[2], z)
  113.     end;
  114.     z := z + 0.1; //увеличиваем z на 0.1
  115.   end;
  116.   setcolor(14); //устанавливаем цвет поля 14
  117.   setfillstyle(1, 14); //устанавливаем стиль заполнения 14
  118.   fillellipse(x0 + round(x1 * m), y0 - round(y1 * m), 3, 3);{название} //рисуем эллипс
  119.   setcolor(14); //устанавливаем цвет поля 14
  120.   str(x1:0:1, s); //пишем s на поле
  121.   str(y1:0:1, s1); //пишем s1 на поле
  122.   outtextXY(10, 120, 'x=' + s + '  y=' + s1); //выводим текст на поле
  123.   readln //запрашиваем ввод
  124. end. //конец основного тела программы

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

  1. uses crt,graph; // Подключаем консольку и Graph - графический построитель
  2. const // Раздел констант   - n = 2; // Целочисленная константа n = 2
  3. var // раздел описания переменных   - a, a1: array [1..n, 1..n] of real; // Объявлены два двумерных массива - a и a1 размерностью n строк и n столбцов, элементы которых типа чисел с плавающей точкой   - b, b1, x: array [1..n] of real; // Три массива b b1 и x, такие же, как и предыдущие только ОДНОмерные   - i, j, k, x0, y0: integer; // Объявление пяти переменных типа целых чисел   - delenie, xn, xk, m, z, x1, y1: real; // Объявление семи переменных типа чисел с плавающей точкой   - s, s1: string; //Объявление двух переменных типа строк
  4. function f(a, b, c, x: real): real; // Функция f, принимает аргументы a, b, c, x типа чисел с плавающей точкой и возвращает число такого же типа
  5. begin //начало тела ф-ии   - f := -a x / b + c / b; // Задание значения ф-ии выражением -a x / b + c / b
  6. var   - i, j, k, x0, y0: integer; // Объявление пяти переменных типа целых чисел   - delenie, xn, xk, m, z, x1, y1: real; // Объявление семи переменных типа чисел с плавающей точкой   - s, s1: string; // Объявление двух переменных типа строк
  7. begin // Начало основного тела программы   - clrscr; // Очистка экрана (консоли), она появится на экране   - writeln('Vedite X1:'); // Выводим сообщение Vedite X1:   - readln(a[1, 1]); // Считываем элемент массива a[1, 1]   - writeln('Vedite Y1:'); // Выводим сообщение Vedite Y1:   - readln(a[1, 2]); // Считываем элемент массива a[1, 2]   - writeln('Vedite koeffesent 1:'); // Выводим сообщение Vedite koeffesent 1:   - readln(b[1]); // Считываем элемент массива b[1]   - writeln('Vedite X2:'); // Выводим сообщение Vedite X2:   - readln(a[2, 1]); // Считываем элемент массива a[2, 1]   - writeln('Vedite Y2:'); // Выводим сообщение Vedite Y2:   - readln(a[2, 2]); // Считываем элемент массива a[2, 2]   - writeln('Vedite koeffesent 2:'); // Выводим сообщение Vedite koeffesent 2:   - readln(b[2]); // Считываем элемент массива b[2]   - a1 := a; // Присваиваем a1 a   - b1 := b; // Присваиваем b1 b
  8. writeln('Rasshirenaya matrisa:');// Выводим сообщение Rasshirenaya matrisa:
  9. for i := 1 to n do // Запускаем цикл for для i от 1 до n   - for j := 1 to n do // Запускаем цикл for для j от 1 до n     - write(a[i, j]:6:2); // Выводим a[i, j] в формате 6 знаков и 2 знака после запятой   - write(b[i]:6:2); // Выводим b[i] в формате 6 знаков и 2 знака после запятой   - writeln; // Выводим конец строки (переход на новую)
  10. ... (продолжение) output

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


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

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

9   голосов , оценка 4.111 из 5

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

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

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