Помощь - Поиск - Пользователи - Календарь
Полная версия: Задача. Матрица + процедура
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Jaren
Faq прочел ( но не смог решить). В поиске похожую тоже не нашел.

Составить программу перестановки четных и нечетных столбцов элементов матрицы. Перестановку столбцов оформить в виде процедуры
volvo
Цитата
В поиске похожую тоже не нашел.
Плохо искал... Описываешь матрицу так, как это сделано здесь:
Программирование с использованием файлов

А потом просто меняешь столбцы с четными и нечетными индексами местами... Вот так:
for i := 1 to (size_col div 2) do begin { size_col - число столбцов !!! }
swap_cols(mx, 2*i - 1, 2*i);
end;
Jaren
volvo спасибо
но... я очень слабоват в Паскале (
я попытался сделать, но не вышло ((
если не сложно - распиши как это сделать.
volvo
Можно посмотреть, как именно ты пытался сделать? Покажи код, что неправильно - поправим...
Jaren

program smena;
uses crt;
const
size_row = 4;
size_col = 7;
type
trow = array[1..size_row] of integer;
tmatrix = array[1..size_col] of trow;
procedure swap_cols(var mx: tmatrix;
const i; j:integer);
var T: trow;
begin
T:= mx[i]; mx[i] := mx[j]; mx[j] := T
end;
var
mx:tmatrix;
i,j:integer;
n,z :integer;
begin
for i:=1 to (size_col div 2) do begin
swap_cols(mx,2*i-1,2*i);
end.


вот ) как видно - я действительно в нем слабоват ) и даже очень
volvo
Заполнять матрицу надо... А так все очень даже рабочее...

Вот так будет выглядеть основная программа:
begin
for i := 1 to size_col do
for j := 1 to size_row do begin
write('mx[', j:2, i:2, '] = '); readln(mx[i, j]); { <--- матрица вводится по столбцам !!! }
end;

print(mx); { До обмена }

for i:=1 to (size_col div 2) do
swap_cols(mx,2*i-1,2*i);
writeln;

print(mx); { После обмена }
end.

(процедуру Print забери по той же ссылке)
Jaren

program smena;
uses crt;
const
size_row = 4;
size_col = 7;
type
trow = array[1..size_row] of integer;
tmatrix = array[1..size_col] of trow;
procedure swap_cols(var mx: tmatrix;
const i; j:integer);
var T: trow;
begin
T := mx[i]; mx[i] := mx[j]; mx[j] := T
end;
procedure print(var mxL tmatrix);
var i,j:integer;
begin
for i:=1 tp size_row do
begin
for j:=1 to size_col do
write(mx[j][i]:4);
writeln
end;
end;
var
mx:tmatrix;
i,j:integer;
n,z :integer;
begin
for i:=1 to size_col do
for j:=1 to size_row do begin
write('mx[',j:2,i:2,']=');
readln(mx[i,j];
end;
print(mx);
for i:=1 to (size_col div 2) do
swap_cols(mx,2*i-1,2*i);
writeln;
print(mx);
end.

пишет 26 ошибку в этой строке
T := mx[i]; mx[i] := mx[j]; mx[j] := T

Прикрепил файл программы
volvo
procedure swap_cols(var mx: tmatrix;
const i, j:integer); { <--- Между I и J должна быть запятая, а не точка с запятой... }


Добавлено через 1 мин.
procedure print(var mx: tmatrix); { а здесь - двоеточие а не L }
Ты что, перепечатываешь вручную текст? Скопировать нельзя было? Ошибки же вносишь...
Jaren
ды в ручную )
Спасибо большое volvo
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.