05.03.2018, 18:05 | #1 (permalink) |
Новичок
Регистрация: 05.03.2018
Сообщений: 2
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
БД на Паскале
|
05.03.2018, 18:05 | |
Helpmaster
Member
Регистрация: 08.03.2016
Сообщений: 0
|
Эти темы схожи с вашей и я рекомендую прочитать их Программа на Паскале На Паскале Программа на Паскале Массивы на Паскале Программа в Паскале ABC |
05.03.2018, 18:37 | #2 (permalink) |
Новичок
Регистрация: 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. |
05.03.2018, 19:34 | #3 (permalink) |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
М-да, просто феерическое нагромождение ошибок и неряшливостей! Ладно, вижу, пытаетесь сами программировать, что весьма отрадно. Поэтому попробуем (совместно с Вами) довести программу до ума. Мгновенно не обещаю.
Пока, для начала, замечу, что программа должна иметь определенную структуру: в общем случае (хотя возможны варианты) сначала следует ввести типы, потом константы, далее — переменные, затем описать процедуры и функции, и, наконец, написать тело программы. А у Вас — полный сумбур! Как можно сначала вводить переменные нового типа, а потом, где-то в середине кода, описывать сам тип? Какие-то куски процедур, где тело программы — непонятно, в общем — хаос! Ну ничего, причешем. |
06.03.2018, 09:52 | #4 (permalink) |
Специалист
Регистрация: 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; 3. К сожалению, Вы не указали, какая именно сортировка требуется, поэтому соответствующая процедура оставлена пустой. |
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
|
|