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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 14.10.2011, 17:48   #1
Катакомба
Пользователь
 
Регистрация: 14.10.2011
Сообщений: 25
По умолчанию Ошибка в программе

надо,чтобы программа вычисляла сумму положительных элементов массива,расположенных между мин и мах элементами
вот что получилось написать:
Код:
sum:=0;
    m:=0;
    k:=0;
    for i := 1 to n do
    if x[i]=min then k:=i;
    if x[i]=max then m:=i;
    for i:=k+1 to m-1 do sum:=sum+x[i];
    writeln('sum polozit el-tov massiva mezdy min i max= ',sum:8:2);
    readln;
но что-то не работает.в чем проблема?
Катакомба вне форума Ответить с цитированием
Старый 14.10.2011, 17:53   #2
Neobrat
Форумчанин
 
Регистрация: 10.12.2007
Сообщений: 124
По умолчанию

for i := 1 to n do
begin
if x[i]=min then k:=i;
if x[i]=max then m:=i;
end;
Русский язык не мой конёк
Neobrat вне форума Ответить с цитированием
Старый 14.10.2011, 17:55   #3
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Видимо begin/end; пропущено в первом for. А макс и мин какие? Первые? Последние? Или только по 1 разу могут встретиться? Если последнее, то я бы во время поиска запоминал их индексы.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 14.10.2011, 17:59   #4
Neobrat
Форумчанин
 
Регистрация: 10.12.2007
Сообщений: 124
По умолчанию

а лучше чуток так

Код:
    sum:=0;
    m:=x[i];
    k:=x[i];
    for i := 1 to n do
    begin
      if x[i]=min then k:=i;
      if x[i]=max then m:=i;
    end;
    for i:=k+1 to m-1 do
      if x[i]>0 then // берем только положительные
       sum:=sum+x[i];
    writeln('sum polozit el-tov massiva mezdy min i max= ',sum:8:2);
    readln;
Русский язык не мой конёк
Neobrat вне форума Ответить с цитированием
Старый 14.10.2011, 18:02   #5
Катакомба
Пользователь
 
Регистрация: 14.10.2011
Сообщений: 25
По умолчанию

видимо в задании подразумевается что мин и мах элементы только один раз встречаются.
вы правы всё дело в begin/end
всё,теперь программа полностью работает
СПАСИБО ВСЕМ за помощь!!!
Катакомба вне форума Ответить с цитированием
Старый 14.10.2011, 18:03   #6
Neobrat
Форумчанин
 
Регистрация: 10.12.2007
Сообщений: 124
По умолчанию

хотя нет.. совсем не так..
у вас нет поиска минимума и максимума(если они конечно не задаются вручную где то выше)

Код:
    sum:=0;
    max:=x[i];
    min:=x[i];

    m:=0;
    k:=0;
    for i := 1 to n do
    begin
      if x[i]<min then 
       begin
        min := x[i];
        k:=i;
       end;
      if x[i]>max then
      begin
        max := x[i]
        m:=i;
      end;
    end;

    for i:=k+1 to m-1 do
      if x[i]>0 then // берем только положительные
       sum:=sum+x[i];
    writeln('sum polozit el-tov massiva mezdy min i max= ',sum:8:2);
    readln;
Русский язык не мой конёк
Neobrat вне форума Ответить с цитированием
Старый 14.10.2011, 18:06   #7
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Цитата:
у вас нет поиска минимума и максимума
а у вас объявления переменных и заполнения массива)
Перед поиском, кстати, наверно max и min :=x[1], а не i и их индексы тоже 1.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 14.10.2011, 18:10   #8
Катакомба
Пользователь
 
Регистрация: 14.10.2011
Сообщений: 25
По умолчанию

поиск мин и мах у меня действительно выше задается,
для того,чтобы он суммировал только положительные элементы между мин и мах оказалось достаточно добавить эту строчку
Код:
if x[i]>0 then
Катакомба вне форума Ответить с цитированием
Старый 14.10.2011, 18:11   #9
Neobrat
Форумчанин
 
Регистрация: 10.12.2007
Сообщений: 124
По умолчанию

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
а у вас объявления переменных и заполнения массива)
Перед поиском, кстати, наверно max и min :=x[1], а не i и их индексы тоже 1.

я не ставил целью написать готовую функцию..
уж извините, заполнение думаю сможете сделать сами)

max и min :=x[1] - да, конечно же 1, поторопился малость
и вот тут
m:=0;
k:=0;
не нули а единицы надо, (все ни как привыкнуть не могу, что студенты считают массивы от единицы)
Русский язык не мой конёк
Neobrat вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ошибка в программе LuBuMaster Visual C++ 5 07.10.2010 17:19
Ошибка в программе. T@tali Паскаль, Turbo Pascal, PascalABC.NET 15 25.05.2010 13:36
Ошибка в программе forman Общие вопросы C/C++ 1 18.05.2010 22:47
Ошибка в программе на С++ Vikelf Помощь студентам 3 15.05.2009 15:05