Технический форум

Технический форум (http://www.tehnari.ru/index.php)
-   Помощь студентам (http://www.tehnari.ru/forumdisplay.php?f=41)
-   -   Паскаль, массив (http://www.tehnari.ru/showthread.php?t=52629)

Абай 03.06.2011 10:56

Паскаль, массив
 
Дан массив размера N и целое число K (1 · K < N). Осуществить
сдвиг элементов массива влево на K позиций (при этом A1 перейдет
в AK+1, A2 — в AK+2, : : :, AN¡K — в AN, а исходное значение K последних
элементов будет потеряно). Первые K элементов полученного массива
положить равными 0.

Vladimir_S 03.06.2011 20:46

Цитата:

Сообщение от Абай (Сообщение 531409)
Дан массив размера 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.

Здесь для наглядности элементам исходного массива присвоены значения, равные их номерам.

Абай 05.06.2011 13:57

Дан массив размера 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.

Простите пожалуйста за мои ошибке, но вы не могли бы вот подобную задачку решить.

Vladimir_S 05.06.2011 18:16

Цитата:

Сообщение от Абай (Сообщение 532537)
Простите пожалуйста за мои ошибке, но вы не могли бы вот подобную задачку решить.

М-да... "Подобную" я вообще-то уже решал, см. выше. Сказали бы уж прямо, что именно эту. Ну ладно.
Код:

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.


Абай 05.06.2011 23:44

спасибо!


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

Powered by vBulletin® Version 4.5.3
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.