Лекции.Орг


Поиск:




Категории:

Астрономия
Биология
География
Другие языки
Интернет
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Механика
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Транспорт
Физика
Философия
Финансы
Химия
Экология
Экономика
Электроника

 

 

 

 


ЛистингпрограммынаязыкеPascal

Задание

Условие задачи

1) Если символ находится среди символов «А» - «Г», то для заданной матрицы найти min элемент среди элементов этой матрицы, расположенных над главной диагональю и max элемент среди элементов, расположенных под главной диагональю.

2) Если символ находится среди символов «И» -«Л», то определить лучшую по среднему баллу группу, если результаты экзаменов двух групп представлены в виде массивов и .

3) Если символ находится среди символов «П» - «С», то создать файл целых чисел. В другой файл переписать подряд отрицательные элементы первого файла и подсчитать их количество. Первоначальный и полученный файлы выдать на печать.

 

Набор тестовых примеров

1) входные данные:

символ «А» - «Г»

Матрица Р:

Матрица Р после формирования:

1 2 3 4 5

6 7 8 9 10

11 12 13 14 15

16 17 18 19 20

21 22 23 24 25

выходные данные:

Min: 1

Max: 25

2) входные данные:

символ «И» -«Л»

введите элементы матрицы B


B[1]=5

B[2]=6

B[3]=2

B[4]=6

B[5]=5

B[6]=6

B[7]=2

B[8]=3

B[9]=5

B[10]=2

B[11]=4

B[12]=3

B[13]=2

B[14]=4

B[15]=5

B[16]=2

B[17]=3

B[18]=4

B[19]=2

B[20]=6

B[21]=5

B[22]=2


 

Матрица В после формирования:

5 62 6 5 6 2 3 5 2 4 3 2 4 5 2 3 4 2 6 5 2

вводите элементы матрицы С


С[1]=3

С[2]=5

С[3]=2

С[4]=6

С[5]=4

С[6]=2

С[7]=3

С[8]=4

С[9]=6

С[10]=5

С[11]=6

С[12]=3

С[13]=3

С[14]=3

С[15]=5

С[16]=2

С[17]=4

С[18]=6

С[19]=6

С[20]=6

С[21]=5


Матрица C после формирования:

3 5 2 6 4 2 3 4 6 5 6 3 3 3 5 2 4 6 6 6 5

выходные данные:

Среднее арифметическое B[i]: 3.82

Среднее арифметическое C[i]: 4.24

Среднее арифметическое C[i] лучше чем B[i]

3) входные данные:

символ «П» -«С»

введите элементы файла F

3-5-268-5-7999

 

выходные данные:

Вывод файла F:

3 -5 -2 6 8 -5 -7

Вывод файла G

-5 -2 -5 -7

Кол-во чисел файла G: 4

Блок-схемы алгоритмов

 

 

 

     
 
 
   

 


1 3 5

2 4 6

 

 

               
 
 
   
 
   
 
   
 
   


 


Imax:=1; Imin:=1; Jmax:=1; Jmin:=1; Max:=P[1;1]; Min:=P[1;1];    

 

 


Min:=P[i;j]; Imin:=i; Imin:=j;    
Max:=P[i;j]; Imax:=i; Imax:=j;    

 

 

 
 

 


Шаг 3-4 ВТОРОЙ АЛГАРИТМ

           
   
 
 
Шаг 5-6 ТРЕТИЙ АЛГАРИТМ
 
   


 

 


Листинг программы на языке Pascal

program1;

const L=30;

type T2M = array[1.. L,1..L] of integer;

T1M = array[1.. L] of integer;

TF = file of integer;

Tname = string[4];

var P: T2M;

B, C: T1M;

s, s1, buf, max, min, imax,imin,jmax,jmin:integer;

sra1,Sra3: real;

N,M,i,j,r, k, k1:byte;

F,G: file of integer;

// Процедура для ввода двухмерной матрицы

procedureVvodMx(var P:T2m; const N,M: byte; const name:Tname);

vari,j:byte;

begin

writeLn('Введитеэлементыматрицы ',name);

for i:=1 to N do

for j:=1 to M do

begin

write('P[',i,',',j,']=');

readLn(P[i,j]); end;end;

// Процедура для ввода двухмерной матрицы

