Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
КР по Программированию.doc
Скачиваний:
3
Добавлен:
06.08.2019
Размер:
302.08 Кб
Скачать

Цикл 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.