Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
14
Добавлен:
20.06.2014
Размер:
367 Кб
Скачать

Задача №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|