Форум программистов, компьютерный форум, киберфорум
Pascal ABC
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.76/55: Рейтинг темы: голосов - 55, средняя оценка - 4.76
0 / 0 / 0
Регистрация: 06.04.2019
Сообщений: 4

Нахождение минимального числа с условием

23.09.2019, 09:54. Показов 10345. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте! Задача заключается в том, чтобы найти минимальное число из десяти введенных целых чисел. Однако, если введено меньше 10 чисел, то программа должна выдавать сообщение "слишком короткий набор", и соответственное сообщение, если чисел введено больше 10. Если чисел ровно 10, то найти минимальное из них. Моя программа вычисляет минимальное значение, когда в ряду 10 и более чисел, если меньше, то ничего не происходит. Где ошибка?
Миниатюры
Нахождение минимального числа с условием  
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
23.09.2019, 09:54
Ответы с готовыми решениями:

Нахождение минимального числа
Составить алгоритм нахождения min(a,b,c). Воспользоваться алгоритмом-процедурой нахождения min из 2-х чисел. Использовать при решении...

Программа на нахождение минимального числа из массива 5 чисел.
Программа на нахождение минимального числа из массива 5 чисел. (например 4 15 8 9 3, минимальное 3) Заранее благодарен.

нахождение минимального в массиве
Программа определяет в одномерном массиве А размерностью N минимальный элемент и его порядковый номер.

11
 Аватар для mr-Crocodile
3053 / 1672 / 657
Регистрация: 19.03.2019
Сообщений: 5,380
23.09.2019, 10:30
ошибка в том, что ты читаешь в цикле for ровно n (десять) раз
у тебя пользователь меньше десяти чисел ввести не может - программа ждёт, пока он введёт 10 чисел.

ну и сравнивать константу n с число 10 - глупо.
погугли, что такое "константа". ты же сам написал, что n = 10. поэтому у тебя n = 10. и другое значение n не получит.
1
0 / 0 / 0
Регистрация: 06.04.2019
Сообщений: 4
23.09.2019, 10:45  [ТС]
В любом случае, если убрать n из констант и записать как n: integer. Программа работает некорректно
0
 Аватар для mr-Crocodile