procedureVivodMx(const P:T2m; const N,M: byte; const name:Tname);

vari,j:byte;

begin

writeLn('Матрица ',name,' послеформирования:');

for i:=1 to N do

begin

for j:=1 to M do

write(P[i,j]:4);

writeLn;end;end;

// Процедура для ввода матрицы

procedure VvodMx1(var B:T1m; const N: byte; const name:Tname);

var i:byte;

begin

writeLn('Введитеэлементыматрицы ',name);

for i:=1 to N do

begin

write('B[',i,']=');

readLn(B[i]); end;end;

// Процедура для ввода матрицы

procedure VivodMx1(const B:T1m; const N: byte; const name:Tname);

var i:byte;

begin

writeLn('Матрица ',name,' послеформирования:');

for i:=1 to N do

begin

write(B[i]:4);

writeLn; end;end;

// Функция нахождения среднего арифметического

functionsra(const B:T1m; const N:byte):real;

vari,k:byte;

Sra1:real;

s:integer;

begin

S:=0;

k:=0;

for i:=1 to N do

begin

k:=k+1;

S:=S+b[i];

end;

if k<>0 then

SrA:= S/k; end;

// Процедура для ввода файла

procedureVvodF(var F:TF; const name:Tname);

varbuf:integer;

begin

rewrite(F);

writeLn('Введите компоненты файла', name);

readLn(buf);

whilebuf<>999 do

begin

write(F,buf);

readLn(buf);end;end;

// Процедура для вывода файла

procedureVivodF(var F:TF; const name:Tname);

varbuf:integer;

begin

reset(F);

writeLn('Выводфайла ', name);

while not EOF(F) do

begin

read(F,buf);

write(buf:5);end;

writeLn;end;

// основная программа

begin

writeLn('введите символ');

readLn(ch);

casech of

'А'..'Г':

begin

VvodMx(p,5,5,'p');

VivodMx(P,5,5,'p');

begin

Imax:=1;

Jmax:=1;

Max:= P[1,1];

Imin:=1;

Jmin:=1;

min:= P[1,1];

for i:=1 to N do

for j:=1 to M do

ifi>=j then

begin

if P[i,j]>Max then

begin

Max:= P[i,j];

IMax:=i;

JMax:= j;end; end

else

begin

if P[i,j]<min then

begin

min:= P[i,j];

Imin:=i;

Jmin:= j;

end;end;

writeLn('Min: ', min);

writeLn('Max: ', max);

end;end;

'И'..'Л':

begin

VvodMx1(B,22,'b');

VivodMx1(b,22,'b'); begin

sra1:=SrA(b,22); begin

VvodMx1(c,21,'с');

VivodMx1(c,21,'с'); begin

sra1:=SrA(c,21);

writeLn('СреднеарифметическоеB[i]: ', SrA(b,22):8:2);

writeLn(' Среднеарифметическое C[i]: ', SrA(c,21):8:26);

end;end; end;

if SrA(c,21)>SrA(b,22) then

begin

writeLn(' Среднеарифметическое C[i] лучше чемB[i] ');

end

else

begin

writeLn('СреднеарифметическоеB[i] лучшечемC[i] ');

end;end;

'П'..'С':

begin

Assign(F,'F.dat');

rewrite(F);

VvodF(F,'F');

Assign(g,'g.dat');

rewrite(g);

reset(F);

while not EOF(F) do

begin

read(F,buf);

if buf<0 then

k:=k+1;

if buf<0 then

write(G,buf);

end;

VivodF(F,'F');

VivodF(g,'g');

writeLn('Кол-во чисел файлаG:',k);

end;

else

writeLn('символ находится вне допустимого диапазона'); end;end.


2 Задание

Условие задачи

В данном задании следует при помощи массива записей реализовать: функциональное меню; ввод таблицы; вывод таблицы; три запроса на выбор.

В приемной комиссии вуза об абитуриенте имеются сведения: Ф.И.О., адрес, факультет, специальность, форма обучения (очная, заочная, вечерняя), номер аттестата, средний балл аттестата, наличие медали. СУБД должна выдавать следующие сведения:

- список медалистов, подавших заявления на заданную специальность;

- список абитуриентов-очников;

- абитуриентов с наименьшим средним баллом в аттестате;

