type Person = record Name : string [10]; age : 1..200 end; List = file of person; Процедура Youngest(var spisok : list) Вашей программы печатает Name для всех людей файла spisok , возраст которых равен минимальному. Перед списком печатается этот возраст.
=>Не подскажите, как создать и забить запись в файл. Создать то я понял как, а с файлом не очень... => И как потом считать эту запись с файла на проверку возраста?
Ozzя
26.12.2008 11:50
Цитата
забить запись в файл.
var q: Person; ... write(list,q); ...
Lapp
26.12.2008 12:40
Ozzя предельно немногословен..
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]
Eskel
26.12.2008 23:47
спасибо, разобрался
Гость
3.01.2009 4:21
А можно с текстового файла в котром имена и даті, взять человека которій имеет определённую дату? тоисть надо взять даті и с ними работать. тхт файл уже есть. интересуєт возожно ли такое.
Гость
3.01.2009 4:25
вот типа написал, но что-то не то...
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.
Lapp
3.01.2009 5:04
Цитата(Гость @ 3.01.2009 0:25)
вот типа написал, но что-то не то...
Да, явно не то. Второй цикп даже не начнется, так как EoF уже достигнуто.
Можно, конечно. Но нужно знать, как устроен этот текстовый файл. Приведи пример.
Гость
3.01.2009 5:27
в задании про файл больше ничего не сказано, но я его делал так
Цитата
Yurko 81 1 Pavlo 82 2 Sergey 83 3 Sashko 84 4
Гость
3.01.2009 5:37
вобщем интересует часть віделенная жирнім. Пишет "Неверный числовой формат" не пойму почему...
Цитата
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.
Lapp
3.01.2009 5:54
Цитата(Гость @ 3.01.2009 1:37)
Пишет "Неверный числовой формат" не пойму почему...
Предельно ясно, почему . Ты открываешь файл заново и считываешь фамилию как число. Нужно все делать в одном цикле.
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
Гость
3.01.2009 17:39
YAHOOO !!!!! Всё заработало!!! Спасиба что показали мне мои ошибки.
Гость
7.01.2009 5:50
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 (не числовой формат), или просто не віьводит! Что не так? Подскажите пожалуйста...
Lapp
7.01.2009 7:44
Цитата(Гость @ 7.01.2009 1:50)
Всё ж правильно,
- увы, нет . Мой недогляд. Нельзя смешивать в одном списке оператора Read (ReadLn) строки и числа. Единственное исключение из этого правила - когда строковая переменная последняя. Если же строковая переменная стоит, скажем, первой, то в нее считывается вся строка из файла. И это естественно - пробел является разделителем чисел, но не строк. Строка должна заканчиваться концом строки (извини за тавтологию ). Поэтому нужно: 1. переделать чтение - вместо одного чтения сделать два:
Иванов 1234 5 25 дворник Петрова Дуня 2345 6 31 неплохо поет и танцует
Но на мой взгляд лучше все же переменную x тоже в отдельную строку вынести (добавив, соответственно, еще один ReadLn)
И это само по себе правильно и хорошо, так как исчезает проблема пробелов в строках - теперь можно в поле surname вводить несколько слов. Но если ты захочешь добавить, скажем, имя и отчество - снова развести их на разных строках и добавь ReadLn'ы.
Еще раз извиняюсь за дезу..
Гость
7.01.2009 7:52
я в файле данніьх пробовал каждую переменную с новой строчки писать, и не получалось. Ладно, сейчас буду пробовать как тіь написал. Спасибо за подсказку.
М
Лень загружаться или пароль забыл? Если не создает угрозу личной безопасности, то лучше все же заходить по-человечески. Уважай тех, кто с тобой говорит. Lapp
Гость
7.01.2009 8:09
Я всё понял. Всё получаеться теперь))) Ещё раз спасибо)
Юрко
7.01.2009 8:18
Лень біьло регестрироваться. Вот, я здесь теперь. Совисть заиграла.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.