• Добро пожаловать на компьютерный форум Tehnari.ru. Здесь разбираемся с проблемами ПК и ноутбуков: Windows, драйверы, «железо», сборка и апгрейд, софт и безопасность. Форум работает много лет, сейчас он переехал на новый движок, но старые темы и аккаунты мы постарались сохранить максимально аккуратно.

    Форум не связан с магазинами и сервисами – мы ничего не продаём и не даём «рекламу под видом совета». Отвечают обычные участники и модераторы, которые следят за порядком и качеством подсказок.

    Если вы у нас впервые, загляните на страницу о проекте и правила – там коротко описано, как задать вопрос так, чтобы быстро получить ответ. Чтобы создавать темы и писать сообщения, сначала зарегистрируйтесь, а затем войдите под своим логином.

    Не знаете, с чего начать? Создайте тему с описанием проблемы – подскажем и при необходимости перенесём её в подходящий раздел.
    Задать вопрос Новые сообщения Как правильно спросить
    Если пришли по старой ссылке со старого Tehnari.ru – вы на нужном месте, просто продолжайте обсуждение.

Нужно произвести циклический сдвиг

  • Автор темы Автор темы Ford
  • Дата начала Дата начала

Ford

Ученик
Регистрация
23 Дек 2013
Сообщения
4
Реакции
0
Баллы
0
Нужно произвести циклический сдвиг

Мне нужно произвести циклический сдвиг столбцов таблицы на заданное число позиций.
program tablica;
uses crt;
const
max_s= 50;
max_d= 50;
k=99;
TYPE
AR=array[1..max_d,1..max_s] of integer;
var
a:AR;
MVcol:ARRAY[1..max_s] of integer;
d, s, i, j, Min_Max: integer;

PROCEDURE Table_Inp(Dti,Sti:INTEGER; VAR Ati:AR);
VAR
i,j,z:INTEGER;
BEGIN
repeat
clrscr;
writeln ('Choose the method of table infilling');
writeln ('1- from keyboard');
writeln ('2- random values');
readln (z);
until (z=1) or (z=2);

if z=1 then
begin
for i:=1 to Dti do
begin
for j:=1 to Sti do
begin
write('Enter the value a[',i,',',j,'] ');
readln (Ati[i,j]);
end;
end;
end;

if z=2 then
begin
randomize;
for i:=1 to Dti do
for j:=1 to Sti do
Ati[i,j]:=random (k);
end;

clrscr;
for i:=1 to Dti do
begin
for j:=1 to Sti do
write(Ati[i,j]:3);
writeln;
end;
readln;
END; {Table_Inp}


begin
d:=-1;
s:=-1;

repeat
clrscr;
write('Enter the table length. Maximum value is ' ,max_d,' ');
readln(d)
until (d>=1) and (d<= max_d);
{clrscr; }
repeat
clrscr;
write('Enter the table width. Maximum value is ' ,max_s,' ');
readln(s)
until (s>=1) and (s<= max_s);

Table_Inp(d,s,a);
Readln;
end.
 
Мне нужно произвести циклический сдвиг столбцов таблицы на заданное число позиций.
Ну что уж тут поделаешь, раз нужно... Получите, мистер Форд:
Код:
program tablica;
uses crt;
const
 max_s= 50;
 max_d= 50;
 k=99;
TYPE
 AR=array[1..max_d,1..max_s] of integer;
var
 a:AR;
 MVcol:ARRAY[1..max_s] of integer;
 d,s,i,j,sh: integer;

PROCEDURE Table_Inp(Dti,Sti:INTEGER; VAR Ati:AR);
VAR
 i,j,z:INTEGER;
BEGIN
 repeat
  clrscr;
  writeln ('Choose the method of table infilling');
  writeln ('1- from keyboard');
  writeln ('2- random values');
  readln (z);
 until (z=1) or (z=2);

 if z=1 then
  begin
   for i:=1 to Dti do
    for j:=1 to Sti do
     begin
      write('Enter the value a[',i,',',j,'] ');
      readln (Ati[i,j]);
     end;
  end
 else
  begin
   randomize;
    for i:=1 to Dti do
     for j:=1 to Sti do
      Ati[i,j]:=random (k);
  end;

 clrscr;
 for i:=1 to Dti do
  begin
   for j:=1 to Sti do
    write(Ati[i,j]:3);
   writeln;
  end;
 writeln;
END; {Table_Inp}

PROCEDURE Table_Shift(Dti,Sti,DT:INTEGER; VAR Ati:AR);
VAR
 i,j,z:INTEGER;
 Bti:Ar;
BEGIN
 for j:=1 to Sti do
  begin
   if j+DT>Sti then z:=(j+DT) mod Sti else z:=j+DT;
   for i:=1 to Dti do Bti[i,z]:=Ati[i,j];
  end;
 Ati:=Bti;
 for i:=1 to Dti do
  begin
   for j:=1 to Sti do
    write(Ati[i,j]:3);
   writeln;
  end;
END; {Table_Shift}


begin
 repeat
  clrscr;
  write('Enter the table length. Maximum value is ' ,max_d,' ');
  readln(d)
 until (d>=1) and (d<= max_d);
{clrscr; }
 repeat
  clrscr;
  write('Enter the table width. Maximum value is ' ,max_s,' ');
  readln(s)
 until (s>=1) and (s<= max_s);
 Table_Inp(d,s,a);
 write('Enter the shift ');
 readln(Sh);
 Table_Shift(d,s,Sh,a);
 Readln;
end.
 
Большое спасибо
 
Назад
Сверху