![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
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 Пол: Мужской Реальное имя: Юрко Репутация: ![]() ![]() ![]() |
Лень біьло регестрироваться. Вот, я здесь теперь. Совисть заиграла.
|
![]() ![]() |
![]() |
Текстовая версия | 19.07.2025 4:42 |