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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 30.04.2011, 00:39   #1
Cas01
Форумчанин
 
Регистрация: 16.12.2010
Сообщений: 175
По умолчанию Массив(Паскаль)!

ПОМОГИТЕ ПЛЗ С ПРОГОЙ...СРОЧНО НУЖНО.....


Дан массив размера N. Найти номера тех элементов массива которые больше своего правого соседа и количество таких элементов. Найденные номера выводить в порядке их возрастания.
Cas01 вне форума Ответить с цитированием
Старый 30.04.2011, 00:44   #2
VIK_aka_TOR
Участник клуба
 
Аватар для VIK_aka_TOR
 
Регистрация: 30.01.2011
Сообщений: 1,578
По умолчанию

Код:
for i:=1 to n-1 do  //  поправка принята
if a[i]>a[i+1] then
begin
inc(z);
b[z]:=i;
end;
затем отсортируешь массив b и готово...
а массив b... ну если не нужно то да... можно и без него...
пишу код не только за печеньки

Последний раз редактировалось VIK_aka_TOR; 30.04.2011 в 11:42.
VIK_aka_TOR вне форума Ответить с цитированием
Старый 30.04.2011, 11:01   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

VIK_aka_TOR, Ваше решение имеет существенную ошибку (при i=N не существует "правого соседа" , поэтому a[i+1] - это выход за границы массива => ошибка.

Это раз. и второе. Зачем найденные номера сохранять в массив B ?! Ведь такой задачи не ставилось..

и последнее. сортировать эти номера смысла нет - т.к. они ВСЕГДА будут в порядке возрастания (мы же в цикле по i идём от 1 к N - следовательно i будут в возрастающем порядке.

я бы предложил такой вариант:
Код:
for i:=1 to N-1 do
  if A[i] > A[i+1] then WriteLn(i);
и всё.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 30.04.2011, 11:26   #4
Cas01
Форумчанин
 
Регистрация: 16.12.2010
Сообщений: 175
По умолчанию

А можно код целиком?Если не трудно конечно...заранее спасибо
Cas01 вне форума Ответить с цитированием
Старый 30.04.2011, 11:43   #5
VIK_aka_TOR
Участник клуба
 
Аватар для VIK_aka_TOR
 
Регистрация: 30.01.2011
Сообщений: 1,578
Лампочка

начинай думать сам.... иначе ничего хорошего не получиться...
такие задачки... с них все начинается... а ты уже о помощи...
пишу код не только за печеньки
VIK_aka_TOR вне форума Ответить с цитированием
Старый 30.04.2011, 12:30   #6
Cas01
Форумчанин
 
Регистрация: 16.12.2010
Сообщений: 175
По умолчанию

вот смотрите...это я сам что то делал, уверен что сильно напутал в цикле....очень прошу исправить.....
Код:
program P4;
const
  N = 6;
var
  mas: array [1..N] of integer;
  i, k: integer;
begin
  writeln('Введите элементы массива');
  for i := 1 to N do readln(mas[i]);
  k := 0;
  for i := 1 downto N do
    if mas[i] > mas[i + 1] then begin
      writeln(mas[i]);
      k := k + 1;
    end;
  writeln('Результат:', k);
end.

Последний раз редактировалось Stilet; 30.04.2011 в 13:32.
Cas01 вне форума Ответить с цитированием
Старый 30.04.2011, 13:17   #7
malinoff
Форумчанин
 
Аватар для malinoff
 
Регистрация: 08.01.2010
Сообщений: 205
По умолчанию

Цитата:
for i := 1 downto N do
В цикл программа никогда не зайдет, если N >= 1. Зачем использовали downto?

Цикл должен быть от 1 до N-1, ведь если вы сравниваете левый элемент с правым, то при i = N mas[i+1] будет выход за рамки массива
Если помог - кликни на значок весов под аватаром.
malinoff вне форума Ответить с цитированием
Старый 30.04.2011, 13:33   #8
Oleg Osipov
 
Регистрация: 20.02.2011
Сообщений: 4
По умолчанию

Код:
program P4;
const
N = 10;
var
mas: array [1..N] of integer;
i, k: integer;
begin
k:=0;
writeln('Vvod');
for i := 1 to N do readln(mas[i]);

writeln('Result');
writeln('Nomera elementov');
for i := 1 to N-1 do //проход от первого до предпоследнего элемента
if mas[i] > mas[i + 1] then
   begin
        writeln(i); //вывод номера элемента
        k:=k+1; //подсчет числа таких элементов
   end;
writeln('Kol-vo elementov');
writeln(k);

readln;


end.

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

Последний раз редактировалось Serge_Bliznykov; 30.04.2011 в 17:01.
Oleg Osipov вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Паскаль массив dante92 Помощь студентам 2 13.04.2010 17:39
Массив.Паскаль. ulia8412 Помощь студентам 2 19.12.2009 20:34
паскаль. массив анна1. Помощь студентам 1 29.11.2009 13:16