Program XXXXXXX;
Uses CRT;
Type
Tdata = record
fa : string[10];
v : word;
ind,k : word;
cp,cy : word;
end;
datfile = file of Tdata;
Var r: Tdata;
f: datfile;
q,k: byte;
{=========================================}
procedure color(s,p:byte); {óñòàíàâëèâàåì öâåò äëÿ çàäíåãî\ïåðåäíåãî ôîíà}
begin
if s=p then
begin
TextBackGround(white);
TextColor(black);
end
else
begin
TextBackGround(black);
TextColor(white);
end;
end;
{=========================================}
procedure InpDate; {Ââîäèì â áàçó äàííûõ}
begin
write('Ôàìèëèÿ: ');
readln(r.fa);
write('Èíäåêñ äîõîäîâ (í-1,ñ-2,âñ-3): ');
readln(r.ind);
write('Âîçðàñò: ');
readln(r.v);
write('Ñåìåéíîå ïîëîæåíèå (0-1): ');
readln(r.cp);
write('Êóðñ îáó÷åíèÿ (1-4): ');
readln(r.cy);
end;
{=========================================}
Procedure OutDate; {Ââûâîä äàííûõ}
begin
gotoxy(2,whereY);
write(r.fa); {Ôàìèëèÿ}
gotoxy(10,whereY);
write('|',r.ind); {Èíäåêñ äîõîäà}
gotoxy(26,whereY);
write('|',r.v); {Âîçðàñò}
gotoxy(36,whereY);
write('|',r.cp); {Ñåìåéíîå ïîëæåíèå}
gotoxy(57,whereY);
writeln('|',r.cy); {êóðñ îáó÷åíèÿ}
end;
{=========================================}
procedure add; {Äàáàâëåíèå äàííûõ}
var c:char;
begin
clrscr;
assign(f,'dates.db');
reset(f);
seek(f,filesize(f));
repeat
InpDate;
write(f,r);
writeln;
write('Äîáàâèòü åùå çàïèñü (Yes/No)? ');
readln(c);
writeln;
until (c='N') or (c='n');
close(f);
end;
{========================================= }
procedure create; {Ñîçäàíèå ñ 0 äàííûõ}
var c:char;
begin
clrscr;
write('Âñå äàííûå î ñòóäåíòàõ áóäóò óíè÷òîæåíû. Ïðîäîëæèòü (Y/N)? ');
readln(c);
if (c='Y') or (c='y') then
begin
assign(f,'dates.db');
rewrite(f);
close(f);
clrscr;
writeln('Äàííûå óñïåøíî îòôàðìàòèðîâàíû');
end else halt;
end;
{=========================================}
procedure write_title; {Çàãîëîâî÷íîå ìåíþ}
var i:byte;
begin
gotoxy(2,1);
write('Ôàìèëèÿ');
gotoxy(10,1);
write('| Èíäåêñ äîõîäà');
gotoxy(26,1);
write('| Âîçðàñò');
gotoxy(36,1);
write('| Ñåìåéíîå ïîëîæåíèå |');
gotoxy(59,1);
writeln('Êóðñ îáó÷åíèÿ ');
for i:=1 to 80 do write('-');
end;
{=========================================}
{procedure vivods;
var i:byte;
begin
assign(f,'dates.db');
reset(f);
write_title;
while not eof(f) do
begin
read(f,r);
if (ind <> 3) and (v >= 30) and (cp = 1) and (cy >= 3) then вот тут само
write(ind,v,cp,cy); условие
end; }
{=========================================}
procedure print; {Âûâîä â òàáëèöó}
var i:byte;
begin
assign(f,'dates.db');
reset(f);
clrscr;
write_title;
while not eof(f) do
begin
read(f,r);
OutDate;
end;
for i:=1 to 80 do write('-');
readkey;
close(f);
end;
{=========================================}
procedure run;
begin
case q of
1: create;
2: add;
3: print;
4: halt;
end;
end;
{=========================================}
Begin
q:=1;
Repeat
GotoXY (20,4);
clrscr;
GotoXY (20,4);
write (' -==ÁàÇà ÄàííÛõ ÏÅÍÒÀÃÎÍÀ==- ');
GotoXY (20,5);
write (' ***ÇÀÑÅÊÐÅ×ÅÍÎ*** ');
color(1,q);
gotoxy(23,10);
Write(' Ôîðìàòèðîâàíèå ÁÄ ');
color(2,q);
gotoxy(23,11);
Write(' Äîáàâëåíèå äàííûõ â ÁÄ ');
color(3,q);
gotoxy(23,12);
Write(' Âûâîä Áàçû Äàííûõ ');
color(4,q);
gotoxy(23,13);
Write(' Âûõîä ');
color(1,2);
gotoxy(1,25);
write(q);
k:=ord(readkey);
{if k=0 then k:=ord(readkey); }
case k of
72: if q<>1 then q:=q-1 else q:=4; {ñòðåëêà ââåðõ}
80: if q<>4 then q:=q+1 else q:=1; {ñòðåëêà âíèç}
13: run; {enter}
end;
until k=27;
end.
Pascal работа с БД
Организация «Национальное содействие потерпевшим убытки» выделяет поощрительные стипендии студентам университетов и колледжей, утратившим возможность продолжать учебу. Эти студенты сдают в управление анкеты, в которых указывают:
Перечень требований, которым должен удовлетворять претендент на такую стипендию, следующий:
а) индекс доходов не выше среднего
б) возраст (старше 30 лет)
в) наличие собственной семьи
г) осталось закончить один или два курса
Написать программу, которая на основании введенных анкет составляет и печатает список фамилий студентов, имеющих право претендовать на поощрительные стипендии.
Я вывожу саму созданную БД...но ни как ни могу составить условие вывода котрое указано в условии задачи.
Код:
Код:
Procedure infdata;
begin
if (r.ind <=2) and (r.v >= 30) and (r.cp = 1) and (r.cy >= 3 ) then
write(r.fa);
end;
begin
if (r.ind <=2) and (r.v >= 30) and (r.cp = 1) and (r.cy >= 3 ) then
write(r.fa);
end;
ну так сделай в цикле обход всей таблицы ;)
Вот я и прошу помощи это сделать...чтоб данные корректно отбражались ниже...общих введеных дынных
Код:
Procedure infdata;
begin
assign(f,'dates.db');
reset(f);
write_title;
while not eof(f) do
if (r.ind <=2) and (r.v >= 30) and (r.cp = 1) and (r.cy >= 3 ) then
writeln(r.fa);
end;
begin
assign(f,'dates.db');
reset(f);
write_title;
while not eof(f) do
if (r.ind <=2) and (r.v >= 30) and (r.cp = 1) and (r.cy >= 3 ) then
writeln(r.fa);
end;
Цитата: kl1shny
Перечень требований, которым должен удовлетворять претендент на такую стипендию, следующий:
а) индекс доходов не выше среднего
б) возраст (старше 30 лет)
в) наличие собственной семьи
г) осталось закончить один или два курса
Написать программу, которая на основании введенных анкет составляет и печатает список фамилий студентов, имеющих право претендовать на поощрительные стипендии.
Я вывожу саму созданную БД...но ни как ни могу составить условие вывода котрое указано в условии задачи.
Так и не понял - в чём трудность возникает-то?..
Условие будет иметь следующий вид:
if [COLOR="Navy"]индекс_доходов[/COLOR] <= [COLOR="Navy"]средний_индекс_доходов[/COLOR] and [COLOR="Sienna"]возраст[/COLOR] > [COLOR="Sienna"]30_лет[/COLOR] and [COLOR="DarkGreen"]наличие_собственной_семьи[/COLOR] = TRUE and [COLOR="DarkRed"]количество_неоконченных_курсов[/COLOR] < 3 then вывод_данных_на_экран;
Да слжность в том, что после выведеных данных нужно вывести ещё фамили...то есть мне нужно вывести фамилии ниже таблицы... у меня вот не получается...данные накладываются на данные
Как накладываются?? Скрин в студию.