Переделать программу с использованием процедур - Pascal
Формулировка задачи:
Нужна срочная помощь ! Сдеалал курсовую еще неделю назад ,программа работает ,приношу на проверку а меня рубят и требуют следующие "нужно задание матрицы, транспонирование, перестановку строк и скалярное произведение в процедуры переделать"(его слова). Решил не спорить ,у самого ничего не выходит,помогите ,комрады!
Program TheMatrix; Uses crt; var a:array [0..127,0..127] of integer; i,j,d,b,c,e,f,N,p,proizv,matr: integer; chislo: char; Begin clrscr; WriteLn(‘Введите размер квадратной матрицы:’); ReadLn(N); for i:=0 to N-1 do for j:=0 to N-1 do begin a[i,j]:=random(100); end; for i:=0 to N-1 do begin for j:=0 to N-1 do Write(a[i,j]:N-1); WriteLn; end; WriteLn(‘Введите число:’); WriteLn(‘1-перестановка двух строк’); WriteLn(‘2-транспонирование матрицы относительно побочной диагонали’); WriteLn(‘3-скалярное произведение заданного столбца и строки’); ReadLn(chislo); case chislo of ‘1’:begin WriteLn(‘Введите номера строк:’); ReadLn(b,c); for j:=0 to N-1 do begin d:=a[b-1,j]; a[b-1,j]:=a[c-1,j]; a[c-1,j]:=d; end; WriteLn(‘Результат равен:’); for i:=0 to N-1 do begin for j:=0 to N-1 do write(a[i,j]:N-1)); WriteLn; end; ReadLn; end; ‘2’: begin for i:=0 to N-1 do for j:=0 to N-1 do begin matr:=a[j,i]; a[j,i]:=a[i,j]; a[i,j]:=matr; end; WriteLn(‘Результат транспонирования:’); for i:=0 to N-1 do begin for j:=0 to N-1 do Write(a[j,i]:N-1); WriteLn; end; ReadLn; end; ‘3’: begin WriteLn(‘Введите номер строки и столбца:'); ReadLn(e,f); proizv:=0; for i:=0 to N-1 do proizv:=proizv+a[e-1,i]*a[i,f-1]; Write(‘Скалярное произведение равно:’,proizv); ReadLn; end; end; End.
Решение задачи: «Переделать программу с использованием процедур»
textual
Листинг программы
Program TheMatrix; Uses crt; type matrix=array [0..127,0..127] of integer; var a:matrix; i,j,d,b,c,e,f,N,p,proizv,matr: integer; chislo: char; procedure creatematrix(var x:matrix); begin WriteLn('Введите размер квадратной матрицы:'); ReadLn(N); for i:=0 to N-1 do for j:=0 to N-1 do begin x[i,j]:=random(100); end; for i:=0 to N-1 do begin for j:=0 to N-1 do Write(x[i,j]:N-1); WriteLn; end; end; procedure Change(var x:matrix); begin WriteLn('Введите номера строк:'); ReadLn(b,c); for j:=0 to N-1 do begin d:=x[b-1,j]; x[b-1,j]:=x[c-1,j]; x[c-1,j]:=d; end; WriteLn('Результат равен:'); for i:=0 to N-1 do begin for j:=0 to N-1 do write(x[i,j]:N-1); WriteLn; end; end; procedure Trans(var x:matrix); begin for i:=0 to N-1 do for j:=0 to N-1 do begin matr:=x[j,i]; x[j,i]:=x[i,j]; x[i,j]:=matr; end; WriteLn('Результат транспонирования:'); for i:=0 to N-1 do begin for j:=0 to N-1 do Write(a[j,i]:N-1); WriteLn; end; end; procedure Pr(x:matrix); begin WriteLn('Введите номер строки и столбца:'); ReadLn(e,f); proizv:=0; for i:=0 to N-1 do proizv:=proizv+x[e-1,i]*x[i,f-1]; Write('Скалярное произведение равно:',proizv); end; Begin clrscr; creatematrix(a); WriteLn('Введите число:'); WriteLn('1-перестановка двух строк'); WriteLn('2-транспонирование матрицы относительно побочной диагонали'); WriteLn('3-скалярное произведение заданного столбца и строки'); ReadLn(chislo); case chislo of '1':begin Change(a); ReadLn; end; '2': begin ReadLn; Trans(a); end; '3': begin pr(a); ReadLn; end; end; End.
Объяснение кода листинга программы
- В программе объявлены переменные a, i, j, d, b, c, e, f, N, p, proizv, matr.
- Создается матрица с помощью процедуры creatematrix.
- Меняются строки матрицы с помощью процедуры Change.
- Транспонирование матрицы относительно побочной диагонали выполняется с помощью процедуры Trans.
- Вычисляется скалярное произведение заданного столбца и строки с помощью процедуры Pr.
- Программа предлагает пользователю ввести число от 1 до 3 для выбора операции.
- Пользователь вводит число, и программа выполняет соответствующую операцию.
- Программа завершается с помощью оператора End.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д