Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Delphi, Kylix and Pascal


Ответ
 
Опции темы Опции просмотра
Старый 05.03.2018, 18:05   #1 (permalink)
Pascal(C)
Новичок
 
Регистрация: 05.03.2018
Сообщений: 2
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию БД на Паскале

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

Старый 05.03.2018, 18:05
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

Эти темы схожи с вашей и я рекомендую прочитать их

Программа на Паскале
На Паскале
Программа на Паскале
Массивы на Паскале
Программа в Паскале ABC

Старый 05.03.2018, 18:37   #2 (permalink)
Pascal(C)
Новичок
 
Регистрация: 05.03.2018
Сообщений: 2
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию Помогите исправить ошибку

Помогите исправить ошибку, в строке 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.
Вложения
Тип файла: txt ошибка end.txt (1.7 Кб, 862 просмотров)
Pascal(C) вне форума   Ответить с цитированием
Старый 05.03.2018, 19:34   #3 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

М-да, просто феерическое нагромождение ошибок и неряшливостей! Ладно, вижу, пытаетесь сами программировать, что весьма отрадно. Поэтому попробуем (совместно с Вами) довести программу до ума. Мгновенно не обещаю.
Пока, для начала, замечу, что программа должна иметь определенную структуру: в общем случае (хотя возможны варианты) сначала следует ввести типы, потом константы, далее — переменные, затем описать процедуры и функции, и, наконец, написать тело программы. А у Вас — полный сумбур! Как можно сначала вводить переменные нового типа, а потом, где-то в середине кода, описывать сам тип? Какие-то куски процедур, где тело программы — непонятно, в общем — хаос!
Ну ничего, причешем.
Vladimir_S вне форума   Ответить с цитированием
Старый 06.03.2018, 09:52   #4 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Ну вот, как-то так:
Код:
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. К сожалению, Вы не указали, какая именно сортировка требуется, поэтому соответствующая процедура оставлена пустой.
Vladimir_S вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




Часовой пояс GMT +4, время: 12:54.

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.