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

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

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

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


Гость






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


Perl. Just code it!
******

Группа: Модераторы
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

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


Действительно, тогда вот что сочинил:

for j := 1 to 3 do begin

i := 1; min := 1;

if j > 1 then begin
while (i <= n) and (A[i] <= A[M[j - 1]]) do inc(i);
min := i;
i := i + 1;
end;

while (i <= n) do begin
if ((j = 1) and (A[i] < A[min])) OR (j > 1) and (A[i] < A[M[j - 1]]) then
min := i;
inc(i);
end;

M[j] := min;

end;


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Lapp
сообщение 14.03.2007 13:44
Сообщение #3


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

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

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


Цитата(klem4 @ 14.03.2007 13:09) *

Действительно, тогда вот что сочинил:

Можно и так smile.gif
Только исправь строчку:
      while (i < n) and (A[i] <= A[M[j - 1]]) do inc(i); { убрано равентсво }

- иначе вылетает за пределы массива, если все его элементы равны.

Но все же надо как-то считать, сколько минимумов найдено - иначе не разберешься в результатах (например, проверь на 1, 1, 1, 1).. Или, как volvo, по признаку (-1) ..


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

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


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

 



- Текстовая версия 20.07.2025 13:53
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"