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

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

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

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


Гость






Ребят помогите пожалуйста, второй день голову ломаю, что-то никак не выходит!
Найти три наименьших по значению элемента одномерного массива (равные не учитывать) целых чисел, введеных с клавы. Заменить их на соответствующие им индексы.
Спасибо
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
Lapp
сообщение 14.03.2007 10:40
Сообщение #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 
 К началу страницы 
+ Ответить 
Гость
сообщение 14.03.2007 11:32
Сообщение #3


Гость






помоему код klem4 проще и понятней, а особых изысков не нужно, думаю преподаватель не поймет smile.gif
Все равно ОГРОМНОЕ СПАСИБО !
 К началу страницы 
+ Ответить 
Lapp
сообщение 14.03.2007 11:52
Сообщение #4


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

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

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


Цитата(Гость @ 14.03.2007 11:32) *

помоему код klem4 проще и понятней, а особых изысков не нужно, думаю преподаватель не поймет smile.gif
Все равно ОГРОМНОЕ СПАСИБО !

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

А что касается сдачи кода с ошибками - твое дело.. Сам исправить не можешь?


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  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:55
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"