|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
10.04.2014, 19:47 | #1 |
Регистрация: 18.03.2014
Сообщений: 4
|
Массивы и подпрограммы / Free Pascal
Как оформить описание алгоритма решения задачи:
program prog3; const digits=3; type matrix=array[1..10, 1..10] of real; vector=array[1..10] of real; var m:matrix; v:vector; n:integer; procedure input_matrix (var m:matrix; var n:integer); var p1,p2,a,b:real; input:boolean; i,j:integer; begin input:=false; repeat writeln('Введите размер квадратной матрицы n'); writeln('не менее 2 и не более 10:'); readln(n); if (n<2) or (n>10) then begin writeln(' Вы ввели неправильный размер матрицы,'); writeln('n должно быть не менее 2 и не более 10.'); end else begin input:=true; end; until input; writeln('Введите левую a и правую b границы '); writeln('диапазона значений компонент матрицы:'); write('a = ');readln(a); write('b = ');readln(b); if a>b then begin p1:=a; a:=b; b:=p1; end; if a=b then begin p1:=0; p2:=b; end else if b=0 then begin p1:=a; p2:=0; end else begin p1:=b-a; p2:=a; end; {p1 - расстояние между левой и правой границей} {p2 - левая граница} randomize; for i:=1 to n do for j:=1 to n do m[i,j]:=p2+random*p1; end; {input_matrix} procedure output_matrix(var m:matrix; n:integer); var i,j:integer; begin for i:=1 to n do begin for j:=1 to n do begin write(m[i,j]:0igits); write(' '); end; writeln; end; writeln; end; {output_matrix} procedure change_matrix(var m:matrix;n:integer); var i,j:integer; min_r,min_c,max_r,max_c:integer; min_z,max_z:real; value:real; begin min_z:=100000; for i:=1 to n do for j:=1 to n do if m[i,j]then begin min_r:=i;min_c:=j;min_z:=m[i,j]; end; writeln('Минимальное значение и индексы:'); write(min_z:0igits); write('; столбец: '); write(min_c); write(', строка: '); writeln(min_r); max_z:=-100000; for i:=1 to n do for j:=1 to n do if m[i,j]>max_z then begin max_c:=j;max_r:=i;max_z:=m[i,j]; end; writeln('Максимальное значение и индексы:'); write(max_z:0igits); write('; столбец: '); write(max_c); write(', строка: '); writeln(max_r); {изменение элементов строки и столбца} write('Изменение элементов '); write(min_r); write(' строки и '); write(max_c); writeln(' столбца'); for i:=1 to n do begin value:=m[min_r,i]; m[min_r,i]:=m[i,max_c]; m[i,max_c]:=value; end; end; {change_matrix} procedure vector_v(m:matrix;var v:vector;n:integer); var i:integer; s:real; begin for i:=1 to n do v[i]:=m[i,i]; s:=0; for i:=1 to n do s:=s+v[i]; writeln('Вектор v[n]:'); for i:=1 to n do write(v[i]:0igits,' '); writeln; write('Сумма компонентов вектора: '); writeln(s:0igits); end; {vector_v} begin input_matrix(m,n); writeln('Первоначальная матрица'); output_matrix(m,n); change_matrix(m,n); writeln('Новая матрица'); output_matrix(m,n); vector_v(m,v,n); readln; end. |
10.04.2014, 20:37 | #2 |
Lawful Evil
Участник клуба
Регистрация: 13.05.2008
Сообщений: 1,208
|
В соседней Вашей теме есть ответ по поводу блок-схем.
Алгоритм - бесплатен. Поиск багов - бесплатен. Реализация алгоритма - за отдельную плату.
На форуме помогают советами и объясняют, а не пишут на халяву программы, лабы, курсачи и т.д. (c) |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Free Pascal!!! МАССИВЫ!!!!(( | Vika_0_0 | Паскаль, Turbo Pascal, PascalABC.NET | 3 | 13.03.2012 20:39 |
Pascal: Массивы, подпрограммы, текст на языке Pascal | WarriorCow | Помощь студентам | 4 | 22.02.2012 15:28 |
Free pascal. Массивы | Никнейм | Помощь студентам | 8 | 28.01.2012 09:40 |
(Pascal)Двумернные массивы и подпрограммы | litokha | Помощь студентам | 1 | 12.12.2011 17:32 |
Подпрограммы-процедуры, подпрограммы-функции в Pascal | rishikesh | Помощь студентам | 19 | 18.05.2010 23:05 |