- определить сколько абитуриентов на каждый факультет подало заявлений;

+ список всех абитуриентов живущих на одинаковых улицах;

+ сортировка по отдельным полям.


 


Набор тестовых примеров

входные данные:

№ п/п ФИО Адрес. Улица Дом Факультет Специальность Форма обучения. Очная Заочная Вечерняя Номер аттестата Ср.Балл аттестата Наличие медали
  Иванов Сухова       + - -     +
  Петров Ленина       - + -     -
  Сидоров Пушкина       + - -     -
  Зотов Зеленная       + - -     -
  Харьков Мира       - - +     +

 

выходные данные:

Запрос 1. Найти медалистов, подавших заявления на заданную специальность;

 

Обработка запроса: список медалистов, подавших заявления на заданную специальность

Введите специальность: 12

Результат Запроса:

 

№ п/п ФИО Адрес. Улица Дом Факультет Специальность Форма обучения. Очная Заочная Вечерняя Номер аттестата Ср.Балл аттестата Наличие медали
  Иванов Сухова       + - -     +
  Харьков Мира       - - +     +

 

выходные данные:

Запрос 2. Найти абитуриентов-очников;

 

Обработка запроса: список абитуриентов-очников

Результат Запроса:

 

№ п/п ФИО Адрес. Улица Дом Факультет Специальность Форма обучения. Очная Заочная Вечерняя Номер аттестата Ср.Балл аттестата Наличие медали
  Иванов Сухова       + - -     +
  Сидоров Пушкина       + - -     -
  Зотов Зеленная       + - -     -

 

выходные данные:

Запрос 3. Найти абитуриентов с наименьшим средним баллом в аттестате;

 

Обработка запроса: список абитуриентов с наименьшим средним баллом в аттестате

Результат Запроса:

 

№ п/п ФИО Адрес. Улица Дом Факультет Специальность Форма обучения. Очная Заочная Вечерняя Номер аттестата Ср.Балл аттестата Наличие медали
  Сидоров Пушкина       + - -     -
  Зотов Зеленная       + - -     -

2.3 Блок-схема алгоритма

                     
   
Ввод FIOName
     
       
 
 
Ввод Adress.Street
 
 
Ввод Adress.NumberofBld
 
   
Ввод Fuculty
 
 
Ввод specialty
 
 
FormaObucheniy.Ochnay
 
   
FormaObucheniy.Zaochnay
 
       
 
 

 

 


 


                   
   
   
 
 
 
   
 
   

 

 



       
 
 
   


 
 


ЛистингпрограммынаязыкеPascal

programsubd;

type

TShops = record

ReestrNumber: integer;

FIOName: string[10];

Adress, FormaObucheniy: record

Street: string[15];

Ochnay, Zaochnay, Vechernyy:char;

NumberOfBld: byte;

end;

faculfy: string[10];

Specialty, NumberAttestata, SrBall: integer;

Medal:char;

end;

TBaseMass = array[1..255] of TShops;

{Процедура формирования новой таблицы}

procedureInputNewBase(varBase:TBaseMass; varNumOfRec:byte);

var i: byte;

Shop: TShops;

ContinueInput: char;

begin

i:=0;

WriteLn;

repeat

i:= i + 1;

with Shop do

begin

write('Введите ФИО ',i,'-го абитуриента: ');

readLn(FIOName);

writeLn('Введите адрес абитуриента ',FIOName);

write(' Улица: ');

readLn(Adress.Street);

write(' Дом: ');

readLn(Adress.NumberOfBld);

write('Факультет абитуриента ',FIOName,': ');

readLn(faculfy);

write('Специальность абитуриента ',FIOName,': ');

readLn(Specialty);

writeLn('Форма обучения абитуриента ',FIOName);

write(' Очная: ');

readLn(FormaObucheniy.Ochnay);

write(' Заочная: ');

readLn(FormaObucheniy.Zaochnay);

write(' Вечерняя: ');

readLn(FormaObucheniy.Vechernyy);

write('Номер аттестата абитуриента ',FIOName,': ');

readLn(NumberAttestata);

write('Ср. балл аттестата абитуриента ',FIOName,': ');

readLn(SrBall);

write('Наличие медали у абитуриента ',FIOName,': ');

