Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.12.2009, 20:21   #1
MPAK92
Новичок
Джуниор
 
Регистрация: 03.12.2009
Сообщений: 2
По умолчанию Решение задачи на массивы в паскале

Добрый вечер.Задали написать прогу в паскале, мучаюсь несколько чаосв, не выходит толкового ничего.Завтра надо сдать.Помогите пожалуйста. Вот задание: С помощью функции Random получить массив размерностью [0..20]
Составить программу, осуществляющую циклический сдвиг массива на N позиций. N и направление сдвига задать в качестве входных величин.

Вот тело программы, до чего я дошёл.
║begin clrscr;
║randomize;
║assign(f,'C:\8.txt');
║rewrite(f);
║for k:=1 to 20 do begin
║a[k]:=random(15);
║c[k]:=a[k];
║write(f,a[k]:2,' ');
║end;
║writeln('Введите Н:');
║readln(n);
║writeln(f);
║write(f,'n= ',n,' ');
║writeln(f);
║for k:=1 to 20 do begin
║q:=k+n;
║c[q]:=c[k];
║write(f,' ', c[q]);
║end;
║close(f);
║end.
MPAK92 вне форума Ответить с цитированием
Старый 03.12.2009, 20:34   #2
Greblin
Меркантильный кю
Участник клуба
 
Аватар для Greblin
 
Регистрация: 02.02.2008
Сообщений: 1,001
По умолчанию

Следующий цикл сделает сдвиг на N позиций вправо
Код:
const R = 20;

for i := 1 to N do
  begin
  buf := a[R];
  for k := R downto 2 do
    a[k] := a[k-1];
  a[1] := buf;
  end;
Сдвиг влево сделайте по аналогии

P.S. В следующий раз используйте тег [CODE] вместо того, чтобы в каждой строчке писать ||
Росли вроде умными, выросли дурнями... (c)А.Васильев
Greblin вне форума Ответить с цитированием
Старый 03.12.2009, 20:42   #3
MPAK92
Новичок
Джуниор
 
Регистрация: 03.12.2009
Сообщений: 2
По умолчанию

buf := a[R];
for k := R downto 2 do

вот баф и даунту нельзя, типо этого ещё не знаем))
MPAK92 вне форума Ответить с цитированием
Старый 03.12.2009, 20:55   #4
Greblin
Меркантильный кю
Участник клуба
 
Аватар для Greblin
 
Регистрация: 02.02.2008
Сообщений: 1,001
По умолчанию

buf - это переменная, Вы типо не знаете переменные?
Ну перепишите
Код:
for k := R downto 2 do
  a[k] := a[k-1];
на
Код:
k := R;
while k >= 2 do begin
  a[k] := a[k-1];
  k := k - 1;
end;
Росли вроде умными, выросли дурнями... (c)А.Васильев
Greblin вне форума Ответить с цитированием
Старый 03.12.2009, 21:25   #5
ai\ekcah^p
Форумчанин
 
Аватар для ai\ekcah^p
 
Регистрация: 03.05.2009
Сообщений: 112
По умолчанию

еще так можно
Код:
program zad;
uses crt;
var mas1,mas2:array[0..10]of integer;
    n,i,j:Integer;
begin
 clrscr;
 randomize;
 writeln('исходный массив');
 for i:=0 to 10 do
  begin
   mas1[i]:=random(90)-10;
   mas2[i]:=mas1[i];
   write(mas1[i],'   ');
  end;
 writeln;
 writeln('    насколько сдвинуть?');
 write('сдвиг вправо(+),влево(-) -> ');
 readln(n);
 n:=n mod 11;
 if n<>0 then
  begin
  textcolor(5);
  writeln('преобразованный массив');
   for i:=0 to 10 do
    begin
     j:=i+n;
     if j>10 then dec(j,11)
     else if j<0 then inc(j,11);
     mas1[i]:=mas2[j];
     write(mas1[i],'   ');
    end;
    writeln;
  end
  else writeln(' ненасколько ');
  writeln('если помог , нажмите на весы слева ');
    readln;
end.
ai\ekcah^p вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Задачи на массивы в Паскале Dark_Zealot Помощь студентам 10 05.02.2010 13:13
Задачи на паскале (массивы) skript88 Помощь студентам 1 24.10.2009 17:56
Решение геометрической задачи на Паскале dancergirl Помощь студентам 2 09.04.2009 09:01
Решение задачи в паскале Натуськ@25 Помощь студентам 16 15.02.2009 15:48