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=recordName: string[10];
Age: tAge;
end;
var
q: tPerson;
f: fileof tPerson;
...
Assign(f,'spisok');
ReWrite(f);
...
write(f,q);
...
Close(f);
...
ReSet(f);
MinAge:=High(tAge);
whilenot EoF(f) dobegin
Read(f,q);
if q.Age<MinAge then MinAge:=q.Age;
end
ReSet(f);
WriteLn(MinAge);
whilenot EoF(f) dobegin
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);
whilenot eof(F) dobegin
readln(F, c.soname);
writeln(c.soname);
end;
readln(F);
whilenot eof(f) dowith c dobegin
readln(f, c.month);
if c.month=3then
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)
Пишет "Неверный числовой формат" не пойму почему...
Предельно ясно, почему . Ты открываешь файл заново и считываешь фамилию как число. Нужно все делать в одном цикле.
whilenot eof(F) dowith c dobegin
readln(F, soname, year, month);
if month=3then 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:stringend;
var F:text;
c:stud;
begin clrscr;
assign(F, 'example.txt');
reset(F);
whilenot eof(F) dowith c dobegin
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
Лень біьло регестрироваться. Вот, я здесь теперь. Совисть заиграла.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.