readLn(Medal);

end;

Base[i]:= Shop;

writeLn('Введите данные о следующем абитуриента ');

writeLn('Если код окончен, введите 0, если нет - 1');

readLn(ContinueInput);

untilContinueInput='0';

NumOfRec:=i;

end;

{Процедура вывода базы на экран}

procedureOutBase(const Base:TBaseMass; const NumOfRec:byte);

vari,j: byte;

begin

writeLn;

ifNumOfRec<> 0 then

begin

writeLn('База данных содержит следующие сведения:');

for j:=1 to 179 do

write('-');

writeLn;

writeLn('N п/п':6,'| ','ФИО|':12,'Адрес.Улица |':17,'Дом |':7,'Факультет |':8,'Специальность |':15, 'Формаобучения.Очная |':22, 'Заочная |':10, 'Вечерняя|':10, 'Номераттестата |':17, 'Ср.Баллаттестата|':19,'Наличиемедали|':17);

forj:=1 to 179 do

write('=');

writeLn;

for i:=1 to NumOfRec do

with Base[i] do

begin

write(i:5,' |');

write(FIOName:10,' |');

write(Adress.Street:15,' |');

write(Adress.NumberOfBld:5,' |');

write(faculfy:9,' |');

write(Specialty:13,' |');

write(FormaObucheniy.Ochnay:21,' |');

write(FormaObucheniy.Zaochnay:8,' |');

write(FormaObucheniy.Vechernyy:8,' |');

write(NumberAttestata:15,' |');

write(SrBall:17,' |');

writeLn(Medal:15,' |');

for j:=1 to 179 do

write('-');

writeLn;

end;

end

else

writeLn('ÁÄ ïóñòà');

end;

{ПроцедураобработкизапросакБД

(поиск медалистов, подавших заявления на заданную специальность)}

Procedure Medal(const Base:TBaseMass; const NumOfRec: byte);

vari,j: byte;

NeedSpecialty,Specialty: integer;

Medal:char;

begin

ifNumOfRec<> 0 then

begin

writeLn;

writeLn('Запрос к БД: список медалистов, подавших заявления на заданную специальность ');

writeLn;

write('Введите специальность:');

readln (NeedSpecialty);

for i:= 1 to NumOfRec do

with Base[i] do

writeLn('Результат запроса:');

for j:=1 to 179 do

write('-');

writeLn;

writeLn('N п/п':6,'| ','ФИО|':12,'Адрес.Улица |':17, 'Дом |':7,'Факультет |':8,'Специальность |':15, 'Формаобучения.Очная |':22, 'Заочная |':10, 'Вечерняя|':10, 'Номераттестата |':17, 'Ср.Баллаттестата |':19, 'Наличиемедали |':17);

for j:=1 to 179 do

write('=');

writeLn;

for i:=1 to NumOfRec do

with Base[i] do

if (Specialty = NeedSpecialty) and (medal='+')then

begin

write(i:5,' |');

write(FIOName:10,' |');

write(Adress.Street:15,' |');

write(Adress.NumberOfBld:5,' |');

write(faculfy:9,' |');

write(Specialty:13,' |');

write(FormaObucheniy.Ochnay:21,' |');

write(FormaObucheniy.Zaochnay:8,' |');

write(FormaObucheniy.Vechernyy:8,' |');

write(NumberAttestata:15,' |');

write(SrBall:17,' |');

writeLn(Medal:15,' |');

for j:=1 to 179 do

write('-');

writeLn;end;end

else

writeLn('В базе нет такой специальности ', NeedSpecialty);

end;

{Процедура обработки запроса к БД

(поиск абитуриентов-очников)}

Procedure Ochnik(const Base:TBaseMass; const NumOfRec: byte);

vari,j: byte;

Ochnay: char;

begin

ifNumOfRec<> 0 then

begin

writeLn;

