• Добро пожаловать на компьютерный форум Tehnari.ru. Здесь разбираемся с проблемами ПК и ноутбуков: Windows, драйверы, «железо», сборка и апгрейд, софт и безопасность. Форум работает много лет, сейчас он переехал на новый движок, но старые темы и аккаунты мы постарались сохранить максимально аккуратно.

    Форум не связан с магазинами и сервисами – мы ничего не продаём и не даём «рекламу под видом совета». Отвечают обычные участники и модераторы, которые следят за порядком и качеством подсказок.

    Если вы у нас впервые, загляните на страницу о форуме и правила – там коротко описано, как задать вопрос так, чтобы быстро получить ответ. Чтобы создавать темы и писать сообщения, сначала зарегистрируйтесь, а затем войдите под своим логином.

    Не знаете, с чего начать? Создайте тему с описанием проблемы – подскажем и при необходимости перенесём её в подходящий раздел.
    Задать вопрос Новые сообщения Как правильно спросить
    Если пришли по старой ссылке со старого Tehnari.ru – вы на нужном месте, просто продолжайте обсуждение.

БД на Паскале

Pascal(C)

Ученик
Регистрация
5 Мар 2018
Сообщения
2
Реакции
0
Баллы
0
БД на Паскале

Помогите с БД на паскале нужно сделать защиту от дурака,и сортировка и вывод информации на экран(база данных состоит из полей,поля:№Библиотеки,адрес библиотеки,телефон библиотеки,а так же должна быть сортировка и вывод информации на экран.)
 
Помогите исправить ошибку

Помогите исправить ошибку, в строке 75(встречено '.' а ожидалось ';'.)
Код:
1.Program BD;
uses crt;
  Procedure Zero;
var
  p_Baza: mas;
  const
  max = 15; 
  Procedure One;
  Procedure Two;
var
  N: Byte;
begin 
repeat
  Clrscr; 
  WriteLn('Меню');
  WriteLn('1. Добавление записи');
  WriteLn('2. Вывод записей на экран');
  WriteLn('3. Сортировка');
  WriteLn('4. Выход');
  Write('Введите номер пункта меню: ');
  ReadLn(N);
  case N of
    1: Zero;
    2: One;
    3: Two;
    else WriteLn('Вы ввели не правильный пункт меню');
  end;
until N = 4;
end;
type
mas=array[1..max] of baza; 
baza = record
  nomer_bibl: integer; 
  nazvanie: string[30]; 
  adress: string[50]; 
  telefon_bibl: integer;
procedure add;
begin
 i: byte;
for var i:= 1 to max do
  begin
    with p_Baza[i] do
      begin
        WriteLn('Заполняем ', i, ' запись');
        Write('Введите номер библиотеки: ');
        ReadLn(p_Baza[i].nomer_bibl);
        Write('Введите название библиотеки: ');
        ReadLn(p_Baza[i].nazvanie);
        Write('Введите адресс библиотеки: ');
        ReadLn(p_Baza[i].adress);
        Write('Введите телефон библиотеки: ');
        ReadLn(p_Baza[i].telefon_bibl);
      end;
  end;
end;
procedure outdisplay;
begin
   i: byte;
  for var i := 1 to max do
    begin
      with p_Baza[i] do
        begin
          WriteLn('Номер библиотеки: ', p_Baza[i].nomer_bibl);
          WriteLn('Название библиотеки: ', p_Baza[i].nazvanie);
          WriteLn('Адресс библиотеки: ', p_Baza[i].adress);
          WriteLn('Номер телефона библиотеки: ', p_Baza[i].telefon_bibl);
          WriteLn;
          end;
          end;
          begin
          add;
          outdisplay;
          end;
          end;
          75.end.
 

Вложения

М-да, просто феерическое нагромождение ошибок и неряшливостей! Ладно, вижу, пытаетесь сами программировать, что весьма отрадно. Поэтому попробуем (совместно с Вами) довести программу до ума. Мгновенно не обещаю.
Пока, для начала, замечу, что программа должна иметь определенную структуру: в общем случае (хотя возможны варианты) сначала следует ввести типы, потом константы, далее — переменные, затем описать процедуры и функции, и, наконец, написать тело программы. А у Вас — полный сумбур! Как можно сначала вводить переменные нового типа, а потом, где-то в середине кода, описывать сам тип? Какие-то куски процедур, где тело программы — непонятно, в общем — хаос!
Ну ничего, причешем.
 
