Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.05.2009, 19:43   #1
Татяна
Пользователь
 
Аватар для Татяна
 
Регистрация: 06.04.2009
Сообщений: 27
По умолчанию Как исправить процедуры 2 и 3, так чтобы все заработало наконец...!

Вот сам задача:Программа управения однотабличной базой данных.Информация храниться в массиве записей.Запись должна содержать ка минимум 3 поля различных типов, в чт строковы, целый и вещественный.Хранение информации осуществляеться в типизированном файле на диске (н в моем случае файл атоматический все сохраняет в моей директории).
1.Запись.считывание базы данных в\из файла.
2.Просмотр содержимого базы данных (с порядковой нумерацией записей при выводе на экран).
3.Добавление новой записи данных.
4.Уничтожение выбранно по номеру записи данных.
Сортировка базы данных по выбранному полю.
7.Поиск записей в базе по выбранному полю.


Прога большая получилась нг по сути там мног лишнего, но все нпомоги понять где ошибка.
Татьяна
Татяна вне форума Ответить с цитированием
Старый 27.05.2009, 19:44   #2
Татяна
Пользователь
 
Аватар для Татяна
 
Регистрация: 06.04.2009
Сообщений: 27
По умолчанию

Uses crt;
Type

school = record
sername : string[10];
class : integer;
smark : real;

end;
var
m : array [1..100] of school;
key, dkey, skey : char;
i,k,f,d,p2,v,x,n,R,T,Z : integer;
p3 : real;
p1 : string;
p : text;
code : integer;


function proverka(min , max : integer ):integer;
var
class : string;
i : integer;
begin
min:=1;
max:=11;
i:=0;

repeat
writeln (' ');
readln (class);

val (class,R, code);
if (code >0) then writeln ('введено не число') else
if ((R < min) or (R > max)) then begin
writeln ('вы ввели число из не подходящего диапозона');
code := 1;

end;
i:=i+1;
if i>3 then begin
code:=0;
R:=min;
end;
proverka:=R;

until (code = 0)
end; { proverka }


function proverka2(min , max : integer ):integer;
var
smark : string;
i : integer;
begin
min:=1;
max:=5;
i:=0;

repeat
writeln (' ');
readln (smark);

val (smark,T, code);
if (code >0) then writeln ('введено не число') else
if ((T < min) or (T > max)) then begin
writeln ('вы ввели число из не подходящего диапозона');
code := 1;

end;
i:=i+1;
if i>3 then begin
code:=0;
T:=min;
end;
proverka2:=T;

until (code = 0)
end; { proverka2 }



function proverka3(min , max : integer ):integer;
var
k : string;
i : integer;
begin

i:=0;

repeat
writeln (' ');
readln (k);

val (k,Z, code);
if (code >0) then writeln ('введено не число') else
if ((Z < min) or (Z > max)) then begin
writeln ('вы ввели число из не подходящего диапозона');
code := 1;

end;
i:=i+1;
if i>3 then begin
code:=0;
Z:=min;
end;
proverka3:=Z;

until (code = 0)
end;

procedure d1;



begin
{clrscr;}
assign (p, '1.txt');
rewrite(p);
writeln(p, k);
FOR i:=1 TO k DO
begin
writeln(p, m[i].sername);
writeln(p, m[i].class);

writeln(p, m[i].smark);
end;

end;

procedure d2;
var ppt : file of string;
k : string;
begin
writeln('===1');
{clrscr;}
assign(ppt,'1.txt');
writeln('===2');
reset(ppt);
writeln('===3');
//read(ppt, k);
while (not eof(ppt)) do begin
//writeln('===4');
{for i:=1 to k do begin}
read(ppt, k);
writeln (k);

writeln(i,'.');
readln(ppt, m[i].sername);
writeln('SName: ',m[i].sername);
readln(ppt, m[i].class);
writeln('Class: ', m[i].class);
readln(ppt, m[i].smark);
writeln('Smark: ', m[i].smark:4:2);
writeln;

end;
close (ppt);
end;

{procedure d3;
begin
clrscr;

i:=k+1;
k:=k+1;
write('Input sername: ');
readln(m[i].sername);
write('Input class: ');

readln(m[i].class);

write('Input smark: ');
readln(m[i].smark);
writeln;
end;}

procedure d33;
var ppt : file of string;
k : string;
begin
assign(ppt,'1.txt');
rewrite(ppt);


write('Input sername: ');
readln(k);
write(ppt, k);

write('Input class: ');
readln(k);
write(ppt, k);

