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

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

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

 
 Ответить  Открыть новую тему 
> Задача по файлам 2.0
сообщение
Сообщение #1


Новичок
*

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

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


type Person = record Name : string [10]; age : 1..200 end; List = file of person; Процедура Youngest(var spisok : list) Вашей программы печатает Name для всех людей файла spisok , возраст которых равен минимальному. Перед списком печатается этот возраст.

=>Не подскажите, как создать и забить запись в файл. Создать то я понял как, а с файлом не очень...
=> И как потом считать эту запись с файла на проверку возраста?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гуру
*****

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

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


Цитата
забить запись в файл.

var
q: Person;
...
write(list,q);
...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Уникум
*******

Группа: Пользователи
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

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


Ozzя предельно немногословен.. smile.gif
type
tAge=1..200;
tPerson=record
Name: string[10];
Age: tAge;
end;

var
q: tPerson;
f: file of tPerson;
...
Assign(f,'spisok');
ReWrite(f);
...
write(f,q);
...
Close(f);
...
ReSet(f);
MinAge:=High(tAge);
while not EoF(f) do begin
Read(f,q);
if q.Age<MinAge then MinAge:=q.Age;
end
ReSet(f);
WriteLn(MinAge);
while not EoF(f) do begin
Read(f,q);
if q.Age=MinAge then WriteLn(q.Name);
end
...

[/quote]


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Новичок
*

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

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


спасибо, разобрался smile.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Гость






А можно с текстового файла в котром имена и даті, взять человека которій имеет определённую дату? тоисть надо взять даті и с ними работать. тхт файл уже есть. интересуєт возожно ли такое.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Гость






вот типа написал, но что-то не то...


uses crt;
const n=10;
type stud=record
soname:string[15];
year,month:integer
end;
var F:text; St: string[35];
c:stud;
begin clrscr;
assign(F, 'example.txt');
reset(F);
while not eof(F) do begin
readln(F, c.soname);
writeln(c.soname);
end;
readln(F);

while not eof(f) do
with c do
begin
readln(f, c.month);
if c.month=3 then
writeln(c.soname:10, c.year:6);
end;

writeln;
writeln('vivod s faila okon4en. to exit pres - Enter.');
readln;
end.

 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Уникум
*******

Группа: Пользователи
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

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


Цитата(Гость @ 3.01.2009 0:25) *
вот типа написал, но что-то не то...
Да, явно не то. Второй цикп даже не начнется, так как EoF уже достигнуто.

Можно, конечно. Но нужно знать, как устроен этот текстовый файл. Приведи пример.


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Гость






в задании про файл больше ничего не сказано, но я его делал так

Цитата

Yurko 81 1
Pavlo 82 2
Sergey 83 3
Sashko 84 4
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9


Гость






вобщем интересует часть віделенная жирнім. Пишет "Неверный числовой формат" не пойму почему... mega_chok.gif
Цитата

uses crt;
const n=10;
type stud=record
soname:string[15];
year,month:integer
end;
var F:text; St: string[35];
c:stud;
begin clrscr;
assign(F, 'example.txt');
reset(F);
while not eof(F) do begin
readln(F, c.soname);
writeln(c.soname);
end;
readln(F);
close(f);

assign(F, 'example.txt');
reset(F);
while not eof(f) do
begin
readln(f, c.month);
if c.month=3 then
writeln(c.soname:10, c.year:6);
end;


writeln;
writeln('vivod s faila okon4en. to exit pres - Enter.');
readln;
end.


 К началу страницы 
+ Ответить 
сообщение
Сообщение #10


Уникум
*******

Группа: Пользователи
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

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


Цитата(Гость @ 3.01.2009 1:37) *
Пишет "Неверный числовой формат" не пойму почему...
Предельно ясно, почему smile.gif. Ты открываешь файл заново и считываешь фамилию как число.
Нужно все делать в одном цикле.
while not eof(F) do with c do begin
readln(F, soname, year, month);
writeln(soname);
end;

А когда ищешь:
while not eof(F) do with c do begin
readln(F, soname, year, month);
if month=3 then writeln('Found: ', soname:10, year:6);
end;


М
Для программ используй теги CODE, а не цитаты.



PS
фамилия - это surname


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #11


Гость






YAHOOO !!!!! Всё заработало!!! Спасиба что показали мне мои ошибки.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #12


Гость






 
type stud=record
surname:string[15];
year,month,day:integer;
x:string
end;
var F:text;
c:stud;
begin clrscr;
assign(F, 'example.txt');
reset(F);
while not eof(F) do with c do begin
readln(F, surname, year, month, day, x);
writeln(surname, x);
end;
close(f);


Всё ж правильно, но последнюю переменную "х" не видит.
Или віьбивает ошибку 106 (не числовой формат), или просто не віьводит! Что не так? Подскажите пожалуйста...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #13


Уникум
*******

Группа: Пользователи
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

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


Цитата(Гость @ 7.01.2009 1:50) *
Всё ж правильно,
- увы, нет sad.gif.
Мой недогляд. Нельзя смешивать в одном списке оператора Read (ReadLn) строки и числа. Единственное исключение из этого правила - когда строковая переменная последняя. Если же строковая переменная стоит, скажем, первой, то в нее считывается вся строка из файла. И это естественно - пробел является разделителем чисел, но не строк. Строка должна заканчиваться концом строки (извини за тавтологию smile.gif).
Поэтому нужно:
1. переделать чтение - вместо одного чтения сделать два:
ReadLn(F, surname);
ReadLn(F, year, month, day, x);

2. переделать формат файла данных:
Иванов
1234 5 25 дворник
Петрова Дуня
2345 6 31 неплохо поет и танцует

Но на мой взгляд лучше все же переменную x тоже в отдельную строку вынести (добавив, соответственно, еще один ReadLn)

И это само по себе правильно и хорошо, так как исчезает проблема пробелов в строках - теперь можно в поле surname вводить несколько слов. Но если ты захочешь добавить, скажем, имя и отчество - снова развести их на разных строках и добавь ReadLn'ы.

Еще раз извиняюсь за дезу..


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #14


Гость






я в файле данніьх пробовал каждую переменную с новой строчки писать, и не получалось. Ладно, сейчас буду пробовать как тіь написал. Спасибо за подсказку. smile.gif



М
Лень загружаться или пароль забыл? Если не создает угрозу личной безопасности, то лучше все же заходить по-человечески. Уважай тех, кто с тобой говорит.
Lapp

 К началу страницы 
+ Ответить 
сообщение
Сообщение #15


Гость






Я всё понял. Всё получаеться теперь))) Ещё раз спасибо)
 К началу страницы 
+ Ответить 
сообщение
Сообщение #16





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

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


Лень біьло регестрироваться. Вот, я здесь теперь. Совисть заиграла.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 





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