![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() |
avp |
![]()
Сообщение
#1
|
Группа: Пользователи Сообщений: 7 Пол: Женский Репутация: ![]() ![]() ![]() |
В этой задаче при вводе всех одинаковых элементов она завершается. Что не верно? Помогите?
Код const MaxSize=100; var A: array[1..MaxSize] of integer; {Массив элементов} I, MinElem, {Минимальный искомый элемент} MinElemN, {Сколько раз встретился этот элемент} GranElem, {Граничный минимальный элемент. Требуется в случае если в первом поиске ElemN>1} MaxN: integer; {Количество элементов в массиве A} begin {Ввод массива} writeln('Найти минимальный элемент, встречающийся в массиве один раз'); repeat write('Задайте число элементов в массиве <1..',MaxSize,') '); readln(MaxN); if (MaxN <= 0) or (MaxN > MaxSize) then writeln('Вы ошиблись! Повторите!'); until (MaxN > 0) and (MaxN <= MaxSize); for I := 1 to MaxN do begin writeln('Введите числа:'); for i := 1 to MaxN do begin write(i:4,': '); readln(A[i]); end; {Первоначальный поиск находит минимальный элемент MinElem. Здесь же проверка, однократно ли он встречается в массиве. Если элемент встречается неоднократно, повторный поиск. Теперь в поиске участвуют только элементы большие, чем GranElem с учетом знака} MinElem:=A[1]; for i:=2 to MaxN do if A[i]<MinElem then MinElem:=A[i]; for i:=1 to MaxN do if A[i]=MinElem then MinElemN:=MinElemN+1; {Вывод результата если минимальный элемент только однажды} if MinElemN>1 then begin {если с первого раза не нашли} {Пока "как бы минимальный" элемент встречается более одного раза, повторяем.} while MinElemN > 1 do begin writeln('Отбрасываем промежутчный минимальный элемент ',MinElem); MinElemN:=0; GranElem:=MinElem; MinElem:=MAXINT; {"Двойные" элементы не участвуют в поиск, они отсекаются условием A[i]>GranElem } for i:=1 to MaxN do if (A[i]<MinElem) and (A[i]>GranElem) then MinElem:=A[i]; for i:=1 to MaxN do if A[i]=MinElem then MinElemN:=MinElemN+1; end; {while} end; {Для условия "если с первого раза не нашли"} writeln('Минимальный элемент равен ',MinElem); readln; end; end. |
![]() ![]() |
![]() |
Текстовая версия | 23.07.2025 3:43 |