ГОС информатика / ПРАКТИКА / !!!практика_паскаль_7заданий
.doc1)Среднесуточная температура
const DAYS = 366;
var tMonth: array[1..12] of real;
i, month: integer;
t, tYear, min: real;
c: char;
begin
for i:=1 to 12 do tMonth[i]:= 0;
tYear := 0;
for i:=1 to DAYS do begin
repeat read(c); until c = '.';
read (month);
readln (t);
tMonth[month] := tMonth[month] + t;
tYear := tYear + t;
end;
for i:=1 to 12 do
case i of
2: tMonth[i] := tMonth[i] / 29;
4,6,9,11: tMonth[i] := tMonth[i] / 30;
else tMonth[i] := tMonth[i] / 31;
end;
tYear := tYear / DAYS;
min := abs(tMonth[1] - tYear);
for i:=2 to 12 do
if abs(tMonth[i] - tYear) < min then
min := abs(tMonth[i] - tYear);
writeln(tYear:0:2);
for i:=1 to 12 do
if abs(tMonth[i] - tYear) = min then
writeln(i,' ',tMonth[i]:0:2,' ',tMonth[i]-tYear:0:2);
end.
2)Опишите алгоритм поиска трёх последовательных элементов, сумма которых максимальна, в числовом массиве из 30 элементов. Решение на языке Т-Паскаль.
Program MAXSUM;
Uses CRT;
var a: array[1..30] of integer;
i,b,c,d,sum: integer;
Begin
clrscr;
Randomize;
b:=0; c:=0; d:=0;
for i:=1 to 30 do
begin
a[i]:=Random(100);
write(a[i]:3);
end;
writeln;
for i:=1 to 30 do
if a[i]>b then b:=a[i];
writeln('b= ',b);
for i:=1 to 30 do
if (a[i]<b) and (a[i]>c) then c:=a[i];
writeln('c= ',c);
for i:=1 to 30 do
if (a[i]>d) and (a[i]<c) then d:=a[i];
writeln('d= ',d);
sum:=b+c+d;
writeln('Summa= ', sum);
readln;
End.
3) Опишите алгоритм подсчёта числа элементов равных максимальному на языке Т-Паскаль.
Program Maximum;
Uses CRT;
var a: array[1..10] of integer;
max,i,k: integer;
Begin clrscr;
max:=0; k:=0;
for i:=1 to 10 do
begin
writeln('vvedite ',i,' element');
readln(a[i]);
end;
clrscr;
for i:=1 to 10 do
begin
write(a[i]:3);
if a[i]>max then max:=a[i];
end;
writeln;
for i:=1 to 10 do
if a[i]=max then k:=k+1;
writeln('elementov ravnih maximalnomu ',k);
readln;
End.
4) В матрице размером m x n найти минимальную сумму по строкам.
Program Mat;
uses CRT;
var a: array [1..25,1..25] of integer;
i,j,m,n,b,c:integer;
Begin Randomize; clrscr; c:=9999;
Write('Vvedite razmer matrici m x n m= '); readln(m);
Write('n= '); readln(n);
for i:=1 to m do
Begin
for j:=1 to n do
begin
a[i,j]:=Random(100);
write(a[i,j]:3);
end;
writeln;
end;
for i:=1 to m do
Begin
b:=0;
for j:=1 to n do
b:=b+a[i,j];
write(i:3,b:5);
if b<c then c:=b;
writeln;
end;
writeln('min ctr ', c);
readln;
end.
5) В матрице размером m x n найти минимальную сумму по столбцам.
Program Mat;
uses CRT;
var a: array [1..25,1..25] of integer;
i,j,m,n,b,c:integer;
Begin Randomize; clrscr; c:=9999;
Write('Vvedite razmer matrici m x n m= '); readln(m);
Write('n= '); readln(n);
for i:=1 to m do
Begin
for j:=1 to n do
begin
a[i,j]:=Random(100);
write(a[i,j]:3);
end;
writeln;
end;
for i:=1 to m do
Begin
b:=0;
for j:=1 to n do
b:=b+a[j,i];
write(i:3,b:5);
if b<c then c:=b;
writeln;
end;
writeln('min stolb ', c);
readln;
end.
6) В матрице размером m x n заменить строки столбцами.
Program Mat;
uses CRT;
var a: array [1..25,1..25] of integer;
i,j,m,n,b:integer;
Begin Randomize; clrscr;
Write('Vvedite razmer matrici m x n m= '); readln(m);
Write('n= '); readln(n);
for i:=1 to m do
Begin
for j:=1 to n do
begin
a[i,j]:=Random(100);
write(a[i,j]:3);
end;
writeln;
end;
writeln;
for i:=1 to m do
for j:=i to n do
begin
b:=a[i,j];
a[i,j]:=a[j,i];
a[j,i]:=b;
end;
for i:=1 to m do
begin
for j:=1 to n do
write(a[i,j]:3);
writeln;
end;
readln;
end.
7) Составить базу данных группы студентов, предусмотрев фамилия, телефон, оценки за экзамен по трём предметам. Вывести на экран список студентов со всеми данными, только студентов, сдавших сессию на 4, 5 и студентов, не сжавших хотя бы один экзамен.
program Base;
uses crt;
type komp=record
Family:string[150];
tel:real;
oc1:integer;
oc2:integer;
oc3:integer;
end;
var
f:file of komp;
a,i:integer;
PK:komp;
procedure view;
begin
writeln(i:3,pk.Family:12,' ',pk.tel:10:0,pk.oc1:9,pk.oc2:9,pk.oc3:9);
inc(i);
end;
begin
clrscr;
repeat
writeln('Glavnoe menu:');
writeln('1-Vivesti vseh studentov');
writeln('2-Studenty na 4 i 5');
writeln('3-Doljniki');
writeln('4-Dobavit studenta');
writeln('5-Exit');
writeln;
write('Vvedite komandu ');readln(a);
case a of
1:begin
i:=1;
writeln('| # | Familiya | Telephone | 1 examen | 2 examen | 3 examen |');
assign(f,'data.dat');
reset(f);
while not eof(f) do
begin
read(f,pk);
view;
end;
close(f);
end;
2:begin
assign(f,'data.dat');
reset(f);
writeln('| # | Familiya | Telephone | 1 examen | 2 examen | 3 examen |');
while not Eof(f) do
begin
read(f,pk);
if (PK.oc1>=4) and (PK.oc2>=4) and (PK.oc3>=4) then view;
end;
close(f);
end;
3:begin
assign(f,'data.dat');
reset(f);
writeln('| # | Familiya | Telephone | 1 examen | 2 examen | 3 examen |');
while not Eof(f) do
begin
read(f,pk);
if (PK.oc1<=2) or (PK.oc2<=2) or (PK.oc3<=2) then view;
end;
close(f);
end;
4:begin
write('Vvedite familiyu ');readln(PK.Family);
write('Vvedite telephon ');readln(PK.tel);
write('Vvedite ocenku za 1 examen ');readln(PK.oc1);
write('Vvedite ocenku za 2 examen ');readln(PK.oc2);
write('Vvedite ocenku za 3 examen ');readln(PK.oc3);
assign(f,'data.dat');
reset(f);
Seek(f,FileSize(f));
write(f,pk);
close(f);
end;
end;
until a=5;
end.