write('Input smark: ');
readln(k);
write(ppt, k);

end;


продолжение...
Татьяна
Татяна вне форума Ответить с цитированием
Старый 27.05.2009, 19:44   #3
Татяна
Пользователь
 
Аватар для Татяна
 
Регистрация: 06.04.2009
Сообщений: 27
По умолчанию

procedure d4;

begin
x:=1;
n:=1;


for i:=1 to n do begin
if (i=x) then writeln ('Deleted');
if (i>x) then m[i-1]:=m[i];
end;
end;

procedure d5;
begin
{clrscr;}
write('Nomer pupil: ');
readln(d);
writeln('What do you want to change? ');
writeln('1. Change sername');
writeln('2. Change class ');
writeln('3. Change smark ');
dkey:=readkey;

FOR i:=1 TO k DO begin
if i=d then
case dkey of
'1': begin
write('Change sername: ');
readln(m[i].sername);
end;
'2': begin
write('Change class: ');
readln(m[i].class);
end;
'3': begin
write('Change smark: ');
readln(m[i].smark);
end;
end;
end;
end;

procedure d6;
begin
{clrscr;}
writeln('How sorting information? ');
writeln('1. sername');
writeln('2. class ');
writeln('3. smark ');
skey:=readkey;

case skey of
'1': begin
f:=0;
{clrscr;}
write('Enter sername: ');
readln(p1);
writeln('Class ','Smark');
FOR i:=1 TO k DO
begin
if m[i].sername=p1 then
begin
GOTOXY(1,3+f);
write(m[i].class);
GOTOXY(7,3+f);
write(m[i].smark:4:2);
inc(f);
writeln;
end
end;
end;
'2': begin
f:=0;
{clrscr;}
write('Enter class: ');
readln(p2);
writeln('Sername ','Smark');
FOR i:=1 TO k DO
begin
if m[i].class=p2 then
begin
GOTOXY(1,3+f);
write(m[i].sername);
GOTOXY(12,3+f);
write(m[i].smark:4:2);
inc(f);
writeln;
end
end;
end;
'3': begin
f:=0;
{clrscr;}
write('Enter smark: ');
readln(p3);
writeln('Sername ','Class ');
FOR i:=1 TO k DO
begin
if m[i].smark=p3 then
begin
GOTOXY(1,3+f);
write(m[i].sername);
GOTOXY(12,3+f);
write(m[i].class);
inc(f);
writeln;
end
end;
end;
end;



end;
procedure d7;
begin
{clrscr;}
write('Nomber of pupil: ');
readln(v);
FOR i:=1 TO k DO
begin
if i=v then
begin
writeln('SName: ',m[i].sername);
writeln('Class: ', m[i].class);
writeln('Smark: ', m[i].smark:4:2);
writeln;
end;
end;
end;

BEGIN
{clrscr;}
f:=0;
write('Input number of puple: ');
K:=proverka3 (0, 10);



readln(k);
d33;
d2;
FOR i:=1 TO k DO
begin
writeln('Input sername: ');

readln(m[i].sername);
writeln('Input class: ');
m[i].class := proverka (0, 11);
//readln(m[i].class)
writeln('Input smark: ');
m[i].smark := proverka2 (0, 5);
//readln(m[i].smark);
writeln;

end;

i:=0;
repeat
writeln('What do you want to do?');
writeln('1. Write in fail ');
writeln('2. Read from fail ');
writeln('33. Add information ');
writeln('4. Delete information ');
writeln('5. Change information ');
writeln('6. Sorting information ');
writeln('7. Search record ');
writeln('8. Exit ');
key:=readkey;
case key of
'1' : d1;
'2' : d2;
'33' : d33;
'4' : d4;
'5' : d5;
'6' : d6;
'7' : d7;
end; { case }

until key='8';
END.
Татьяна
Татяна вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как скомпилировать программу так, чтобы "все было включено" grenles Общие вопросы Delphi 4 31.07.2008 17:05
КАК СДЕЛАТЬ ТАК ЧТОБЫ ВСЕ КОМПОНЕНТЫ КОТ. НА ФОРМЕ РАСТЯГИВАЛИСЬ НА ВСЁ ОКНО ПРИ РАЗВЁОТЫВАНИЕ ОКНА???? Alexij Общие вопросы Delphi 4 23.06.2008 10:44
Кто мне подскажет как сделать так чтобы... Alexij Общие вопросы Delphi 9 16.06.2008 12:47
Помогите исправить прогу так чтобы препода удовлетворяла))) 812 Помощь студентам 3 25.05.2008 12:34