writeLn('Запрос к БД: список абитуриентов-очников);

writeLn('Результат запроса:');

for j:=1 to 179 do

write('-');

writeLn;

writeLn('N п/п':6,'| ','ФИО|':12,'Адрес.Улица |':17, 'Дом |':7,'Факультет |':8,'Специальность |':15, 'Формаобучения.Очная |':22, 'Заочная |':10, 'Вечерняя|':10, 'Номераттестата |':17, 'Ср.Баллаттестата |':19, 'Наличиемедали |':17);

for j:=1 to 179 do

write('=');

writeLn;

for i:=1 to NumOfRec do

with Base[i] do

if (FormaObucheniy.Ochnay = '+') then

begin

write(i:5,' |');

write(FIOName:10,' |');

write(Adress.Street:15,' |');

write(Adress.NumberOfBld:5,' |');

write(faculfy:9,' |');

write(Specialty:13,' |');

write(FormaObucheniy.Ochnay:21,' |');

write(FormaObucheniy.Zaochnay:8,' |');

write(FormaObucheniy.Vechernyy:8,' |');

write(NumberAttestata:15,' |');

write(SrBall:17,' |');

writeLn(Medal:15,' |');

for j:=1 to 179 do

write('-');

writeLn;end;end

else

writeLn('В базе нет очников ');

end;

{Процедура обработки запроса к БД

(поиск абитуриентов с наименьшим средним баллом в аттестате)}

Procedure srBall(const Base:TBaseMass; const NumOfRec: byte);

vari,j, k: byte;

SrA: integer;

SrBall: integer;

begin

ifNumOfRec<> 0 then

begin

writeLn;

writeLn('Запрос к БД: список абитуриентов с наименьшим средним баллом в аттестате ');

writeLn('Результат запроса:');

for j:=1 to 179 do

write('-');

writeLn;

writeLn('N п/п':6,'| ','ФИО|':12,'Адрес.Улица |':17, 'Дом |':7,'Факультет |':8,'Специальность |':15, 'Формаобучения.Очная |':22, 'Заочная |':10, 'Вечерняя|':10, 'Номераттестата |':17, 'Ср.Баллаттестата |':19, 'Наличиемедали |':17);

for j:=1 to 179 do

write('=');

writeLn;

for i:=1 to NumOfRec do

with Base[i] do

if (srBall<4) then

begin

write(i:5,' |');

write(FIOName:10,' |');

write(Adress.Street:15,' |');

write(Adress.NumberOfBld:5,' |');

write(faculfy:9,' |');

write(Specialty:13,' |');

write(FormaObucheniy.Ochnay:21,' |');

write(FormaObucheniy.Zaochnay:8,' |');

write(FormaObucheniy.Vechernyy:8,' |');

write(NumberAttestata:15,' |');

write(SrBall:17,' |');

writeLn(Medal:15,' |');

for j:=1 to 179 do

write('-');

writeLn; end;end

else

writeLn('В базе нет абитуриентов с низким ср.баллом в аттестатом ');

end;

{процедура выводящая главное меню программы}

procedureMainMenu;

varPunktOfMenu: byte;

Base: TBaseMass;

NumOfRec: byte;

begin

NumOfRec:= 0;

repeat

writeLn;

writeLn('Выберите нужное действие:');

writeLn('1 - Ввод новой БД');

writeLn('2 - Вывод БД');

writeLn('3 - поиск медалистов, подавших заявления на заданную специальность ');

writeLn('4 - поиск абитуриентов-очников ');

writeLn('5 - поиск абитуриентов с наименьшим средним баллом в аттестате');

writeLn('6 - Выход');

write('Ваш выбор:');

readLn(PunktOfMenu);

casePunktOfMenu of

1: InputNewBase(Base, NumOfRec);

2: OutBase(Base, NumOfRec);

3: Medal(Base, NumOfRec);

4: Ochnik(Base, NumOfRec);

5: srBall(Base, NumOfRec)

else

ifPunktOfMenu<>6 then

writeLn('Введите корректный пункт меню');

end;

untilPunktOfMenu = 6;

end;

{очень короткая главная программа}

begin

MainMenu;

end.

 



<== предыдущая лекция | следующая лекция ==>
и требования к сохранности помещений и оборудования | 
Поделиться с друзьями:


Дата добавления: 2017-03-18; Мы поможем в написании ваших работ!; просмотров: 218 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Жизнь - это то, что с тобой происходит, пока ты строишь планы. © Джон Леннон
==> читать все изречения...

4103 - | 3844 -


© 2015-2026 lektsii.org - Контакты - Последнее добавление

Ген: 0.013 с.