Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Помощь студентам


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

Здравствуйте в прогу нужно добавить пару запросов помогите пожалуйста

Предусмотреть вывод значений для полей элементов массива записей по следующим ключам: по адресу юридической консультации, по названию юридической консультации, по фамилии, имени, отчеству (Ф.И.О.) адвоката или нотариуса, по номеру телефона адвоката или нотариуса.
3) Определить юридическую консультацию, в которой работает наименьшее количество нотариусов.
4) Определить, сколько нотариусов и адвокатов работает в опре-деленной юридической консультации.
5) Определить юридические консультации, которые находятся на одной определенной улице.
Цитата:
program lab;
uses crt;
const nmax=10;
var b:boolean;
type
adres=record
rn:string[20];
nd:byte;
ul:string[20];
end;
sotr=record
dlz:string[10];
tel:longint;
fio:string[20];
end;
yur_cons=record
adr:adres;
naz:string[20];
kol:byte;
std:array[1..nmax] of sotr;
end;
mass=array[1..nmax] of yur_cons;
procedure vvod(var ms:mass;var n:byte);
var i,j,w:byte;
begin
clrscr;
repeat
write('Kol-vo konsult do ',nmax,' n=');
readln(n);
until n in [1..nmax];
for i:=1 to n do
begin
writeln('Ur kons ',i);
with ms[i] do
begin
writeln('Vvedite adress:');
with adr do
begin
write('- raion: ');readln(rn);
write('- N doma: ');readln(nd);
write('- ulica: ');readln(ul);
end;
write('vvedite nazvanie: ');readln(naz);
repeat
write('Kol-vo sotrud do ',nmax,'=');
readln(kol);
until kol in [1..nmax];
writeln('vvedite dannie sotrudnika:');
for j:=1 to kol do
begin
with std[j] do
begin
repeat
writeln('Dolznost 1-advokat 2-notarius:');
readln(w);
until w in [1..2];
if w=1 then dlz:='advokat'
else dlz:='notarius';
write('- N telephon: ');readln(tel);
write('- FIO: ');readln(fio);
end;
end;
end;
end;
b:=true;
end;
procedure Zagl;
begin
writeln('------------------------------------------------------------------------------');
writeln('| Raion | Street, home | Nazvanie |Dolznost| Phone |F. I.O.|');
writeln('------------------------------------------------------------------------------');
end;
procedure Vyvod(a:yur_cons);
var i,j:byte;
begin
with a do
begin
gotoXY(1,whereY);
with adr do
begin
write('| ',rn);
gotoXY(12,whereY);write('| ',ul,', ',nd);
end;
gotoXY(29,whereY);write('| ',naz);
for j:=1 to kol do
with std[j] do
begin
gotoXY(1,whereY);write('|');
gotoXY(12,whereY);write('|');
gotoXY(29,whereY);write('|');
gotoXY(43,whereY);write('| ',dlz);
gotoXY(53,whereY);write('| ',tel);
gotoXY(65,whereY);write('| ',fio);
gotoXY(78,whereY);writeln('|');
end;
writeln('------------------------------------------------------------------------------');
end;
end;
procedure VyvSps(ms:mass; n: byte);
var i:byte;
begin
clrscr;
if not b then
begin
writeln('Masssiv ewe ne sosdan, vernites k punktu 1');
readln;
exit
end;
writeln('Spisok konsultacii:');
Zagl;
for i:=1 to n do
Vyvod(ms[i]);
readln
end;
procedure Poisk_adr(ms:mass; n: byte);
var a:adres;
i,k:byte;
begin
clrscr;
if not b then
begin
writeln('Masssiv ewe ne sosdan, vernites k punktu 1');
readln;
exit
end;
writeln('Vvedite adress dla poiska:');
with a do
begin
write('- raion: ');readln(rn);
write('- N doma: ');readln(nd);
write('- street: ');readln(ul);
end;
k:=0;
i:=1;
while(i<=n)and(k=0) do
if (ms[i].adr.rn=a.rn)and(ms[i].adr.nd=a.nd)and (ms[i].adr.ul=a.ul)then k:=i
else i:=i+1;
if k=0 then writeln('po dannomu adresu net konsultacii')
else
begin
Zagl;
Vyvod(ms[k]);
end;
readln
end;
procedure Poisk_naz(ms:mass; n: byte);
var a:string[20];
i,k:byte;
begin
clrscr;
if not b then
begin
writeln('Masssiv ewe ne sosdan, vernites k punktu 1');
readln;
exit
end;
writeln('vvedite adress dla poiska:');
write('vvedite nazvanie raiona: ');
readln(a);
k:=0;
i:=1;
while(i<=n)and(k=0) do
if ms[i].adr.rn=a then k:=i
else i:=i+1;
if k=0 then writeln('Konsultacii s takin imanem net')
else
begin
Zagl;
Vyvod(ms[k]);
end;
readln
end;
procedure Poisk_fio(ms:mass; n: byte);
var a:string[20];
d:string[10];
i,j,k:byte;
begin
clrscr;
if not b then
begin
writeln('Masssiv ewe ne sosdan, vernites k punktu 1');
readln;
exit
end;
repeat
writeln('Vvedite dolznost (advokat, notarius):');
readln(d);
until(d='advokat')or(d='notarius');
writeln('Vvedite FIO:');
readln(a);
k:=0;
i:=1;
while(i<=n)and(k=0) do
begin
j:=1;
while(j<=ms[i].kol)and(k=0) do
if(ms[i].std[j].dlz=d)and(ms[i].std[j].fio=a) then k:=i
else j:=j+1;
if k=0 then i:=i+1;
end;
if k=0 then writeln(d,'a c takim FIO net')
else
begin
Zagl;
Vyvod(ms[k]);
end;
readln
end;
procedure Poisk_tel(ms:mass; n: byte);
var t:longint;
d:string[10];
i,j,k:byte;
begin
clrscr;
if not b then
begin
writeln('Masssiv ewe ne sosdan, vernites k punktu 1');
readln;
exit
end;
repeat
writeln('vvedite dolznost (advokat, notarius):');
readln(d);
until(d='advokat')or(d='notarius');
writeln('Vvedite N phone:');
readln(t);
k:=0;
i:=1;
while(i<=n)and(k=0) do
begin
j:=1;
while(j<=ms[i].kol)and(k=0) do
if(ms[i].std[j].dlz=d)and(ms[i].std[j].tel=t) then k:=i
else j:=j+1;
if k=0 then i:=i+1;
end;
if k=0 then writeln(d,'a c takim N net')
else
begin
Zagl;
Vyvod(ms[k]);
end;
readln
end;
procedure Poisk_rjn(ms:mass; n: byte);
var a:string[20];
i,k:byte;
begin
clrscr;
if not b then
begin
writeln('Masssiv ewe ne sosdan, vernites k punktu 1');
readln;
exit
end;
writeln('vvedite nazvanie raiona:');
readln(a);
k:=0;
for i:=1 to n do
if ms[i].adr.rn=a then k:=k+1;
if k=0 then writeln('V dannom raione konsultacii net')
else writeln('V dannom raione kol-vo kon=',k);
readln
end;
var kns:mass;
ad:adres;
n:byte;
w:char;
begin
clrscr;
b:=false;
repeat
clrscr;
writeln('Viberete deistvie:');
writeln('1-vvod dannix');
writeln('2-vvod vsego spiska');
writeln('3-poisk po adressu');
writeln('4-poisk po raionu');
writeln('5-poisk po familii');
writeln('6-poisk po telephonu');
writeln('7-Poisk po nazvaniu');
writeln('Drugoe-Exit');
readln(w);
case w of
'1':Vvod(kns,n);
'2':VyvSps(kns,n);
'3':Poisk_adr(kns,n);
'4':Poisk_naz(kns,n);
'5':Poisk_fio(kns,n);
'6':Poisk_tel(kns,n);
'7':Poisk_rjn(kns,n);
else exit;
end;
until not(w in ['1'..'3']);
end.
end;
end;
end;
procedure Vyvod;
var i,j:byte;
begin
writeln('Svedenia ob uridiceskix consult:');
writeln('------------------------------------------------------------------------------');
writeln('| Raion | Street, dom | Nazvanie |Dolznost| Phone |F.I.O.|');
writeln('------------------------------------------------------------------------------');
for i:=1 to n do
with poisk[i] do
begin
gotoXY(1,whereY);
with adress_yur_cons do
begin
write('| ',raion);
gotoXY(12,whereY);write('| ',uliza,', ',N_doma);
end;
gotoXY(29,whereY);write('| ',nazw_yur_cons);
for j:=1 to count do
with dann_sotr[j] do
begin
gotoXY(43,whereY);write('| ',dlzn);
gotoXY(53,whereY);write('| ',N_tel);
gotoXY(65,whereY);write('| ',fio);
gotoXY(78,whereY);writeln('|');
end;
writeln('------------------------------------------------------------------------------');
end;
end;
end.
Ваник вне форума   Ответить с цитированием

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

Вам обязательно помогут советом, а пока можете открыть в браузере схожие обсуждения

Массив записей, Pascal
Сортировка записей. Паскаль

Ads

Яндекс

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

Опции темы
Опции просмотра

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

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




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

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