![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() ![]() |
![]() |
Eskel |
![]()
Сообщение
#1
|
Новичок ![]() Группа: Пользователи Сообщений: 26 Пол: Мужской Реальное имя: Илья Репутация: ![]() ![]() ![]() |
type Person = record Name : string [10]; age : 1..200 end; List = file of person; Процедура Youngest(var spisok : list) Вашей программы печатает Name для всех людей файла spisok , возраст которых равен минимальному. Перед списком печатается этот возраст.
=>Не подскажите, как создать и забить запись в файл. Создать то я понял как, а с файлом не очень... => И как потом считать эту запись с файла на проверку возраста? |
Ozzя |
![]()
Сообщение
#2
|
![]() Гуру ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 220 Пол: Мужской Репутация: ![]() ![]() ![]() |
Цитата забить запись в файл. var q: Person; ... write(list,q); ... |
Lapp |
![]()
Сообщение
#3
|
![]() Уникум ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: ![]() ![]() ![]() |
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 |
![]()
Сообщение
#4
|
Новичок ![]() Группа: Пользователи Сообщений: 26 Пол: Мужской Реальное имя: Илья Репутация: ![]() ![]() ![]() |
спасибо, разобрался
![]() |
Гость |
![]()
Сообщение
#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.
|
Lapp |
![]()
Сообщение
#7
|
![]() Уникум ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: ![]() ![]() ![]() |
вот типа написал, но что-то не то... Да, явно не то. Второй цикп даже не начнется, так как EoF уже достигнуто.Можно, конечно. Но нужно знать, как устроен этот текстовый файл. Приведи пример. -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
Гость |
![]()
Сообщение
#8
|
Гость ![]() |
в задании про файл больше ничего не сказано, но я его делал так
Цитата Yurko 81 1 Pavlo 82 2 Sergey 83 3 Sashko 84 4 |
Гость |
![]()
Сообщение
#9
|
Гость ![]() |
вобщем интересует часть віделенная жирнім. Пишет "Неверный числовой формат" не пойму почему...
![]() Цитата 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 |
![]()
Сообщение
#10
|
|||
![]() Уникум ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: ![]() ![]() ![]() |
Пишет "Неверный числовой формат" не пойму почему... Предельно ясно, почему ![]() Нужно все делать в одном цикле. 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;
PS фамилия - это surname -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
|||
Гость |
![]()
Сообщение
#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 (не числовой формат), или просто не віьводит! Что не так? Подскажите пожалуйста... |
Lapp |
![]()
Сообщение
#13
|
![]() Уникум ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: ![]() ![]() ![]() |
Всё ж правильно, - увы, нет ![]() Мой недогляд. Нельзя смешивать в одном списке оператора Read (ReadLn) строки и числа. Единственное исключение из этого правила - когда строковая переменная последняя. Если же строковая переменная стоит, скажем, первой, то в нее считывается вся строка из файла. И это естественно - пробел является разделителем чисел, но не строк. Строка должна заканчиваться концом строки (извини за тавтологию ![]() Поэтому нужно: 1. переделать чтение - вместо одного чтения сделать два: ReadLn(F, surname);
ReadLn(F, year, month, day, x);
2. переделать формат файла данных: Иванов
1234 5 25 дворник
Петрова Дуня
2345 6 31 неплохо поет и танцует
Но на мой взгляд лучше все же переменную x тоже в отдельную строку вынести (добавив, соответственно, еще один ReadLn) И это само по себе правильно и хорошо, так как исчезает проблема пробелов в строках - теперь можно в поле surname вводить несколько слов. Но если ты захочешь добавить, скажем, имя и отчество - снова развести их на разных строках и добавь ReadLn'ы. Еще раз извиняюсь за дезу.. -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
Гость |
![]()
Сообщение
#14
|
|||
Гость ![]() |
я в файле данніьх пробовал каждую переменную с новой строчки писать, и не получалось. Ладно, сейчас буду пробовать как тіь написал. Спасибо за подсказку.
![]()
|
|||
Гость |
![]()
Сообщение
#15
|
Гость ![]() |
Я всё понял. Всё получаеться теперь))) Ещё раз спасибо)
|
Юрко |
![]() ![]()
Сообщение
#16
|
![]() Группа: Пользователи Сообщений: 4 Пол: Мужской Реальное имя: Юрко Репутация: ![]() ![]() ![]() |
Лень біьло регестрироваться. Вот, я здесь теперь. Совисть заиграла.
|
![]() ![]() |
![]() |
Текстовая версия | 16.04.2025 15:38 |