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

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

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 22.04.2011, 14:37   #1
Санеk
 
Регистрация: 22.04.2011
Сообщений: 6
По умолчанию Циклический сдвиг

Заполнить массив из 12 элементов случайными числами в интервале [-12..12] и выполнить циклический сдвиг ВПРАВО на 4 элемента.
Втот пример решения что тут не правильно?
Код:
program qq;
const N=12;
var A:array [1..N] of integer;
i,c:integer;
begin
writeln('Исходный массив');
for i:=1 to N do begin
a[i]:=  random (21)-12;
write(a[i]:4);
end;
c:=A[N];
for i:=N downto 2 do A[i]:=A[i-1];
A[1]:=c;
writeln;
writeln('Обратный массив');
for i:=1 to N do
write(a[i]:4);
end.
если можно напишите мою ошибку




___________
Код нужно оформлять по правилам:
тегом [CODE]..[/СODE] (это кнопочка с решёточкой #)
Не забывайте об этом!
Модератор.

Последний раз редактировалось Serge_Bliznykov; 22.04.2011 в 15:06.
Санеk вне форума Ответить с цитированием
Старый 22.04.2011, 15:19   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

1) ошибка в диапазоне задания случайных величин. нужно чтобы и -12 и 12 входили..
поэтому надо так:
Код:
a[i] :=  random (25)-12;
2) у вас написан код для циклического сдвига вправо на 1 элемент.
а надо на четыре!
возьмите сдвиг в цикл:
Код:
const Cnt = 4;
...
var j : integer;
...
  for j:=1 to Cnt do begin
      c:=A[N];
      for i:=N downto 2 do A[i]:=A[i-1];
      A[1]:=c;
  end;
Serge_Bliznykov вне форума Ответить с цитированием
Старый 22.04.2011, 15:49   #3
Санеk
 
Регистрация: 22.04.2011
Сообщений: 6
По умолчанию

Сергей я папробовал но чтото у меня не получилось. Немогли бы вы полностью написать програму?
Санеk вне форума Ответить с цитированием
Старый 22.04.2011, 16:23   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

да пожалуйста. (она Вами уже полностью и написана!)

Код:
program qq;
const
  N = 12; {размер исходного массива}
  Cnt = 4; {на сколько элементов сдвигать}
var
  A: array[1..N] of integer;
  i, c, j: integer;
begin
  Randomize;
  writeln('Исходный массив');
  for i := 1 to N do begin
    A[i] := -12 + random(25);
    write(a[i]: 4);
  end;
  writeln;
 {собственно сдвиг}
  for j := 1 to Cnt do begin
    c := A[N];
    for i := N downto 2 do A[i] := A[i - 1];
    A[1] := c;
  end;

  writeln('Массив после циклического сдвига вправо:');
  for i := 1 to N do
    write(a[i]: 4);

  writeln;
  readln;
end.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 22.04.2011, 16:38   #5
Санеk
 
Регистрация: 22.04.2011
Сообщений: 6
По умолчанию

Спасибо вам Сергей
Санеk вне форума Ответить с цитированием
Старый 25.12.2015, 09:43   #6
Aleksandr H.
2 the Nation Glory
Старожил
 
Аватар для Aleksandr H.
 
Регистрация: 27.05.2014
Сообщений: 3,289
По умолчанию

никита134245 А первое сообщение темы прочитать не дано?
Цитата:
___________
Код нужно оформлять по правилам:
тегом [CODE]..[/СODE] (это кнопочка с решёточкой #)
Не забывайте об этом!
Модератор.
Код:
program lab9;
uses crt;
const n=10;
	cnt=2;
type mas=array[1..n] of integer;
var a:mas;
	i,j,k,min,c:integer;
begin
clrscr;
randomize;
for i:=1 to n do
 begin
  a[i] := random(100);
  a[i] := 50 - a[i];
  write (a[i]:4);
 end;
writeln;
min:=a[1];
for i:=1 to n do
 if min>=a[i] then
  begin
   min:=a[i];
   c:=i;
  end;
writeln(min,' ',c);
for i:=n downto c+2 do
 a[i]:=a[i-2];
a[c]:=min;a[c+1]:=min;
{for j:=c to cnt do
 begin
  k:=a[n];
   for i:=1 downto 2 do
    a[i]:=a[i-1];
   a[1]:=k;
 end;}
for i:=1 to n do
 write(a[i]:4);
readln;
end.
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы.
Aleksandr H. вне форума Ответить с цитированием
Старый 25.12.2015, 09:51   #7
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

Я чот не понял, вы тут все чо, данные перемещаете, штоли?
Указатели? Какие указатели??!!11 Не, не слышали!
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 25.12.2015, 09:54   #8
Aleksandr H.
2 the Nation Glory
Старожил
 
Аватар для Aleksandr H.
 
Регистрация: 27.05.2014
Сообщений: 3,289
По умолчанию

Просвещай, чо и куда указывать
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы.
Aleksandr H. вне форума Ответить с цитированием
Старый 25.12.2015, 09:58   #9
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Никита, поиск минимального у Вас написан неверно.
рекомендую его переписать вообще проще:
Код:
 writeln;
 {поиск последнего минимального}
 c:=1;
 for i:=1 to n do
    if a[c]>=a[i] then c:=i;
кстати, при таком подходе переменная min вообще не нужна, можно её выкинуть!



что же касается второй части задания, рекомендую такой код:
Код:
 {сдвиг}
 for i:=n downto c+cnt+1 do
   a[i] := a[i-2];
   
 {присвоение минимального элементам на освободившихся местах}
 for i:=c+1 to c+cnt do
   if i<=n then
      a[i]:=a[c];
Serge_Bliznykov вне форума Ответить с цитированием
Старый 25.12.2015, 10:02   #10
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

Цитата:
Просвещай, чо и куда указывать
щас товарищи подтянутся и подскажут.
а мне проще демо-прогу написать.
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
циклический сдвиг revaldo666 Общие вопросы C/C++ 4 29.03.2011 17:34
Циклический сдвиг в С rand8154 Общие вопросы C/C++ 1 14.11.2009 01:49
Циклический сдвиг Mish92(21-09) Помощь студентам 0 07.11.2009 21:59
Циклический сдвиг маирицы на С++ Svetlaya Помощь студентам 0 06.06.2009 22:31