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

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

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

> Программа завершает работу при выполнении
avp
сообщение 16.10.2005 20:29
Сообщение #1





Группа: Пользователи
Сообщений: 7
Пол: Женский

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


В этой задаче при вводе всех одинаковых элементов она завершается. Что не верно? Помогите?
Код

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.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме


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

 

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