Ну вот, как-то так:
Код:
Program BD;
uses CRT;

Const
 Max=15;

Type
 baza = record
         nomer_bibl: integer;
         nazvanie: string[30];
         adress: string[50];
         telefon_bibl: LongInt;
        end;
 mas=array[1..max] of baza;

Var
 p_Baza:mas;
 N,k:byte;
 f:file of baza;

Procedure Form_Base(var Nf:Byte);
var
 i:byte;
begin
 Assign(f,'Base');
 Rewrite(f);
 i:=0;
 repeat
  Inc(i);
  if i<=Max then
   begin
    with p_Baza[i] do
     begin
      Writeln;
      WriteLn('Заполняем ', i:2, ' запись');
      Write('Введите номер библиотеки ("0" для выхода): ');
      ReadLn(nomer_bibl);
      if nomer_bibl>0 then
       begin
        Write('Введите название библиотеки: ');
        ReadLn(nazvanie);
        Write('Введите адрес библиотеки: ');
        ReadLn(adress);
        Write('Введите телефон библиотеки: ');
        ReadLn(telefon_bibl);
       end;
     end;
    Write(f,p_Baza[i]);
   end;
 until (p_Baza[i].nomer_bibl=0) or (i=Max);
 if i=Max then Nf:=Max else Nf:=i-1;
 Close(f);
end;

Procedure Add_libr(var Na:byte);
var
 i:byte;
begin
 Assign(f,'Base');
 Reset(f);
 for i:=1 to Na do read(f,p_Baza[i]);
 Close(f);
 if Na<Max then
  begin
   with p_Baza[Na+1] do
    begin
     WriteLn('Заполняем ', (Na+1):2, ' запись');
     Write('Введите номер библиотеки: ');
     ReadLn(nomer_bibl);
     Write('Введите название библиотеки: ');
     ReadLn(nazvanie);
     Write('Введите адрес библиотеки: ');
     ReadLn(adress);
     Write('Введите телефон библиотеки: ');
     ReadLn(telefon_bibl);
     Inc(Na);
    end;
  end
  else
  begin
   writeln('Список библиотек переполнен!');
   Readln;
  end;
 Rewrite(f);
 for i:=1 to Na do Write(f,p_Baza[i]);
 Close(f);
end;

Procedure OutDisplay(Nd:byte);
var
 i:byte;
begin
 Assign(f,'Base');
 Reset(f);
 for i:=1 to Nd do read(f,p_Baza[i]);
 Close(f);
 for i:=1 to Nd do
  with p_Baza[i] do
   begin
    WriteLn('Номер библиотеки: ', nomer_bibl);
    WriteLn('Название библиотеки: ', nazvanie);
    WriteLn('Адрес библиотеки: ', adress);
    WriteLn('Номер телефона библиотеки: ', telefon_bibl);
    WriteLn;
   end;
 Readln;
end;

Procedure Sort;
 begin
 end;

Begin
 Repeat
  Clrscr;
  repeat
   WriteLn('Меню:');
   WriteLn('0. Составление списка библиотек');
   WriteLn('1. Добавление записи');
   WriteLn('2. Вывод записей на экран');
   WriteLn('3. Сортировка');
   WriteLn('4. Выход');
   Write('Введите номер пункта меню: ');
   ReadLn(k);
   if k>4 then writeln('Вы ввели неправильный пункт меню. Повторите ввод');
  until k<5;
  Case k of
   0: Form_Base(N);
   1: Add_libr(N);
   2: OutDisplay(N);
   3: Sort;
  end;
 Until k=4;
End.
Несколько замечаний.
1. Если у Вас Pascal ABC, то тип LongInt замените на Integer.
2. Поймите! Компьютер НЕ ПОНИМАЕТ и НЕ ПРИНИМАЕТ программ, сляпанных по принципу "как бэ так" и "что-то типо": каждый символ в коде должен быть продуман и выверен. И если, например, тип "запись" имеет синтаксис
Код:
Record Tralala;
 field1: ...
 field2: ...
 ...
End;
то отбрасывать "End" НЕЛЬЗЯ! Ну и куча ещё подобных неряшливостей. Одна из самых ярких: если Вы употребляете оператор "with", то в теле этого оператора указывать имя записи НЕ СЛЕДУЕТ, только имена полей. Имя записи подключается автоматически.
3. К сожалению, Вы не указали, какая именно сортировка требуется, поэтому соответствующая процедура оставлена пустой.
 
Назад
Сверху