Цикл For
Листинг программы на Pascal
program pr7;
var x,sum:real;
var i:integer;
begin
readln(x);
sum:=0;
for i:=1 to 4 do
begin
sum:=sum + (2/( (i+x)*(i+x)*(i+x)));
end;
writeln(sum);
end.
Блок-схема
While
Нет
Да
Листинг программы на Pascal
program pr7n2;
var x,sum:real;
var i:integer;
begin
readln(x);
sum:=0;
i:=1;
while i<=4 do
begin
sum:=sum + (2/( (i+x)*(i+x)*(i+x)));
i:=i+1;
end;
writeln(sum);
end.
Блок-схема
Repeat
Нет
Да
Листинг программы Pascal
program pr7n3;
var x,sum:real;
var i:integer;
begin
readln(x);
sum:=0;
i:=1;
repeat
begin
sum:=sum + (2/( (i+x)*(i+x)*(i+x)));
i:=i+1;
end;
until i=5;
writeln(sum);
end.
Задание 8. Циклические вычислительные процессы. 3.5
Табулирование функции.
Б лок-схема
x:=i/2 y:=x*x*x+9*x*x+26*x+24
fx=2^x
fx=k/y
x:=x+0.5
x:=-5
y:=x*x*x+9*x*x+26*x+24
fx=2^x
fx=k/y
Да Нет
x:=-5
y:=x*x*x+9*x*x+26*x+24
fx=2^x
fx=k/y
Да Нет
x:=x+0.5
Нет
Нет
Да Да
Да Нет
на интервале , .
Листинг программы на Pascal
program pr8;
uses math;
var i:integer;
var k,x,y,fx:real;
begin
readln(k);
for i:=-10 to 4 do
begin
x:=i/2;
y:=x*x*x+9*x*x+26*x+24;
if y=0 then
fx:=power(2,x)
else
fx:=k/y;
writeln('f(',x:0:1,')=',fx:0:3);
end;
writeln('next');
x:=-5;
while x<=2 do
begin
y:=x*x*x+9*x*x+26*x+24;
if y=0 then
fx:=power(2,x)
else
fx:=k/y;
writeln('f(',x:0:1,')=',fx:0:3);
x:=x+0.5;
end;
writeln('next');
x:=-5;
repeat
begin
y:=x*x*x+9*x*x+26*x+24;
if y=0 then
fx:=power(2,x)
else
fx:=k/y;
writeln('f(',x:0:1,')=',fx:0:3);
x:=x+0.5;
end;
until x=2.5;
end.
Задание 9. Циклические вычислительные процесс.3.1. Последовательности.
Определить n первых членов рекуррентной последовательности
Для которой , , , . Найти сумму первых членов превышающих 0,1.
Блок-схема
k:=0
a[1]:=1
a[2]:=2
a[3]:=0.5
a[b]:=power(a[b-1],a[b-3])
k:=k+a[b]
Да Нет
Листинг программы на Pascal
program pr9;
uses math;
var b,n:integer;
var k:real;
var a:array[1..1000] of real;
begin
readln(n);
k:=0;
a[1]:=1;
a[2]:=2;
a[3]:=0.5;
for b:=4 to n do
a[b]:=power(a[b-1],a[b-3]);
for b:=1 to n do
if a[b]>0.1 then k:=k+a[b];
writeln(k);
end.
Задание 10. Одномерные массивы.4.1.
Ввести одномерный массив A из 12 элементов. Определить в нём среднее геометрическое квадратов нечётных элементов.
Блок-схема
j:=0 k:=1
Нет
Да
j:=j+1 k:=k*a[i]*a[i]
Листинг программы на Pascal
program pr10;
uses math;
var a:array[1..12] of integer;
var i,j:integer;
var k:real;
begin
j:=0;
k:=1;
for i:=1 to 12 do
begin
readln(a[i]);
if a[i] mod 2 =1 then
begin
j:=j+1;
k:=k*a[i]*a[i];
end;
end;
writeln(power(k, 1/j));
end.
Задание 11. Одномерные массивы. 4.2.
Ввести одномерный массив A из N элементов. Каждый элемент в
массиве чьё значение лежит в диапазоне [ 1; 10] умножить на 5. Массив вывести до и после преобразования.
Блок-схема
a[i]:=a[i]*5
Листинг программы на Pascal
program pr11;
var a:array[1..255] of real;
var n,i:integer;
begin
readln(n);
for i:=1 to n do
readln(a[i]);
writeln('before:');
for i:=1 to n do
writeln(a[i]:0:2);
for i:=1 to n do
if ((a[i]>=-1) and (a[i]<=10) )then
a[i]:=a[i]*5;
writeln('after:');
for i:=1 to n do
writeln(a[i]:0:2);
end.
Задание 12*. Одномерные массивы.4.3.Фильтрация данных в массив
Ввести одномерный массив A , вывести его. Вычислить разность
между суммой элементов, стоящих на четных местах, и суммой элементов, стоящих на нечетных местах. На полученную разность увеличить вторую
половину массива.
Блок-схема
k1:=k1+a[i]
a[i]:=a[i]+k1
Да Нет
k2:=k2+a[i]
k1:=k2-k1
n1:=n div 2
Листинг программы на Pascal
program pr12;
var a:array[1..255] of real;
var k1,k2:real;
var n,n1,i:integer;
begin
readln(n);
for i:=1 to n do
readln(a[i]);
writeln('before:');
for i:=1 to n do
writeln(a[i]:0:2);
for i:=1 to n do
if i mod 2 = 1 then
k1:=k1+a[i]
else
k2:=k2+a[i];
k1:=k2-k1;
n1:=n div 2;
for i:=n1+1 to n do
a[i]:=a[i]+k1;
writeln('after:');
for i:=1 to n do
writeln(a[i]:0:2);
end.
Задание 13. Двумерные массивы.5.1. Обработка матриц
Ввести двумерный массив . Определить в нём среднее арифметическое тех элементов, которые при делении на 4 дают остаток 1 или 3.
Блок-схема
Нет
Да
n:=n+1
k:=k+a[i,j]
k:=k/n
Листинг программы на Pascal
program pr13;
var a:array[1..4] of array[1..3] of integer;
var i,j,n:integer;
var k:real;
begin
for i:=1 to 4 do
for j:=1 to 3 do
readln(a[i,j]);
k:=0;
n:=0;
for i:=1 to 4 do
begin
for j:=1 to 3 do
begin
if ((a[i,j] mod 4 = 1) or (a[i,j] mod 4 = 3)) then
begin
n:=n+1;
k:=k+a[i,j];
end;
end;
end;
k:=k/n;
writeln('average=',k:0:3);
end.
Задание 14. Двумерные массивы.5.2.
Ввести двумерный массив . Каждый элемент в массиве больший 7 домножить на результат целочисленного деления этого элемента на 7. Массив вывести до и после преобразования.
Блок-схема.
Листинг программы на Pascal
program pr14; uses crt; var a: array [1..10,1..10] of integer; m, n, k, i, j:integer; begin write('Введите количество строк: '); readln(m); write('Введите количество столбцов: '); readln(n); for i:= 1 to m do for j:= 1 to n do begin write('Элемент ',i,'-ой строки, ',j,'-го столбца: '); readln(a[i,j]); end; writeln; writeln('Массив до преобразования:'); for i:= 1 to m do begin for j:= 1 to n do write(a[i,j]:3); writeln; end; writeln; writeln('Массив после преобразования:'); for i:= 1 to m do for j:= 1 to n do begin if a[i,j]>7 then begin k:=a[i,j]div 7; a[i,j]:= a[i,j]*k; end; end; for i:= 1 to m do begin for j:= 1 to n do write(a[i,j]:5); writeln; end; end.
Задание 15*. Двумерные массивы.5.3.
Ввести целочисленный двумерный массив , вывести его. Найти суммы элементов первой и последней строк матрицы. Далее увеличить на значение максимума всей матрицы ту строку (первую или последнюю), чья сумма окажется меньше.
Листинг программы на Pascal
Обработка отдельных строк (столбцов) матрицы и работа с диагоналями
program pr15;
var a:array[1..100] of array[1..100] of longint;
var n,m,i,j:integer;
var max, s1, s2:longint;
begin
readln(n);
readln(m);
for i:=1 to n do
for j:=1 to m do
readln(a[i,j]);
writeln('before:');
for i:=1 to n do
begin
for j:=1 to m do
begin
write(a[i,j]:4);
end;
writeln;
end;
max:=a[1,1];
for i:=1 to n do
for j:=1 to m do
if a[i,j]>max then max:=a[i,j];
s1:=0;
s2:=0;
for i:=1 to m do
begin
s1:=s1+a[1,i];
s2:=s2+a[n,i];
end;
if s1>s2 then
begin
for i:=1 to m do
a[n,i]:=a[n,i]+max;
end
else
for i:=1 to m do
a[1,i]:=a[1,i]+max;
writeln('after:');
for i:=1 to n do
begin
for j:=1 to m do
begin
write(a[i,j]:4);
end;
writeln;
end;
end.
Блок-схема
Задание 16. Подпрограммы.6.1.
Дважды вычислить значение выражения, первый раз используя процедуру,
а второй – функцию. ;
Блок-схема.
Листинг программы на Pascal
program pr16;
var x,y,z,a,b,c,s:real;
var a1,a2,a3,a4:real;
function pow(x:real;y:real):real;
var sign:integer;
begin
if x>0 then sign:=1;
if x<0 then sign:=-1;
if x=0 then sign:=0;
pow:=sign*exp(y*ln(abs(x)));
end;
procedure pw(x,y:real; var r:real);
var sign:integer;
begin
if x>0 then sign:=1;
if x<0 then sign:=-1;
if x=0 then sign:=0;
r:=sign*exp(y*ln(abs(x)));
end;
begin
readln(a,b,c,x,y,z);
s:=(pow(a,x)+pow(b,y)+pow(c,z))/sqrt(1+pow(2,a+b-2*c));
writeln('from funtion:');
writeln(s:0:3);
pw(a,x,a1);
pw(b,y,a2);
pw(c,z,a3);
pw(2,a+b-2*c,a4);
s:=(a1+a2+a3)/sqrt(1+a4);
writeln('from procedure:');
writeln(s:0:3);
end.
Задание 18. Файлы.1.1.Расчеты и обработка данных.
Ввести файл из 10 элементов. Найти сумму индексов четных элементов файла.
Блок-схема
.
Листинг программы на Pascal
program file18;
var
s:string;
f:text;
i,k:integer;
begin
k:=0;
writeln('Введите 10 чисел: ');
readln(s);
assign(f,'c:\file1.txt');
rewrite(f);
write(f,s);
close(f);
reset(f);
read(f,s);
close(f);
for i:=1 to length(s) do
begin
if strtoint(s[i]) mod 2=0 then k:=k+i;
end;
writeln('сумма: ',k);
end.
Задание 19. Файлы.1.2.Расчеты и обработка данных.
Ввести файл . Все нули в файле заменить единицами, а единицы нулями. Файл вывести до и после преобразования.
Блок-схема.
Листинг программы на Pascal
program file19;
var
s:string;
f:text;
i:integer;
begin
writeln('Введите числа: ');
readln(s);
assign(f,'c:\file1.txt');
rewrite(f);
write(f,s);
close(f);
reset(f);
read(f,s);
close(f);
writeln('Файл до преобразования: ');
writeln(s);
reset(f);
read(f,s);
close(f);
for i:=1 to length(s) do
begin
if s[i]='1' then s[i]:='0' else
if s[i]='0' then s[i]:='1';
end;
rewrite(f);
write(f,s);
close(f);
reset(f);
read(f,s);
close(f);
writeln('Файл после преобразования: ');
writeln(s);
end.
Задание 20*. Файлы.1.3 Сложная обработка элементов файлов.
Сформировать два файла целых чисел одинаковой длины и . Затем необходимо слить их в файл таким образом, чтобы сначала шла компонента из , потом из и т. д. В файле поменять местами минимальную и предпоследние компоненты. Файлы вывести до и после преобразования.
Блок-схема.
Листинг программы на Pascal
program pr20; var f1,f2,f3: file of integer; var n,x,min,mi,y,i:integer; begin assign(f1,'f1'); assign(f2,'f2'); assign(f3,'f3'); rewrite(f1); rewrite(f2); rewrite(f3); writeln('number of components in files:'); readln(n); writeln('enter components of f1:'); for i:=1 to n do begin readln(x); write(f1,x); end; writeln('enter components of f2:'); for i:=1 to n do begin readln(x); write(f2,x); end; close(f1); close(f2); reset(f1); reset(f2); for i:=1 to n do begin read(f1,x); write(f3,x); read(f2,x); write(f3,x); end; writeln('before:'); seek(f3,0); while not eof(f3) do begin read(f3,x); writeln(x); end; seek(f3,0); read(f3,min); mi:=0; for i:=0 to 2*n-1 do begin seek(f3,i); read(f3,x); if min>x then begin min:=x; mi:=i; end; end; seek(f3,mi); read(f3,x); seek(f3,2*n-2); read(f3,y); seek(f3,mi); write(f3,y); seek(f3,2*n-2); write(f3,x); writeln('after:'); seek(f3,0); while not eof(f3) do begin read(f3,x); writeln(x); end; close(f1); close(f2); close(f3); end.