Задача №2
(Вариант 8)
Условие задачи: даны одномерные массивы чисел {Xi}N и {Yi}M/. Написать программу, которая заменяет нулями все отрицательные элементы массива X и Y, с использованием подпрограммы Procedure. Оформить подпрограмму в модуль.
Procedure P(z:mas;l:integer; var k:mas);
i=1,l
z[i]<0
K[i]=0
k[i]=z[i]
return
начало
n,m,{Xi}n,{Yi}m
{K1i}n,{K2i}m
stop
unit1 in 'unit1.pas';
unit Unit1;
interface
type
mas=array [1..100] of real;
Procedure P(z:mas;l:integer; var k:mas);
implementation
Procedure P(z:mas;l:integer; var k:mas);
var t:integer;
begin
For t:= 1 to l do
if z[t]<0 then k[t]:=0 else k[t]:=z[t];
end;
end.
program Project2;
uses
unit1 in 'unit1.pas';
var x,y,k1,k2:mas;
i,n,m:integer;
begin
writeln('vvedite kolichestvo elementov massiva x');
readln(n);
writeln('vvedite massiv x');
for i:= 1 to n do
readln(x[i]);
writeln('vvedite kolichestvo elementov massiva y');
readln(m);
writeln('vvedite massiv y');
for i:= 1 to m do
readln(y[i]);
P(x,n,k1);
p(y,m,k2);
writeln('massiv x');
for i:= 1 to n do writeln(k1[i]:10:2);
writeln('massiv y');
for i:= 1 to m do writeln(k2[i]:10:2);
readln;
end.
Тестовый пример:
Задача №3
(Вариант 10)
Условие задачи: из текста выбрать числа и записать в массив N. Количество чисел не более 10.
Начало
Ввод: строка s
s=’_‘+s+’_‘
l=length(s)
i=1,l


s[i]=’,’
s[i]=’.’
j=0
i=1,l
(s[i]=’_’) or ((s[i]=’.’) and (s[i+1]=’_’))

J=j+1
c[j]=i
l=j-1
i=0
j=1,l
n[j]:=copy(s,c[j]+1,c[j+1]-c[j]-1)
val(n[j],m[j],k)
i=0
k=0
n[j]
i=i+1
‘строка не содержит цифр’
stop
i>10

program Project3;
var i,j,l,k:integer;
s:string;
n: array [1..100] of string;
m:array [1..10] of real;
c:array [1..100] of integer;
begin
writeln('vvedite stroku');
readln(s);
s:=' '+s+' ';
l:=length(s);
for i:=1 to l do
if s[i]=',' then s[i]:='.';
j:=0;
for i:=1 to l do
if (s[i]=' ') or ((s[i]='.')and (s[i+1]=' ')) then
begin j:=j+1;
c[j]:=i;
end;
l:=j-1;
i:=0;
for j:=1 to l do
begin
n[j]:=copy(s,c[j]+1,c[j+1]-c[j]-1);
val(n[j],m[j],k);
if k=0 then
begin
writeln(n[j]);
i:=i+1;
end;
if i>10 then break;
end;
if i=0 then writeln('stroka ne soderjit chisel');
readln;end.
Задача №4
(Вариант 9)
Условие задачи: написать программу для хранения информации об успеваемости студентов. Необходимо хранить номер группы, фамилию студента, оценки за последнюю сессию. Программа должна хранить эту информацию в виде файла на диске и позволять распечатать списки студентов по заданной группе с указанием среднего бала каждого за последнюю сессию.
Начало
Ввод: n(ко-во студентов)
assing(f,’список студентов.text’)
rewrite(f);
Вывод в f: ‘№gruppi| familiya|matanaliz
|programmirovanie| fizica|informatica|ximiya|’
i=1,n
stop
Ввод:nom(№группы),
fam(фамилия), m,p,fi,inf,x(оценки)
Вывод в f: nom,fam, p,m,fi, inf, x
начало
Ввод ng(№группы)
assign(f,'список студентов.text')
assign(g,'средний балл.text')
rewrite(g), reset(f)
Вывод в g: ‘№gruppi| familiya| matanaliz|programmirovanie|fizica| informatica|ximiya|srednii bal|’
not eof(f)
stop

readln(f,s)
n:=length(s) nom:=copy(s,12,2)
j:=1
i=1,n
s[i]=’|’
st[j]:=i
j:=j+1

val(copy(s,st[3]-1,1),m,k)
val(copy(s,st[4]-1,1),p,k)
val(copy(s,st[5]-1,1),fi,k)
val(copy(s,st[6]-1,1),inf,k)
val(copy(s,st[7]-1,1),x,k)
nom=ng
b:=(m+p+fi+inf+x)/5
Вывод в g в строку s: b,'|'
program Project2;
var fam:string;
m,p,fi,inf,x:integer;
nom:string;
f:text;
n,i:integer;
begin
assign(f,'список студентов.text');
rewrite(f);
writeln('vvedite kolichestvo studentov ') ;
readln(n);
writeln(f,'№gruppi| familiya|matanaliz|programmirovanie|fizica|informatica|ximiya|');
for i:=1 to n do
begin
writeln('student',i);
write('nomer gruppi: ');
readln(nom);
write('familiya: ');
readln(fam);
writeln('ocenki');
write('matanaliz: ');
readln(m);
write('programmirovanie: ');
readln(p);
write('fizika: ');
readln(fi);
write('informatika: ');
readln(inf);
write('ximiya: ');
readln(x);
writeln(f,nom:13,'|',fam:12,'|',m:15,'|',p:32,'|',fi:7,'|',inf:19,'|',x:9,'|');
end;
close(f);
end.
Тестовый пример:
№gruppi| familiya|matanaliz|programmirovanie|fizica|informatica|ximiya|
22| petrov| 3| 4| 5| 4| 5|
21| sidorov| 4| 5| 4| 3| 4|
22| ivanov| 4| 3| 5| 4| 3|
program Project22;
var s,ng,nom:string;
m,p,fi,inf,x,k:integer;
st: array [1..100] of integer;
f,g:text;
b:real;
n,i,j:integer;
begin
assign(f,'список студентов.text');
assign(g,'средний балл.text');
write('vivesti tablicu dlya gruppi: ');
readln(ng);
rewrite(g);
reset(f);
writeln(g,'№gruppi| familiya|matanaliz|programmirovanie|fizica|informatica|ximiya|srednii bal|');
readln(f,s);
while not eof(f) do
begin
readln(f,s);
n:=length(s);
nom:=copy(s,12,2);
j:=1;
for i:=1 to n do
if s[i]='|' then begin
st[j]:=i;
j:=j+1;
end;
val(copy(s,st[3]-1,1),m,k);
val(copy(s,st[4]-1,1),p,k);
val(copy(s,st[5]-1,1),fi,k);
val(copy(s,st[6]-1,1),inf,k);
val(copy(s,st[7]-1,1),x,k);
if nom=ng then begin
b:=(m+p+fi+inf+x)/5;
writeln(g,s,' ',b:2:1,'|');
end;
end;
close(f);
close(g);
end.
№gruppi| familiya|matanaliz|programmirovanie|fizica|informatica|ximiya|srednii bal|
22| petrov| 3| 4| 5| 4| 5| 4.2|
22| ivanov| 4| 3| 5| 4| 3| 3.8|
