IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

2 страниц V < 1 2  
 Ответить  Открыть новую тему 
> Телефонная книга. Исправить ошибки, Ввод,поиск,сохранение записей.
сообщение
Сообщение #21


Новичок
*

Группа: Пользователи
Сообщений: 24
Пол: Женский

Репутация: -  0  +


Здравствуйте.
Вот новая редакция программы)) Всё, вроде, работает, только одного понять не могу, почему после того, как ввожу данные, в поиске программа их не находит? Подскажите, пожалуйста, что нужно сделать, чтобы программа не вылетала, а корректно просила ещё раз ввести данные, если, к примеру, вместо фамилии ввести телефон и т. п. И ещё: как всё-таки определить количество байт в файле, если тип данных файла неизвестен (Надо делать с модулем crt)? Просто не знаю, что и предположить...
program Telefonnaya_kniga;
uses crt;
type
       book=record
             first_name:string[20];
             inis:string[5];
             telrab1:shortInt;
             telrab2:shortint;
             teldom:shortint;
            end;
       Ffile=file of book; {файл для хранения базы}
var f:Ffile;
    b:book;
    t,k,tel:shortint;
    n,i:integer;
    s:string[20];
    proverka:boolean;
    label menu;
 begin
  assign(f,'tel_book.txt');
  reset(f);
  menu: writeln('Ввод данных-0; поиск-1; выход-2');
  readln(t);
  if t=2 then
   begin
    close(f);
    halt;
   end;
  if t=0 then
   begin
    writeln('Ввод данных в телефонную книгу');
     writeln('Сколько вводить фамилий?');
     readln(n);
   for i:=1 to n do
     begin
      with b do
       begin
        write('Фамилия: ');
        readln(first_name);
        write('Инициалы: ');
        readln(inis);
        writeln('Домашний телефон: ');
        readln(teldom);
        writeln('Рабочий телефон 1: ');
        readln(telrab1);
        writeln('Рабочий телефон 2: ');
        readln(telrab2);
        writeln;
        n:=n-1;
       end;
      goto menu;
    end;
   end;
  if t=1 then
   begin
    writeln('Поиск:');
    writeln('по фамилии-0; по телефону-1; возврат в главное меню-2; выход-3');
    readln(k);
     if k=2 then goto menu;
     if k=3 then halt;
     if k=0 then
      begin
       writeln('Введите фамилию');
       readln(s);
        with b do
         begin
         proverka:=false;
          while not(eof(f)) do
           begin
            if s=first_name then
             begin
              writeln(first_name,inis,teldom,telrab1,telrab2);
              proverka:=true;
             end;
           end;
           if eof(f) and proverka=false then writeln('Такой фамилии нет');
         end;
        goto menu;
       end;
      if k=1 then
       begin
        writeln('Введите телефон');
        readln(tel);
        proverka:=false;
         with b do
          begin
           while not(eof(f)) do
             begin
              if tel=teldom then
               begin
                writeln(first_name,inis,teldom,telrab1,telrab2);
                proverka:=true;
               end;
              if tel=telrab1 then
               begin
                writeln(first_name,inis,teldom,telrab1,telrab2);
                proverka:=true;
               end;
              if tel=telrab2 then
               begin
                writeln(first_name,inis,teldom,telrab1,telrab2);
                proverka:=true;
               end;
             end;
          end;
        if eof(f) and proverka=false then writeln('Такого телефона нет');
        goto menu;
       end;
    end;
  close(f);
  readln;
  end.





Сообщение отредактировано: Natalia -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #22


Гость






Цитата
почему после того, как ввожу данные, в поиске программа их не находит?
Во-первых, ты ничего в файл не записываешь... Почему?

Во вторых - ты если пользуешься GoTo (я бы это не рекомендовал, конечно) то пользуйся им правильно:

if t=0 then begin
  writeln('Ввод данных в телефонную книгу');
  writeln('Сколько вводить фамилий?');
  readln(n);
  for i:=1 to n do begin
    with b do begin
      write('Фамилия: '); readln(first_name);
      write('Инициалы: '); readln(inis);
      writeln('Домашний телефон: '); readln(teldom);
      writeln('Рабочий телефон 1: '); readln(telrab1);
      writeln('Рабочий телефон 2: '); readln(telrab2);
      writeln;
      n:=n-1;
    end;
    goto menu; { <--- Ты ДОСРОЧНО выходишь из цикла }
  end;
end;
, но этого не видишь из-за форматирования... Теперь понятно, почему всегда просят упорядочить исходники, перед выкладыванием на форум?
 К началу страницы 
+ Ответить 
сообщение
Сообщение #23


Новичок
*

Группа: Пользователи
Сообщений: 24
Пол: Женский

Репутация: -  0  +


Цитата(volvo @ 23.12.2006 1:00) *

Во-первых, ты ничего в файл не записываешь... Почему?

Во вторых - ты если пользуешься GoTo (я бы это не рекомендовал, конечно) то пользуйся им правильно:

if t=0 then begin
  writeln('Ввод данных в телефонную книгу');
  writeln('Сколько вводить фамилий?');
  readln(n);
  for i:=1 to n do begin
    with b do begin
      write('Фамилия: '); readln(first_name);
      write('Инициалы: '); readln(inis);
      writeln('Домашний телефон: '); readln(teldom);
      writeln('Рабочий телефон 1: '); readln(telrab1);
      writeln('Рабочий телефон 2: '); readln(telrab2);
      writeln;
      n:=n-1;
    end;
    goto menu; { <--- Ты ДОСРОЧНО выходишь из цикла }
  end;
end;
, но этого не видишь из-за форматирования... Теперь понятно, почему всегда просят упорядочить исходники, перед выкладыванием на форум?


Да, всё это я уже заметила и поправила, просто забыла внести поправку на форуме). Теперь другая проблема: прога не хочет преобразовывать тип string (first_name) в тип record. Пока не могу понять причину. Ведь вначале стоит with b... Пытаюсь исправить))
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

2 страниц V < 1 2
 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 22.04.2025 14:28
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name