Автор: Пользователь скрыл имя, 08 Декабря 2011 в 08:53, контрольная работа
Определить, лежиттли заданная точка на одной из сторон треугольника, заданого координатами своих вершин.
B - массив из минимальных элементов строк матрицы A
min - минимальный элемент в каждой строке матрицы А}
Var n,i,j,NumI,NumJ:Integer;
A:array[1..Nmax,1..Nmax] of Integer;
B:array[1..Nmax] of Integer;
min:Integer;
begin
{Задание размера исходной матрицы}
Write('n = '); Readln(n);
{Матрица заполняется случайными целыми числами из промежутка (-100; 102)}
Randomize;
For i:=1 to n do
begin
For j:=1 to n do
begin
A[i,j]:=100-random(200);
{Вывод элемента матрицы на экран}
Write(A[i,j],' ')
end;
Writeln;
end;
Writeln;
{Решение основной задачи}
For i:=1 to n do
begin
{Минимальным значением назначается первый элемент каждой строки}
Min:=A[i,1]; NumI:=i; NumJ:=1;
For j:=1 to i do
{Если текущий элемент окажется меньше, то он становится меньшим}
if A[i,j]<Min then
begin
min:=A[i,j];
NumI:=I;
NumJ:=J;
end;
{Найденный элемент из матрицы записывается в массив B и выводится на экран}
B[i]:=A[NumI,NumJ];
Write(B[I] ' ');
end;
Writeln;
Readln
end.
Задача 5
Дан текстовый файл с именем NameT, содержащий таблицу из трех столбцов вещественных чисел. Ширина столбцов таблицы и способ их выравнивания являются произвольными. Специальных символов-разделителей таблица не содержит. Создать файлы вещественных чисел с именами Name1, Name2 и Name3, каждый из которых содержит числа из соответствующего столбца таблицы. Вычислить количество чисел, их сумму, среднее значение для каждого столбца.
Блок-схема алгоритма
Текст программы
Program N_5;
Const Nt='Namet.txt';
N1='Name1.rl';
N2='Name2.rl';
N3='Name3.rl';
Var n,Count1,Count2,Count3,i,j:
A,S1,S2,S3,Sr1,Sr2,Sr3:Real;
NameT:text;
Name1,Name2,Name3: file of real;
begin
{Все исходные данные формируются случайным образом}
Randomize;
n:=random(1000)+1;
Assign(NameT,Nt);
Rewrite(NameT);
{Формирование файла из трех столбцов}
For i:=1 to (n div 3) do
begin
For j:=1 to 3 do
begin
A:=200-random*100;
Write(NameT,A,' ');
end;
Writeln(NameT);
end;
{Запись в файл остальных из n чисел, не вошедших в предыдущем сеансе}
if (n div 3*3)<n then
For i:=n div 3*3 to n do
begin
A:=200-random*100;
Write(NameT,A,' ');
end;
Close(NameT);
assign(Name1,N1);
Rewrite(Name1);
assign(Name2,N2);
Rewrite(Name2);
assign(Name3,N3);
Rewrite(Name3);
i:=1;
Count1:=0; Count2:=0; Count3:=0;
S1:=0; S2:=0; S3:=0;
Reset(NameT);
While Not Eof(NameT) do
begin
Read(NameT,A);
case (i mod 3) of
1: begin
Write(Name1,A);
Inc(Count1);
S1:=S1+A;
Inc(i);
end;
2: begin
Write(Name2,A);
Inc(Count2);
S2:=S2+A;
Inc(i);
end;
0: begin
Write(Name3,A);
Inc(Count3);
S3:=S3+A;
Inc(i);
end;
end;
end;
Close(NameT);
Close(Name1);
Close(Name2);
Close(Name3);
Sr1:=S1/Count1;
Sr2:=S2/Count2;
Sr3:=S3/Count3;
Writeln('1. Count = ',Count1,' ','S = ',S1:0:4,' ','Sr = ',Sr1:0:4);
Writeln('2. Count = ',Count2,' ','S = ',S2:0:4,' ','Sr = ',Sr2:0:4);
Writeln('3. Count = ',Count3,' ','S = ',S3:0:4,' ','Sr = ',Sr3:0:4);
Readln;
end.
Задача 6
Дано четное число n>2, проверить для этого числа гипотезу Гольдбаха. Эта гипотеза заключается в том, что каждое четное n, большее двух, представляется в виде суммы двух простых чисел. (Определить процедуру, позволяющую распознавать простые числа).
Блок-схема алгоритма
Текст программы
Program N_6;
var n,a,b:Word;
{Проверка числа, простое ли оно. Если простое, то false, иначе - true}
Function Verify(m:Word):Boolean;
var i:word;
Rez:Boolean;
begin
{Пропускаем из проверки все четные, кроме 2}
if (m=1) or ((m<>2) and not odd(m)) then Rez:=True else
{Пропускаем 2 и 3 - они простые}
if (m=2) or (m=3) then Rez:=False else
begin
{Проверяем делимость остальных чисел на все натуральные от 2 до половины m}
For i:=2 to (m div 2) do
begin
{Если число m делится на текущее натуральное прекращаем проверку}
Rez:=m mod i=0;
if rez then break;
end;
end;
Verify:=Rez;
end;
{Процедура, подбирающая простые а и b, сумма которых равна n}
Procedure Goldbah(n:Word);
var i,j:Word;
begin
For i:=2 to n-1 do
begin
a:=i;
if Not Verify(a) then
begin
if Not Verify(n-a) then
begin
b:=n-a;
Writeln(a, ' + ',b,' = ',n);
end;
end;
end;
end;
begin
Write('n = '); Readln(n);
Unil n mod 2=0;
Goldbah(n);
Readln
end.
Задача 7
Вычислить бесконечную сумму с заданной точностью e (e>0 и может быть 0,1; 0,01; 0,001 и т. д.). Считать, что требуемая точность достигнута, если вычислена сумма нескольких первых слагаемых и очередное слагаемое оказалось по модулю меньше, чем e, - это и все оследующие слагаемые можно не учитывать.
Даны действительные числа x, e (x¹0, e>0) и целые числа k и n. Вычислить сточностью e
.
Некоторые размышления к задаче:
Очевидно, что если |x|<1, то модуль каждого следующего слагаемого будет ворастать, и задача решена быть не может, т. к. некоторое (возможно, первое) слагаемое будет больше 1, что не соответствует условию задачи. Поэтому значение x по модулю должно быть больше 1.
Блок-схема алгоритма
Текст программы
Program N_7;
Var Eps, x,S,a,d:Real;
k,n:Word;
begin
Write('Epsilon = '); Readln(Eps);
Repeat
Write('x = '); Readln(x);
if x<=1 then Writeln('Error: x>1');
until x>1;
Write('n = '); Readln(n);
S:=0;
if n mod 2<>0
then a:=-5/Exp(4*ln(x))
else a:=5/Exp(4*ln(x));
k:=2;
d:=(4*k+5)*(2*k-1)/Exp(4*ln(x)
while Abs(a*d)>=Eps do
begin
S:=S+a;
a:=a*d;
k:=k+1;
d:=(4*k+5)*(2*k-1)/Exp(4*ln(x)
end;
Writeln('S = ',S:0:7);
Readln;
end.
Информация о работе Контрольная работа по «Программирование на языках высокого уровня»