![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() ![]() |
![]() |
dae-woo |
![]()
Сообщение
#1
|
![]() Группа: Пользователи Сообщений: 9 Пол: Мужской Репутация: ![]() ![]() ![]() |
Произвести циклический здвиг столбцов двух мерного массива k раз, где k простое число
|
volvo |
![]()
Сообщение
#2
|
Гость ![]() |
Ну, и что? Задание как задание... Где твои собственные попытки решения, где ход мыслей, что и как хочешь сделать, но не получается?
|
dae-woo |
![]()
Сообщение
#3
|
![]() Группа: Пользователи Сообщений: 9 Пол: Мужской Репутация: ![]() ![]() ![]() |
volvo вот можеш под править?
program lab_4;
const
cols=4;
rows=3;
k=3;
type
Array2D:array [1..rows] of array [1..cols] of double;
procedure enter(var m:Array2D; name:string);
var
i,j:integer;
begin
for i:=1 to rows do
for j:=1 to cols do begin
write(name,'[',i,',',j,']=? ');
read(m[i,j]);
end;
end;
procedure print(m:Array2D; name:string);
var
i,j:integer;
begin
writeln('Array ',name,' = {');
for i:=1 to rows do begin
write(' ');
for j:=1 to cols do begin
write(m[i,j],' ');
end;
writeln;
end;
writeln('}');
end;
procedure generate(var m:Array2D);
var
i,j:integer;
begin
for i:=1 to cols do
for j:=1 to rows do
m[i,j]:=1.0/(i+j-1.0);
end;
procedure ShiftColumns(k : word; var arr : Array2D);
procedure Shift(var arr : Array2D);
var
i,j:integer;
tmp:double;
begin
for i:=1 to rows do begin
tmp:=m[i,cols];
for j:=1 to cols-1 do begin
m[i,j+1]:=m[i,j];
end;
m[i,1]:=tmp;
end;
end;
var
i:integer;
begin
for i:=k downto 1 do
Shift(arr);
end;
begin
end.
Сообщение отредактировано: dae-woo - |
sheka |
![]()
Сообщение
#4
|
![]() Я. ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 809 Пол: Мужской Реальное имя: Саша Репутация: ![]() ![]() ![]() |
dae-woo, вы хоть компилировать пробовали??? попробуйте.
Добавлено через 11 мин. обмен можна сделать так: сохранить в одномерном массиве столбец (k ый, на место которого будет ставиться следующий) - что вы и сделали, а потом все остальные просто перемещать на к столбцов в сторону. главное разобраться чтобы не выйти за края массива. Добавлено через 2 мин. тут должно быть еще хорошее решение с помощью move, но к сожалению я с ним работать не умею. volvo, если не тяжело, покажите еще раз как это делается. Сообщение отредактировано: sheka - |
Хе-хе |
![]()
Сообщение
#5
|
Гость ![]() |
И не лень мне играться
Вот эта компилится ![]() program Arr2D;
const
cols=4;
rows=3;
k=3;
type
Array2D= array [1..rows] of array [1..cols] of double;
procedure enter(var m:Array2D; name:string);
var
i,j:integer;
begin
for i:=1 to rows do
for j:=1 to cols do begin
write(name,'[',i,',',j,']=? ');
read(m[i,j]);
end;
end;
procedure print(m:Array2D; name:string);
var
i,j:integer;
begin
writeln('Array ',name,' = {');
for i:=1 to rows do begin
write(' ');
for j:=1 to cols do begin
write(m[i,j],' ');
end;
writeln;
end;
writeln('}');
end;
procedure generate(var m:Array2D);
var
i,j:integer;
begin
for i:=1 to cols do
for j:=1 to rows do
m[i,j]:=1.0/(i+j-1.0);
end;
procedure ShiftColumns(k : word; var arr : Array2D);
procedure Shift(var arr : Array2D);
var
i,j:integer;
tmp:double;
m:Array2D;
begin
for i:=1 to rows do begin
tmp:=m[i,cols];
for j:=1 to cols-1 do begin
m[i,j+1]:=m[i,j];
end;
m[i,1]:=tmp;
end;
end;
var
i:integer;
begin
for i:=k downto 1 do
Shift(arr);
end;
begin
{А вот тут ваши действия}
end.
dae-woo Учите русский язык и поиск по форуму для вас заработает ![]() ![]() |
dae-woo |
![]()
Сообщение
#6
|
![]() Группа: Пользователи Сообщений: 9 Пол: Мужской Репутация: ![]() ![]() ![]() |
|
volvo |
![]()
Сообщение
#7
|
Гость ![]() |
Цитата(amega) тут должно быть еще хорошее решение с помощью move, но к сожалению я с ним работать не умею. В принципе, тут и Move ни разу не нужен, если задать матрицу "фортрановским способом", как массив столбцов. Тогда со столбцами можно работать как с любой другой переменной, безо всяких Move... Вот тут глянь: Как задать матрицу, чтобы быстро поменять местами ее столбцы ?Цитата всмысле мои действия? Ну, процедуры тебе показали, тебе осталось их ВЫЗВАТЬ... Это ты уже сам как-нибудь... |
dae-woo |
![]()
Сообщение
#8
|
![]() Группа: Пользователи Сообщений: 9 Пол: Мужской Репутация: ![]() ![]() ![]() |
спасибо
![]() |
![]() ![]() |
![]() |
Текстовая версия | 22.04.2025 3:17 |