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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 21.03.2011, 09:59   #1
Катя)
Пользователь
 
Аватар для Катя)
 
Регистрация: 02.03.2011
Сообщений: 16
По умолчанию Одномерный массив.

Прощу помочь с решением задачи.

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

Z - как я поняла, тоже надо вводить.

Вот, вроде как есть вариант, но нужно чтоб задача была без процедур:

Код:
program tt;
uses wincrt;
var
  a:array[1..100] of integer;
  i,z,sum,n,j,r:integer;
begin
  Randomize;
  writeln('Введите размер массива: ');
  readln(n);
  sum:=0;
  for i:=1 to n do begin
    a[i]:=random(40)-20;
    write(a[i],' ');
    inc(sum,a[i]);
  end;
  writeln;
  if sum>0 then begin
     writeln('Введите на сколько произвести сдвиг:');
     readln(z);  
     for i:=1 to z do begin
       for j:=n downto 1 do
         if (j=n) then r:=a[n] else a[j+1]:=a[j];
      a[1]:=r;
      end;
   end;
   writeln('массив после обработки:')l
   for i:=1 to n do
     write(a[i],' ');
 readln
end.
Катя) вне форума Ответить с цитированием
Старый 21.03.2011, 10:52   #2
Прик
Форумчанин
 
Регистрация: 08.09.2010
Сообщений: 880
По умолчанию

Цитата:
Сообщение от Катя) Посмотреть сообщение
Вот, вроде как есть вариант, но нужно чтоб задача была без процедур:
Где же вы в этом примере процедуры увидели?
Прик вне форума Ответить с цитированием
Старый 21.03.2011, 14:11   #3
Летучий_СкилетиК
Форумчанин
 
Аватар для Летучий_СкилетиК
 
Регистрация: 04.02.2011
Сообщений: 260
По умолчанию

Цитата:
Z - как я поняла, тоже надо вводить
, да так оно и есть.
Код:
  type
      mas = array [1..50] of byte;
var a : mas;
i, n, z, s : byte;

procedure sdvig (n : byte);
var t ,j : byte;
begin
        t := a [n];
        for j := n downto 2 do
            a [j] := a [j-1];
        a [1] := t;
   end;
begin
readln(n,z);
s := 0;
for i:=1 to n do
begin
    readln(a[i]);
    s := s + a [i];
end;
if s > 0 then
   for i := 1 to z do
       sdvig (n);
for i:=1 to n do
write(a[i],' ');
readln;
end.
Летучий_СкилетиК вне форума Ответить с цитированием
Старый 21.03.2011, 22:43   #4
Катя)
Пользователь
 
Аватар для Катя)
 
Регистрация: 02.03.2011
Сообщений: 16
По умолчанию

Вот написала под себя прогу.
Но понять не могу, получается какой-то странный результат.
Может где-то ошибка? или вывод не правильный?

Код:
Program bz;
Var a:array[1..50]of integer;
sum,i,n,z,p:integer;
Begin
    writeln('Введите N');
    readln(N);
 For i:=1 to n do
                 begin
                    writeln('a[',i,']=');
                    readln(a[i]);
                 end;
 sum:=0;
For i:=1 to n do
    sum:=sum+a[i];
IF sum>0 then begin
                 writeln('Введите z'); {вводим число сдвига}
                 readln(z);
               end;
For i:=1 downto z do
   begin
     p:=a[n];  {в переменную P забиваем конечное значение массива}
    For i:=n downto 2 do
     a[i]:=a[i-1];
     a[1]:=p;  {на пустое первое значение забиваем конечное}
   end;
 
   writeln('массив со сдвигом:');
   for i:=1 to n do
     write(a[i],' ');
 readln;
end.
Катя) вне форума Ответить с цитированием
Старый 21.03.2011, 23:29   #5
skgwazap
Пользователь
 
Регистрация: 24.11.2010
Сообщений: 40
По умолчанию

Код:
For i:=1 downto z do
   begin
     p:=a[n];  {в переменную P забиваем конечное значение массива}
    For i:(тут)=n downto 2 do
     a[i(тут)]:=a[i(тут)-1];
     a[1]:=p;  {на пустое первое значение забиваем конечное}
   end;
нужно использовать другую переменную (например j)? иначе предыдущее значение i теряется.
skgwazap вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Одномерный массив , двухмерный массив Woxx Паскаль, Turbo Pascal, PascalABC.NET 0 10.09.2010 09:28
Одномерный массив. Q basic - Построить новый массив из элементов исходного ,которые больше P. Marishkaa Помощь студентам 2 12.01.2010 16:54
Двумерный массив, одномерный массив. Branbal Помощь студентам 14 18.11.2009 12:40
С# одномерный массив Gigatrest Помощь студентам 15 31.05.2009 19:08
Массив Одномерный flait111 Помощь студентам 3 15.12.2007 14:08