Форум программистов, компьютерный форум, киберфорум
Pascal (Паскаль)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.55/40: Рейтинг темы: голосов - 40, средняя оценка - 4.55
0 / 0 / 0
Регистрация: 06.11.2013
Сообщений: 45

Найти минимальное число в текстовом файле

11.08.2014, 16:21. Показов 8011. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Задача найти минимальное число в текстовом файле.
В таком варианте выводит min=0
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
var T : text;
    n : integer;
    min:integer;
    cnt : integer;
 
begin
  Assign(T,'Numbers.txt');
  Reset(T);
  Read(T,n);
  min:=n;
  cnt:=0;
  while not Eof(T) do begin
    if Eoln(T) then Readln(T);
    Read(T,n);
    cnt:=cnt+1;
    if n<min then min:=n;
    if Cnt=100 then break;
    end;
    Close(T);
    Writeln(min);
    Readln;
end.
В таком варианте работает верно min=8

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
var T : text;
    n : integer;
    min:integer;
    cnt : integer;
 
begin
  Assign(T,'Numbers.txt');
  Reset(T);
  min:=1000;
  cnt:=0;
  while not Eof(T) do begin
    if Eoln(T) then Readln(T);
    Read(T,n);
    cnt:=cnt+1;
    if n<min then min:=n;
    if Cnt=100 then break;
    end;
    Close(T);
    Writeln(min);
    Readln;
end.
Подскажите почему?
Вложения
Тип файла: txt Numbers.txt (520 байт, 12 просмотров)
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
11.08.2014, 16:21
Ответы с готовыми решениями:

Найти в файле минимальное и максимальное число и записать их в другой файл
дан файл, содержащий числа.найти в нем минимальное и максимальное число и записатьих в другой файл.(Nikolja Sarkazi) Добавлено через...

Определить число знаков препинания в текстовом файле
Доброго времени суток! Дан текстовый файл, определить число знаков препинания, используемых в строке. program probel; var ...

Найти самое длинное и самое короткое из всех слов, записанных в текстовом файле WORDS.DAT, и записать их в файле LANG и KURZ
Найти самое длинное и самое короткое из всех слов, записанных в текстовом файле WORDS.DAT, и записать их в файле LANG и KURZ соответственно.

5
33 / 33 / 23
Регистрация: 16.04.2013
Сообщений: 212
11.08.2014, 16:38
Pascal
1
Read(T,n);
вот здесь что ты хочешь сделать?
0
Модератор
Эксперт Pascal/DelphiЭксперт NIX
 Аватар для bormant
7816 / 4635 / 2837
Регистрация: 22.11.2013
Сообщений: 13,158
Записей в блоге: 1
11.08.2014, 16:57
Лучший ответ Сообщение было отмечено Programmer_I как решение

Решение

Цитата Сообщение от Programmer_I Посмотреть сообщение
почему?
Есть логическая ошибка и ошибка, вызванная непониманием работы функций eof/eoln.

Логическая состоит в подсчёте количества считанных чисел. До цикла читается одно число, потом в цикле ещё 100, итого не более 101 числа будет проанализировано.
Исправление: либо в стр.11: cnt:=1;, либо в стр.16: if cnt=99 then break;

Непонимание особенности eof/eoln в следующем. Последним числом в файле примера является 324, после которого следует перевод строки и только за ним -- конец файла. Теперь протрассируем программу после считывания последнего числа 324:
1) стр.14: Cnt=98, cnt:=98+1, cnt=99
2) стр.15: n<min, 324<8, FALSE
3) стр.16: cnt=100, 99=100, FALSE
4) стр.11: Eof(T), FALSE, not FALSE=TRUE, цикл продолжается
5) стр.12: Eoln(T), TRUE, Readln(t) -- считан разделитель строк, теперь EOF(T) стал TRUE
6) стр.13: Read(T,n), в n читается 0
7) стр.14: cnt=99, cnt:=99+1, cnt=100
8) стр.15: n<min, 0<8, min:=0; -- вот присвоение того 0
9) стр.16: cnt=100, 100=100, TRUE, break
10) стр.18: Close(T);
11) стр.19: Writeln(min) -- выводит 0

Чтобы избегать подобной неприятности в TP есть функция SeekEOF, которая сперва пропускает все незначащие символы и только затем проверяет, достигнут ли конец файла:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
var
  t: text;
  n, min: Integer;
begin
  Assign(t,'numbers.txt');
  Reset(t);
  Read(t,min);
  while not SeekEOF(t) do begin
    Read(t,n);
    if min>n then min:=n;
  end;
  Close(t);
  WriteLn(min);
end.
0
0 / 0 / 0
Регистрация: 06.11.2013
Сообщений: 45
11.08.2014, 16:59  [ТС]
Читает данные из файла и записывает в переменную n
0
Модератор
Эксперт Pascal/DelphiЭксперт NIX
 Аватар для bormant
7816 / 4635 / 2837
Регистрация: 22.11.2013
Сообщений: 13,158
Записей в блоге: 1
11.08.2014, 17:03
Лучший ответ Сообщение было отмечено Programmer_I как решение

Решение

Второй вариант работает правильно, поскольку прерывает чтение после 100-го числа (нет дополнительного чтения из файла до начала цикла), а не 101-го.
1
0 / 0 / 0
Регистрация: 06.11.2013
Сообщений: 45
12.08.2014, 15:36  [ТС]
Спасибо.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
12.08.2014, 15:36
Помогаю со студенческими работами здесь

Разработать программу, которая подсчитывает число слов в текстовом файле и собирает статистику
Разработайте программу, которая подсчитывает число слов в текстовом файле и собирает статистику встречаемости для каждого слова. ...

Найти минимальный элемент в текстовом файле
Файл текстовый, несортированный. Найти минимальный элемент в файле и вывести его на экран. Работу с файлом оформить с помощью процедуры. ...

в текстовом файле дан текст: фамилия, имя, отчество. В новый текстовый файл вывести самое длинное число
в текстовом файле дан текст: фамилия, имя, отчество. В новый текстовый файл вывести самое длинное число

Найти длину самой длинной строки в текстовом файле.
Имеется текстовый файл.Найти длину самой длинной строки.

Как в текстовом файле найти слово и выдать об этом сообщение?
Мне нужно проверить наличие в текстовом файле определенного слова. Если этого слова нет, то выдать об этом сообщение (т.е. ошибка). Как это...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru