![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() |
Natalia |
![]() ![]()
Сообщение
#1
|
Новичок ![]() Группа: Пользователи Сообщений: 24 Пол: Женский Репутация: ![]() ![]() ![]() |
Доброго времени суток! Помогите разобраться с задачей. Всё, что поняла, реализовала в программе.
Задача такая: Составьте программу, реализующую телефонную книгу. Каждая запись в книге включает фамилию, инициалы и три телефона (один домашний и два рабочих). Программа должна обеспечивать ввод и сохранение записей, вывод телефонов по введённой фамилии, а также вывод всех фамилий с указанием инициалов по введённому телефонному номеру. Но у меня не выходит. ![]() Код program Telefonnaya_kniga; uses crt; const n=10; type book=record first_name:string[20]; inis:string[5]; telrab1:shortInt; telrab2:shortint; teldom:shortint; end; Tel_Book=array[1..n] of book; Ffile=file of Tel_Book; {файл для хранения базы} var f:Ffile; b:Tel_Book; t,k,tel:shortint; i:byte; s:string; begin assign(f,'tel_book.txt'); writeln('Ввод данных-0; поиск-1; сохранение-2; возврат в меню-".."'); readln(t); if t=0 then begin append(f); writeln('Ввод данных в телефонную книгу:'); while t<>'..' do with b[i] do begin write('Фамилия: '); readln(first_name); write('Инициалы: '); readln(inis); writeln('Домашний телефон: '); readln(teldom); writeln('Рабочий телефон 1: '); readln(telrab1); writeln('Рабочий телефон 2: '); readln(telrab2); writeln; end; write(f,b); close(f); end; if t=1 then begin reset(f); while k<>'..' do writeln('Поиск:') writeln('по фамилии-0'); writeln('по телефону-1'); readln(k); if k=0 then begin writeln('Введите фамилию'); readln(s); for i:=1 to n do if s=b.first_name then writeln(b.first_name,b.inis,b.teldom,b.telrab1,b,telrab2); end; end; if k=1 then begin writeln('Введите телефон'); readln(tel); for i:=1 to n do if tel=b.teldom then writeln(b.first_name,b.inis,b.teldom,b.telrab1,b,telrab2); if tel=b.telrab1 then writeln(b.first_name,b.inis,b.teldom,b.telrab1,b,telrab2); if tel=b.telrab2 then writeln(b.first_name,b.inis,b.teldom,b.telrab1,b,telrab2); end; end; close(f); end; readln; end. И ещё вопрос: какой функцией воспользоваться, чтобы определить количество байтов, записанных в файл? FileSize - мне не помог. Нужна ли тут процедура FilePos? |
![]() ![]() |
мисс_граффити |
![]()
Сообщение
#2
|
![]() просто человек ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 3 641 Пол: Женский Реальное имя: Юлия Репутация: ![]() ![]() ![]() |
а почему у тебя вложенные циклы по одной переменной?
так нельзя -------------------- Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения! |
Natalia |
![]()
Сообщение
#3
|
Новичок ![]() Группа: Пользователи Сообщений: 24 Пол: Женский Репутация: ![]() ![]() ![]() |
а почему у тебя вложенные циклы по одной переменной? так нельзя Пока не знаю, как сделать по-другому. И не могу уже думать... У меня так: пока не равно трём идёт цикл, в котором при t=0 - ввод данных, а при t=1 идёт поиск (поиск по двум критериям - фамилии и телефонам). Если же t=3, то переход должен быть в начало выбора: ввода или поиска. Знаю, что там напортачила, но пока не соображу, как переделать. |
![]() ![]() |
![]() |
Текстовая версия | 20.07.2025 23:06 |