IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> Одномерный массив - вроде бы просто?
сообщение
Сообщение #1


Гость






Ребят помогите пожалуйста, второй день голову ломаю, что-то никак не выходит!
Найти три наименьших по значению элемента одномерного массива (равные не учитывать) целых чисел, введеных с клавы. Заменить их на соответствующие им индексы.
Спасибо
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
сообщение
Сообщение #2


Уникум
*******

Группа: Пользователи
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

Репутация: -  159  +


И еще одна: надо подсчитывать количество минимумов и распечатывать не все три элемента массива, а только найденные.

Все же я приведу тут свой исправленный вариант. Он отличается тем, что поиск производится за один проход.
(Не проверено!)
  Max:=a[1];
iMax:=1;
for i:=2 to N do if a[i]>Max then begin { находим максимальный элемент }
Max:=a[i];
iMax:=i
end;
M:=1; { Общее число минимальных элементов }
for j:=1 to 3 do begin { подготовка массивов минимальных элементов и номеров }
Min[j]:=Max;
iMin[j]:=iMax
end;
for i:=2 to N do
for j:=1 to 3 do if a[i]<Min[j] then begin { найден новый минимальный элемент }
for k:=j to 2 do begin { сдвигаем массив минимальных элементов вместе с индексами }
Min[k+1]:=Min[k];
iMin[k+1]:=iMin[k]
end;
Min[j]:=a[i];
iMin[j]:=i;
if (M=j) and (M<3) then Inc(M) { увеличиваем число минимальных элементов }
Break
end;
for j:=1 to M do a[iMin[j]]:=iMin[j]; { замена минимальных элементов на их индексы }


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме
Petruxa   Одномерный массив - вроде бы просто?   14.03.2007 13:25
Lapp   Вот такой код, вроде, должен работать (не проверял…   14.03.2007 14:04
klem4   const n = 4; type TArray = array [1..n] of Inte…   14.03.2007 14:14
Petruxa   'klem4' - огромное спасибо, всё работает…   14.03.2007 14:36
Lapp   Да, схема Klem4 лучше.. :) Свою я исправил (надо и…   14.03.2007 14:33
Petruxa   а может лучше выложить Ваш код? очень интересно...   14.03.2007 14:38
Lapp   И еще одна: надо подсчитывать количество минимумов…   14.03.2007 14:40
Гость   помоему код klem4 проще и понятней, а особых изыск…   14.03.2007 15:32
Lapp   помоему код klem4 проще и понятней, а особых изыс…   14.03.2007 15:52
volvo   Я бы сделал вот это (для общего случая, а не тольк…   14.03.2007 16:15
Lapp   Пока смотрел код volvo, нашел еще одну ошибку у се…   14.03.2007 16:28
klem4   У меня то учитывается: Единственное можно еще…   14.03.2007 16:39
Lapp   Проверь на массиве 1, 2, 3, 4 Твоя прога выдает ин…   14.03.2007 16:46
klem4   Действительно, тогда вот что сочинил: for j := 1 …   14.03.2007 17:09
Lapp   Действительно, тогда вот что сочинил: Можно и та…   14.03.2007 17:44


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 28.03.2024 21:25
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name