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

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

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

> чтение чисел из файла..., начинаю изучать файлы
сообщение
Сообщение #1


Человек
*****

Группа: Пользователи
Сообщений: 1 050
Пол: Мужской
Реальное имя: Станислав

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


Добрый день!
надо написать программу выполняющую чтение из текстового файла целых чисел и вывод на печать только четных чисел. собственно вот...
Var
f : text;
Put : string;
a : integer;
Begin
Put := 'D:\-stas\del\fi1.txt';
assign(f, Put);
reset(f);
while not Eof(f) do
begin
readln(f, a);
if not odd(a)
then
writeln(a);
end;
close(f);
readln
End.

теперь хотелось бы внести не большие изменения
1) можно ли вместо Полного пути к файлу использовать путь из текущей деректории?
2) можно ли обрабатывать не только первые числа в строке, а все...
по идее должно быть как-то так..
...
while not Eof(f) do
begin
while not eoln do
begin
readln(f, a);
if not odd(a)
then
writeln(a);
end;
end;
...

но ведь загвостка, как я понимаю в том что межну числами числами может быть разное количество отступов(а приведенная программа их вообще не обрабатывает) , может надо читать из файла строку пока не будет разделителя, а потом преабразововать в число?
помогите пожалуйста...

Сообщение отредактировано: compiler -


--------------------
Спасибо!
Удачи!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов(1 - 8)
сообщение
Сообщение #2


Гость






Цитата
но ведь загвостка, как я понимаю в том что межну числами числами может быть разное количество отступов(а приведенная программа их вообще не обрабатывает)
А программа и не должна их обрабатывать... Это делает процедура Read... Если ты напишешь Read(f, a, b) и в файле f будут 2 числа, разделенные десятью пробелами, то они корректно прочитаются. Смотри (программа читает и печатает ВСЕ числа...):

var
f: text;
a: integer;

begin
assign(f, 'aa.txt'); reset(f);
while not seekeof(f) do begin
if seekeoln(f) then begin
readln(f); writeln;
end;
read(f, a); write(a:5);
end;
close(f);
end.


файл aa.txt лежит в той же папке, что и EXE, и содержит:
12      15
23 77 11
<пустая строка>
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Человек
*****

Группа: Пользователи
Сообщений: 1 050
Пол: Мужской
Реальное имя: Станислав

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


Спасибо... если б еще коментарии... например разницу между seekeof и Eof...


--------------------
Спасибо!
Удачи!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Гость






А разница - в том, что SeekEof (в отличии от Eof) видит конец файла "сквозь" все пробельные символы (пробелы, и табуляцию), и если от текущей позиции до конца файла остались только пробельные символы, то SeekEof вернет True (значащих для нее символов в файле больше нет), а Eof - вернет False, потому что хоть что-то еще можно прочесть.

Добавлено через 1 мин.
То же самое, кстати, справедливо и в отношении Eoln/SeekEoln, SeekEoln "не видит" пробельных символов...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Человек
*****

Группа: Пользователи
Сообщений: 1 050
Пол: Мужской
Реальное имя: Станислав

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


еще один вопрос...
а как переходить на деректорию(или несколько) вверх и проверять является ли текущая деректория корневой?

например если нам надо считать этот файл с корневого каталога текущего диска?


--------------------
Спасибо!
Удачи!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Гость






var s: string;

getdir(0, s); { <--- Вот это... }

... вернет тебе текущую папку диска.

Хотя мне кажется, ты заходишь не с той стороны. Не проще было бы определишь текущий диск, и в его корневой папке открывать файл с заданным именем?
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Человек
*****

Группа: Пользователи
Сообщений: 1 050
Пол: Мужской
Реальное имя: Станислав

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


Цитата(volvo @ 13.05.2007 16:29) *
Не проще было бы определишь текущий диск,

а если мы его не знаем?

и как создавать свою директорию?


--------------------
Спасибо!
Удачи!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Гость






Цитата
а если мы его не знаем?
тогда делаем GetDir с первым параметром = 0 (как я показал), и смотрим на первый символ строки s.

Цитата
и как создавать свою директорию?
procedure MkDir(s: string);
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9


Человек
*****

Группа: Пользователи
Сообщений: 1 050
Пол: Мужской
Реальное имя: Станислав

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


спасибо...


--------------------
Спасибо!
Удачи!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 





- Текстовая версия 29.03.2024 20:25
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name