3053 / 1672 / 657
Регистрация: 19.03.2019
Сообщений: 5,380
23.09.2019, 11:50
Цитата Сообщение от frioluna Посмотреть сообщение
В любом случае, если убрать n из констант и записать как n: integer. Программа работает некорректно
ну так да, неверно работает.
а ты мне скажи, вот пользователь вводит числа. вводит одно, вводит второе...
как программа должна догадаться, что он закончил вводить числа?
(подсказка - можно заставить пользователя ввести стоп-число (к примеру, ноль).
можно (чуть сложнее) вводить строку, если просто Enter нажал, значит, закончил вводить.
можно спросить, сколько будет чисел. Сколько указал, столько и ввести.
можно считывать числа из файла. Там конец очевиден - кончился файл, значит, и числа закончились.

ты скажи, как тебе надо.
1
Модератор
Эксперт Pascal/DelphiЭксперт NIX
 Аватар для bormant
7816 / 4635 / 2837
Регистрация: 22.11.2013
Сообщений: 13,159
Записей в блоге: 1
23.09.2019, 23:04
frioluna,
 Комментарий модератора 
Вы, регистрируясь на форуме, пообещали следовать его правилам.
Дабы помочь в исполнении этого обещания, обращаю внимание, что правилами запрещается публикация текста в виде картинок.

Ссылка на правила приложена, изучаем, впредь держим свое обещание.
Правила форума: https://www.cyberforum.ru/announcement.php?a=3
0
2374 / 776 / 561
Регистрация: 15.01.2019
Сообщений: 2,394
24.09.2019, 08:30
Попробуйте такой код.
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
program Project1;
 
var
  min: integer; // Переменная для хранения значения минимального числа.
  str: string;  // Промежуточная переменная для хранения информации в строковом типе.
  x: integer;   // Переменная для хранения значения вводимого числа.
  i: integer;   // Вспомогательная переменная для подсчета вводимых чисел.
  cod: integer;  // Вспомогательная переменная для организации корректного вывода информации.
begin
  i:= 1;
  writeln('Введите целые числа (Введите слово "stop", чтобы выйти зи программы.)');
  min:= 2147483647;
  repeat
    write('Число #',i, ': ');
    Readln(str);
    if str = 'stop' then  // Условия выхода из бесконечного цикла.
      exit;
    val(str,x,cod);         //  Преобразования строковой информации в цифровое значение.
    if cod <> 0 then
      begin
        writeln('Некорректный ввод значения числа.');
        i:= i-1;
      end
    else
      begin
        if x < min then     //  Условие для поиска минимального по значению числа.
          min:= x;
        if i < 10 then
          writeln('Слишком короткий набор.')
        else
          if i = 10 then
            writeln('Минимальное значение равно: ',min)
          else
            if i > 10 then
              writeln('Слишком длинный набор.');
 
      end;
    inc(i);
  until  false;
 
  Readln;
end.
1
Модератор
Эксперт Pascal/DelphiЭксперт NIX
 Аватар для bormant
7816 / 4635 / 2837
Регистрация: 22.11.2013
Сообщений: 13,159
Записей в блоге: 1
24.09.2019, 11:22
ValentinNemo,
глупость же -- зачем на каждое число выдавать "Слишком короткий набор"? Условие же было несколько иное.

Если б речь шла не о PascalABC, можно было бы использовать ввод в одну строку:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
var m, n, t: Integer;
begin
  Write('10 чисел в строку: ');
  {n:=0;} Read(m); Inc(n);
  while not EoLn do begin
    Read(t); Inc(n);
    if m>t then m:=t;
  end;
  if n=10 then WriteLn('min = ',m)
  else if n<10 then WriteLn('Мало чисел')
  else WriteLn('Много чисел');
end.
или ввод любого слова не-числа для окончания ввода:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
var m, n, t: Integer;
begin
  Write('Введите 10 чисел: ');
  {n:=0;} Read(m); Inc(n);
  repeat {$R-}
    Read(t); Inc(n);
    if IOResult<>0 then Break;
    if m>t then m:=t;
  until False;
  if n=10 then WriteLn('min = ',m)
  else if n<10 then WriteLn('Мало чисел')
  else WriteLn('Много чисел');
end.
Но для PascalABC первый вариант не годится, поскольку EoLn не обрабатывает стандартный ввод, а второй -- нет IOResult.

Возвращаясь к логике с ручной проверкой ввода:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
var
  m, n, t, k: Integer;
  s: String;
begin
  WriteLn('Введите 10 чисел по одному в строке, окончание ввода - stop: ');
  {n:=0;}
  repeat
    ReadLn(s); Val(s,t,k);
    if k<>0 then Break;
    if n=0 then m:=t;
    if m>t then m:=t;
    Inc(n);
  until False;
  if n=10 then WriteLn('min = ',m)
  else if n<10 then WriteLn('Чисел <10')
  else WriteLn('Чисел >10');
end.
1
2374 / 776 / 561
Регистрация: 15.01.2019
Сообщений: 2,394
24.09.2019, 14:51
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
program Project1;
 
var
  min: integer; // Переменная для хранения значения минимального числа.
  str: string;  // Промежуточная переменная для хранения информации в строковом типе.
  x: integer;   // Переменная для хранения значения вводимого числа.
  i: integer;   // Вспомогательная переменная для подсчета вводимых чисел.
  cod: integer;  // Вспомогательная переменная для организации корректного вывода информации.
begin
  i:= 0;
  writeln('Введите целые числа (Введите слово "stop", чтобы выйти зи программы.)');
  min:= 2147483647;
  repeat
    inc(i);
    write('Число #',i, ': ');
    Readln(str);
    if str = 'stop' then // Условия выхода из бесконечного цикла.
      begin
        i:= i-1;
        break;
      end;
    val(str,x,cod);         //  Преобразования строковой информации в цифровое значение.
    if cod <> 0 then
      begin
        writeln('Некорректный ввод значения числа.');
        i:= i-1;
      end;
    if x < min then     //  Условие для поиска минимального по значению числа.
      min:= x;
 
  until  false;
 
  if i < 10 then
    writeln('Слишком короткий набор.')
  else
    if i = 10 then
      writeln('Минимальное значение равно: ',min)
    else
      if i > 10 then
        writeln('Слишком длинный набор.');
  Readln;
end.
1
0 / 0 / 0
Регистрация: 06.04.2019
Сообщений: 4
26.09.2019, 05:45  [ТС]
Всем огромное спасибо! Все ваши варианты очень помогли. В итоге у меня вот что получилось:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
var tek, kol, min: integer;
 
begin
writeln ('Введите 10 целыx чисел, в конце введите 0');
kol:= 0;
 min:= 2147483647;
writeln ('Число N1');
read (tek);
   if tek < min then     {Условие для поиска минимального числа}
      min:= tek;
while tek<>0 {последовательность не закончилась} do
begin
kol:=kol+1; {увеличить количество элементов}
writeln ('Введите элемент N', kol+1);
read (tek);
end;   
  if kol < 10 then
    writeln('Слишком короткий набор.')
  else
    if kol = 10 then
      writeln('Минимальное значение равно: ',min)
    else
      if kol > 10 then
        writeln('Слишком длинный набор.');
  Readln;
end.
0
 Аватар для mr-Crocodile
3053 / 1672 / 657
Регистрация: 19.03.2019
Сообщений: 5,380
26.09.2019, 14:12
неверно.

попробуй так:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
var tek, kol, min: integer;
 
begin
  writeln ('Введите 10 целыx чисел, в конце введите 0');
  kol:= 1;
  writeln ('Число N1');
  read (tek);
  min := tek;
  while tek<>0 {последовательность не закончилась} do
  begin
     writeln ('Введите элемент N', kol+1);
     read (tek);
     if tek<>0 then begin
       kol:=kol+1; {увеличить количество элементов}
       if tek < min then     {Условие для поиска минимального числа}
            min:= tek;
     end;     
  end;   
  if kol=10 then 
      writeln('Минимальное значение равно: ',min)
  else
    if kol < 10 then
       writeln('Слишком короткий набор (меньше 10 чисел).')
    else
      writeln('Слишком длинный набор (больше 10 чисел).');
  Readln;
end.
0
Модератор
Эксперт Pascal/DelphiЭксперт NIX
 Аватар для bormant
7816 / 4635 / 2837
Регистрация: 22.11.2013
Сообщений: 13,159
Записей в блоге: 1
26.09.2019, 14:51
mr-Crocodile,
меньше лишних телодвижений:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
var t, m, k: Integer;
begin
  Write('Введите 10 чисел, затем 0:'); Read(t); m:=t;
  while t<>0 do begin
    if m>t then m:=t;
    Inc(k); Read(t);
  end;
  case k of
    0..9: WriteLn('Чисел <10');
    10: WriteLn('Минимум: ',m);
    else WriteLn('Чисел >10');
  end;
end.
0
 Аватар для mr-Crocodile
3053 / 1672 / 657
Регистрация: 19.03.2019
Сообщений: 5,380
26.09.2019, 15:18
Цитата Сообщение от bormant Посмотреть сообщение
меньше лишних телодвижений

так
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
26.09.2019, 15:18
Помогаю со студенческими работами здесь

Нахождение значения минимального отклонения
Даны три числа a,b,c. Составить программу нахождения значения минимального отклонения каждого из них от их среднего арифмитического. Данные...

Нахождение минимального элемента массива
1. Написать подпрограмму нахождения минимального элемента массива A. 2. Два простых числа называются «близнецами», если они отличаются...

Нахождение минимального и максимального элемента массива
Здравствуйте!Помогите,пожалуйста,решить задачи,была бы очень благодарна! 1.СОСТАВИТЬ АЛГОРИТМ(ПРОГРАММУ)НАХОЖДЕНИЯ МИНИМАЛЬНОГО И...

Рекурсия: нахождение минимального элемента последовательности
Дана последовательность, состоящая из n действительных чисел, найти минимальное по величине число.

Нахождение минимального элемента строки матрицы
Дано масив А. Скласти програму пошуку всіх елементів масиву А мінімальних у свому рядку


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru