Форум программистов, компьютерный форум, киберфорум
Turbo Pascal
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
198 / 10 / 3
Регистрация: 30.04.2016
Сообщений: 733
1

Циклический сдвиг элементов одномерного массива влево

19.08.2018, 21:12. Показов 920. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Задача : Циклический сдвиг позиций влево.
2. Заполнить случайным образом одномерный массив из n элементов и сдвинуть элементы циклически на одну
позицию влево. Пример (для n = 8):
Вот моя программа:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
uses Crt;
const N = 8;
var A: array[1..8] of integer;
           i: integer;
begin
ClrScr;
   for i:= 1 to 8 do begin
     A[i]:= Random(80)10;
      write(A[i]:3);
  end;  WriteLn;       
writeln('  Сдвинутые эл-ты массива:');
      write(A[8]:3);
   for i:= 1to N-1 do
      write(A[i]:3);
  readln
end.
На выходе имеем:
Pascal
1
2
3
4
Эл-ты массива:
-10   -8   58   6   11   43   15   2
Сдвинутые эл-ты массива:
 -8    58   6   11   43   15   2   -10
Просьба дать заключение: правильно ли сделана задача.
И как сделать сдвиг на 2, 3 и т. д. позиций.

Задача 2: Арифметический сдвиг позиций влево.
2. Заполнить случайным образом одномерный массив из n Элементов (n – чётно) и выполнить арифметический
Сдвиг влево на k позиций (k < n). Пример (для n = 8). Вывести оба массива на экран.
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Uses Crt;
Const N = 8;  k = 3;
Var A: array [1..N]  of  Integer;
            I,  j:  Integer;
Begin
ClrScr;
     For i:= 1 to N do begin
         A[i]:= I;
         Write(A[i]:3);
     End;  WriteLn;
     For i:= 1 to N do begin
      For j:= 1 to k do
  If I – j then A[i]:= 0;
        Write(A[i]:3);
    End;  WriteLn;
   ReadLn
End.
На выходе имеем:
Pascal
1
2
3
4
5
1   2   3   4   5   6   7   8
0   0   0   4   5   6   7   8
  А должно быть так:
         1   2   3   4   5   6   7   8
         0   0   0   1   2   3  4   5
Эта так называемый арифметический сдвиг. А как это cделать, проблема.
Что делать?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
19.08.2018, 21:12
Ответы с готовыми решениями:

Циклический сдвиг влево элементов одномерного массива
2.Напишите процедуру, реализующую циклический сдвиг влево элементов одномерного массива на заданное...

Циклический сдвиг элементов массива влево
нужно решить задание:элементы массива циклически сдвинуть на одну позицию влево: x_new=x, x_new=x...

Осуществить циклический сдвиг элементов массива влево, вправо на k позиций
Дан массив размера N и число k (0 &lt; k &lt; 5, k &lt; N). Осуществить циклический сдвиг элементов массива...

Осуществить циклический сдвиг элементов массива влево \ вправо на одну позицию
Дан массив размера N. Осуществить циклический сдвиг элементов массива влево1|вправо2 на одну...

2
Модератор
Эксперт Pascal/DelphiЭксперт NIX
7771 / 4600 / 2824
Регистрация: 22.11.2013
Сообщений: 13,080
Записей в блоге: 1
19.08.2018, 22:01 2
1. В задании сказано выполнить циклический сдвиг массива -- это задание не выполнено, исходный массив не был модифицирован согласно заданию.
Если бы в задании было требование только вывести циклически сдвинутый массив (но не было бы прямого указания про сдвиг массива), задание можно было бы считать выполненным.
0
3406 / 1825 / 489
Регистрация: 28.02.2015
Сообщений: 3,696
20.08.2018, 18:19 3
Цитата Сообщение от Petro29 Посмотреть сообщение
сдвинуть элементы циклически на одну позицию влево.
Мне одному показалось, что вы не знаете где сено, а где солома.
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
uses Crt;
const N = 8;
var A: array[1..8] of integer;
           i: integer;
           k:integer;
begin
ClrScr;
  writeln('original array:');
   for i:= 1 to n do
     begin
       A[i]:=random(80)-10;
       write(A[i]:3);
     end;
   WriteLn;
   writeln('you shift array to the left:');
   write(A[n]:3);
   for i:= 1to N-1 do write(A[i]:3);
   writeln;
   k:=1;
   writeln('my shift array to the left on ',k,' positon:');
   for i:= 1to N do
      write(A[1+(i+k-1)mod n]:3);
   writeln;
   write('Enter k-posision shift:');
   readln(k);
   writeln('my shift array to the left on ',k,' positon:');
   for i:= 1to N do
      write(A[1+(i+k-1)mod n]:3);
   writeln;
   write('please press any key . . .');
   readln
end.
ps:это только визуальный сдвиг, преобразование массива аналогично.
Миниатюры
Циклический сдвиг элементов одномерного массива влево  
0
20.08.2018, 18:19
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
20.08.2018, 18:19
Помогаю со студенческими работами здесь

Если сумма элементов массива положительна, то осуществить циклический сдвиг элементов массива вправо
Прощу помочь с решением задачи. Дан массив А(N). Если сумма элементов массива положительна, то...

Осуществить сдвиг элементов массива влево на K позиций
Здравствуйте. За основу брал код многоуважаемого Puporev. Есть пара вопросов. program pr; uses...

Осуществить сдвиг элементов массива влево на K позиций
Array82. Дан массив размера N и целое число K (1 ≤ K &lt; N). Осуществить сдвиг элементов массива...

Осуществить циклический сдвиг элементов массива
Дан массив размера N. Осуществить циклический сдвиг элементов массива влево1|вправо2 на одну...

Осуществить циклический сдвиг элементов массива
2. Дан массив размера N (массив заполнить аналогично заданию 1) и число (0&lt;k&lt;5, k&lt;N). Осуществить...

Осуществить циклический сдвиг элементов массива
Дан массив размера N. Осуществить циклический сдвиг элементов массива влево1|вправо2 на одну...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru