22.01.2012, 10:16 | #1 (permalink) |
Member
Регистрация: 28.03.2010
Сообщений: 477
Записей в дневнике: 4
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 1837
|
Сдвиг элементов массива, Паскаль
сдвинуть массив на К элементов влево или вправо в зависимости от знака вводимого К. То есть при входном массиве 12345 и К=2 на выходе должен быть такой массив: 45123, при К=-2 - 34512. Мучаюсь с этой задачей не первый день, перепробовала кучу алгоритмов, не хочет работать и все тут Вот последний алгоритм, на котором я остановилась (только для положительного К): Код:
if k>0 then begin for i:=1 to n+k do {n - размер массива} a[i+k]:=a[i]; for i:=1 to k do a[i]:=a[i+n]; end; |
22.01.2012, 10:16 | |
Helpmaster
Member
Регистрация: 08.03.2016
Сообщений: 0
|
Пожалуйста, просмотрите внимательно аналогичные топики Монтаж чип-элементов Турбо Паскаль или Фри Паскаль. Задание по теме Типизированный файл Количество элементов массива С++ Количество элементов массива Окружения элементов массива |
22.01.2012, 10:54 | #3 (permalink) |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
Ну вот, например - так:
Код:
Const N=20; VAR A,B:Array [1..N] of Byte; k:ShortInt; i,j:Byte; BEGIN Randomize; Writeln('Initial array:'); For i:=1 to N do begin A[i]:=Random(10); Write(A[i]:3); end; Writeln; Writeln; Write('k= '); Readln(k); Writeln; Writeln; If Abs(k)>=N then Writeln('Error: k too big!') else If k=0 then B:=A else If (k>0) then begin for j:=1 to N-k do B[j+k]:=A[j]; for j:=N-k+1 to N do B[j-N+k]:=A[j]; end else begin for j:=1-k to N do B[j+k]:=A[j]; for j:=1 to -k do B[N+k+j]:=A[j]; end; Writeln('New array:'); For i:=1 to N do Write(B[i]:3); Readln; END. |
22.01.2012, 11:01 | #4 (permalink) |
Member
Регистрация: 28.03.2010
Сообщений: 477
Записей в дневнике: 4
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 1837
|
Владимир, спасибо огромное! Тоже была идея использовать второй массив, но попытка ее реализовать потерпела фиаско. Еще раз спасибо!=)
|
22.01.2012, 11:06 | #5 (permalink) |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
|
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
|
|