Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Помощь студентам


Ответ
 
Опции темы Опции просмотра
Старый 23.12.2013, 18:26   #1 (permalink)
Ford
Новичок
 
Регистрация: 23.12.2013
Сообщений: 4
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию Нужно произвести циклический сдвиг

Мне нужно произвести циклический сдвиг столбцов таблицы на заданное число позиций.
Цитата:
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.
Ford вне форума   Ответить с цитированием

Старый 23.12.2013, 18:26
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

Люди уже писали про это, полистайте

Помогите, пожалуйста, написать на Паскале программу "Циклический алгоритм"
Циклический таймер
Cycle Alarm Clock - циклический будильник, просыпайся отдохнувшим

Старый 23.12.2013, 20:58   #2 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от Ford Посмотреть сообщение
Мне нужно произвести циклический сдвиг столбцов таблицы на заданное число позиций.
Ну что уж тут поделаешь, раз нужно... Получите, мистер Форд:
Код:
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.
Vladimir_S вне форума   Ответить с цитированием
Старый 23.12.2013, 22:03   #3 (permalink)
Ford
Новичок
 
Регистрация: 23.12.2013
Сообщений: 4
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Большое спасибо
Ford вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




Часовой пояс GMT +4, время: 22:01.

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.