Рыбалко Свтеа
Группа 318
Цель: ознакомление с форматом и способами объявления множества; изучение возможных операций над множествами.
Постановка задачи:
1. Выполнить задание с использованием множества.
2. Результаты расчета вывести в текстовой файл.
Вариант заданий № 16
Вариант № 16
Записать в текстовой файл 90 случайных целых чисел в диапазоне [-60..60]. Считать данные группами по три числа, интерпретируя их как координаты 30 точек пространства. Составить множество из номеров точек, удаленных от геометрического центра тяжести системы далее чем на 15.
Текст программы:
PROGRAM lab;{множества}
uses crt;
CONST
N=90;
m=30;
TYPE
SetOfNumber=set of 1..m; {множество}
arr=array[1..30,1..3] of integer;
VAR
mas:arr;
s:real;
n1,j1,j,next,i:word;
n2:integer;
PrimerSet:SetOfNumber; {искомое множество}
fo,fi,f:text;
procedure soz_file(var fo:text);
var
j1:word;
n1:integer;
begin
rewrite(fo);
randomize;
for j1:=1 to n do begin
n1:=random(121)-60;
write(fo,n1,' ');
end;end;
procedure Read_file(var fo,fi:text;var mas:arr);
var
i,j:word;
s,s1,x,y,z,x1,y1,z1:real;
begin
reset(fi);;
s:=0;x1:=0;y1:=0; z1:=0;
for i:=1 to m do begin
for j:=1 to 3 do begin
read(fi,mas[i,j]);
end;
s:=sqrt((mas[i,1]*mas[i,1]+mas[i,2]*mas[i,2]+mas[i,3]*mas[i,3]))+s;{сумма растояний от начала координат}
x1:=mas[i,1]+x1;
y1:=mas[i,2]+y1;
z1:=mas[i,3]+z1;end;
x1:=x1/30;y1:=y1/30;z1:=z1/30;
readln;
for i:=1 to m do
begin
x:=mas[i,1];y:=mas[i,2]; z:=mas[i,3];
writeln(i,' точка: x=',x:3:0,' y=',y:3:0,' z=',z:3:0);
writeln(fo,i,' точка: x=',x:3:0,' y=',y:3:0,' z=',z:3:0);
writeln(fo,i,' точка: x=',x:3:0,' y=',z:3:0,' z=',z:3:0);
s1:=sqrt((x-x1)*(x-x1)+(y-y1)*(y-y1)+(z-z1)*(z-z1));{растояние от центра тяжести}
if s1>15 then primerset:=primerset+[i]; {добавление в множество номера точки}
end;
writeln('множество точек удаленных от центра тяжести (',x1:2:2,',',y1:2:2,',',z1:2:2,') больше 15:');
writeln(f,'множество точек удаленных от центра тяжести (',x1:2:2,',',y1:2:2,',',z1:2:2,') больше 15:');
for i:=1 to 30 do begin
if i in primerset then write(i,',');
end;
end;
procedure rez_file(var f:text);
var
i:word;
begin
for i:=1 to 30 do
if i in primerset then write(f,i,' ');
end;
begin
clrscr;
assign(fo,'out11n.out');
soz_file(fo);
close(fo);
assign(fi,'out11n.out');
assign(fo,'exam.dat');
assign(f,'rezul.dat');
rewrite(fo);
rewrite(f);
read_file(fo,fi,mas);
close(fi);
close(fo);
rez_file(f);
close(f);
readln;
END.
Результатом выполнения программы будет следующее:
Файл выводных данных exam.dat :
1 точка: x=-45 y=-43 z= 50 1 точка: x=-45 y= 50 z= 50 2 точка: x= 22 y= -1 z= 26 2 точка: x= 22 y= 26 z= 26 3 точка: x=-57 y= 56 z= 8 3 точка: x=-57 y= 8 z= 8 4 точка: x=-13 y= 22 z= 26 4 точка: x=-13 y= 26 z= 26 5 точка: x=-16 y= -4 z= 20 5 точка: x=-16 y= 20 z= 20 6 точка: x= 58 y=-46 z= 51 6 точка: x= 58 y= 51 z= 51 7 точка: x= 3 y= 52 z= 33 7 точка: x= 3 y= 33 z= 33 8 точка: x= 38 y=-17 z= 46 8 точка: x= 38 y= 46 z= 46 9 точка: x= 36 y=-14 z= 9 9 точка: x= 36 y= 9 z= 9 10 точка: x= 60 y=-41 z= -5 10 точка: x= 60 y= -5 z= -5 11 точка: x=-25 y=-37 z= 54 11 точка: x=-25 y= 54 z= 54 12 точка: x=-51 y= -9 z= -3 12 точка: x=-51 y= -3 z= -3 13 точка: x=-34 y=-34 z= 9 13 точка: x=-34 y= 9 z= 9 14 точка: x= 1 y=-59 z= 60 14 точка: x= 1 y= 60 z= 60 15 точка: x=-12 y=-44 z= -7 15 точка: x=-12 y= -7 z= -7 16 точка: x= 57 y= 59 z= -9 16 точка: x= 57 y= -9 z= -9 17 точка: x= -5 y=-42 z=-15 17 точка: x= -5 y=-15 z=-15 18 точка: x=-53 y= 31 z= 57 18 точка: x=-53 y= 57 z= 57 19 точка: x=-15 y=-11 z= 22 19 точка: x=-15 y= 22 z= 22 20 точка: x=-23 y=-39 z= 13 20 точка: x=-23 y= 13 z= 13 21 точка: x=-25 y=-15 z= 7 21 точка: x=-25 y= 7 z= 7 22 точка: x=-22 y= 59 z= 53 22 точка: x=-22 y= 53 z= 53 23 точка: x= 2 y=-41 z=-47 23 точка: x= 2 y=-47 z=-47 24 точка: x=-37 y= 36 z= 44 24 точка: x=-37 y= 44 z= 44 25 точка: x= 23 y= 1 z= 1 25 точка: x= 23 y= 1 z= 1 26 точка: x= 26 y=-50 z= -4 26 точка: x= 26 y= -4 z= -4 27 точка: x= 44 y= 38 z=-34 27 точка: x= 44 y=-34 z=-34 28 точка: x=-40 y= 31 z=-34 28 точка: x=-40 y=-34 z=-34 29 точка: x= 32 y= 33 z= 16 29 точка: x= 32 y= 16 z= 16 30 точка: x=-59 y=-26 z= 10 30 точка: x=-59 y= 10 z= 10 |
Файл выводных данных rezul.dat :
множество точек удаленных от центра тяжести (-4.33,-5.17,15.23) больше 15: 1 2 3 4 6 7 8 9 10 11 12 13 14 15 16 17 18 20 21 22 23 24 25 26 27 28 29 30 |
Вывод: Я ознакомилась с форматом и способами объявления множества; изучила возможные операций над множествами.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.