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

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

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

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

Паскаль, массив

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

Абай

Новые
Регистрация
3 Июн 2011
Сообщения
19
Реакции
0
Баллы
0
Паскаль, массив

Дан массив размера N и целое число K (1 · K < N). Осуществить
сдвиг элементов массива влево на K позиций (при этом A1 перейдет
в AK+1, A2 — в AK+2, : : :, AN¡K — в AN, а исходное значение K последних
элементов будет потеряно). Первые K элементов полученного массива
положить равными 0.
 
Дан массив размера N и целое число K (1 · K < N). Осуществить
сдвиг элементов массива влево на K позиций (при этом A1 перейдет
в AK+1, A2 — в AK+2, : : :, AN¡K — в AN, а исходное значение K последних
элементов будет потеряно). Первые K элементов полученного массива
положить равными 0.
И тут условие напутано - ну почему влево, когда вправо?
Код:
Const
 N=20;
VAR
 A:Array[1..N] of Byte;
 i,K:Byte;
BEGIN
 For i:=1 to N do
  begin
   A[i]:=i;
   Write(A[i]:3);
  end;
 Writeln;
 Write('K (<',N,')= ');
 Readln(K);
 For i:=N-K downto 1 do
  A[i+K]:=A[i];
 For i:=1 to K do
  A[i]:=0;
 For i:=1 to N do
  Write(A[i]:3);
 Readln
END.
Здесь для наглядности элементам исходного массива присвоены значения, равные их номерам.
 
Дан массив размера N и целое число K (1 · K < N). Осуществить сдвиг элементов массива влево на K позиций (при этом A[N] перейдет в A[N-K], A[N-1] — в A[N-K-1], : : :, A[K+1] — в A[1], а исходное значение K первых элементов будет потеряно). Последние K элементов полученного массива положить равными 0.

Простите пожалуйста за мои ошибке, но вы не могли бы вот подобную задачку решить.
 
Простите пожалуйста за мои ошибке, но вы не могли бы вот подобную задачку решить.
М-да... "Подобную" я вообще-то уже решал, см. выше. Сказали бы уж прямо, что именно эту. Ну ладно.
Код:
Const
 N=20;
VAR
 A:Array[1..N] of Byte;
 i,K:Byte;
BEGIN
 For i:=1 to N do
  begin
   A[i]:=i;
   Write(A[i]:3);
  end;
 Writeln;
 Write('K (<',N,')= ');
 Readln(K);
 For i:=1 to N-K do
  A[i]:=A[K+i];
 For i:=N downto N-K+1 do
  A[i]:=0;
 For i:=1 to N do
  Write(A[i]:3);
 Readln
END.
 
Назад
Сверху