Лабораторная работа №10
Вариант – 6
(из книги: “Алгоритмизация и программирование на
Турбо Паскале” В.C. Новичков)
{********************************************************}
{Программа:Lab10,Лабораторная работа #10,Вариант 6 }
{Цель:изучить основные приемы, способы и средства }
{ обнаружения и исправления ошибок в программах, }
{ написанных на языке Турбо Паскаль }
{Описание параметров и переменных: }
{a-аpгумент }
{a0-начальное значение аpгумента a }
{an-конечное значение аpгумента а }
{ax-вспомогательная переменная }
{b,b1,b2,b3,b4,b5-массивы }
{f-значение функции }
{i,j-паpаметpы цикла }
{ha-шаг изменения аpгумента a }
{hx-шаг изменения аpгумента x }
{k-вспомогательная переменная }
{n-вспомогательная переменная }
{n1-начальное значение для суммы }
{n2-конечное значение для суммы }
{na-число повтоpений цикла по паpаметpу i }
{nx-число повтоpений цикла по паpаметpу j }
{x-аpгумент }
{x0-начальное значение аpгумента x }
{xn-конечное значение аpгумента x }
{Программист:Юняев А.А.,гр.243 }
{Проверил:профессор Новичков В.С.,кафедра ВПМ }
{Дата написания:4.12.2002 год }
{********************************************************}
Program lab10;
{$i-}
uses crt;
const
max=100;
q=' ******* ';
type
mas=array [1..max] of real;
var
a,a0,an,ax,f,ha,hx,s,x,x0,xn:real;
j,i,k,n,na,n1,n2,nx:integer;
b,b1,b2,b3,b4,b5:mas;
Begin
clrscr;
writeln('Введите начальное значение переменной а,число большее нуля');
read(a0);
if (ioresult>0) or (a0<=0)
then
repeat
writeln('Неправильный ввод попробуйте ещё раз');
read(a0);
until (ioresult=0) and (a0>0);
writeln('Введите конечное значение переменной а, число большее ',a0:3:2);
read(an);
if (ioresult>0) or (an<=a0)
then
repeat
writeln('Неправильный ввод попробуйте ещё раз');
read(an);
until (ioresult=0) and (an>a0);
writeln('Введите шаг изменения для переменной а,число не меньшее 0.1');
read(ha);
if (ioresult>0) or (ha<=0) or (frac(ha)<0.1)
then
repeat
writeln('Неправильный ввод попробуйте ещё раз');
read(ha);
until (ioresult=0) and (ha>0) and (frac(ha)>=0.1);
writeln('Введите начальное значение переменной x,число большее нуля');
read(x0);
if (ioresult>0) or (x0<=0)
then
repeat
writeln('Неправильный ввод попробуйте ещё раз');
read(x0);
until (ioresult=0) and (x0>0);
writeln('Введите конечное значение переменной а, число большее ',x0:3:2);
read(xn);
if (ioresult>0) or (xn<=x0)
then
repeat
writeln('Неправильный ввод попробуйте ещё раз');
read(xn);
until (ioresult=0) and (xn>x0);
writeln('Введите шаг изменения для переменной x,число не меньшее 0.1');
read(hx);
if (ioresult>0) or (hx<=0)or (frac(hx)<0.1)
then
repeat
writeln('Неправильный ввод попробуйте ещё раз');
read(hx);
until (ioresult=0) and (hx>0) and (frac(hx)>=0.1);
writeln('Введите начальное значение для суммы - целое неотрицательное число');
read(n1);
if (ioresult>0) or (frac(n1)>0) or (n1<0)
then
repeat
writeln('Неправильный ввод попробуйте ещё раз');
read(n1);
until (ioresult=0) and (n1>=0);
writeln('Введите конечное значение для суммы - целое число,большее ',n1);
read(n2);
if (ioresult>0) or (frac(n2)>0) or (n1>=n2)
then
repeat
writeln('Неправильный ввод попробуйте ещё раз');
read(n2);
until (ioresult=0) and (n2>n1);
nx:=trunc((xn-x0)/hx)+1;{Вычисление числа повторений цикла по параметру i}
na:=trunc((an-a0)/ha)+1;{Вычисление числа повторений цикла по параметру j}
writeln;
readln;
writeln(q,'Начало проверки ввода исходных данных',q);
writeln;
readln;
writeln('Начальное значение переменной а = ',a0:3:2);{Эхо-печать}
writeln('Конечное значение переменной а = ',an:3:2); {Эхо-печать}
writeln('Шаг изменения переменной а = ',ha:3:2); {Эхо-печать}
writeln('Начальное значение переменной х = ',x0:3:2);{Эхо-печать}
writeln('Конечное значение переменной х = ',xn:3:2); {Эхо-печать}
writeln('Шаг изменения переменной х = ',hx:3:2); {Эхо-печать}
writeln('Начальное значение суммы ',n1); {Эхо-печать}
writeln('Конечное значение суммы ',n2);{Эхо-печать}
writeln;
readln;
writeln(q,'Конец проверки ввода исходных данных',q);
writeln;
readln;
writeln(q,'Начало проверки внутреннего цикла',q);
writeln;
writeln('Контрольная печать значений полученных в цикле с параметром');
writeln;
ax:=a0+x0;
s:=0;
j:=1;
for i:=n1 to n2 do {начало внутреннего цикла }
begin
s:=s+exp(i/2*ln(ax));{вычисление суммы}
write(' ',s:3:2); {вывод значения суммы}
b[j]:=s; {занесение значений суммы в массив b}
inc(j); {увеличение значения j на единицу}
end;{конец внутреннего цикла}
readln;
writeln;
writeln('Контрольная печать значений полученных в цикле с предусловием');
writeln;
n:=n1;
s:=0;
i:=1;
while n<=n2 do{начало цикла необходимого для проверки внутреннего цикла}
begin
s:=s+exp(n/2*ln(ax));
write(' ',s:3:2);
b1[i]:=s;
inc(n);
inc(i);
end;{конец цикла необходимого для проверки внутреннего цикла}
readln;
writeln;
readln;
writeln('Сравнение полученных результатов');
j:=0;
for i:=n1 to n2 do
if b[i]<>b1[i]
then
inc(j);
if j>0
then
writeln('Вложенный цикл работает неправильно')
else
writeln('Вложенный цикл работает правильно');
writeln;
writeln(q,'Конец проверки работы внутреннего цикла',q);
writeln;
readln;
writeln(q,'Начало проверки работы цикла по переменной a',q);
writeln;
writeln('Контрольная печать значений полученных в цикле с параметром');
x:=x0;
a:=a0;
n:=1;
for j:=1 to na do{начало цикла по переменной а}
begin
ax:=a+x;
s:=0;
for i:=n1 to n2 do {начало цикла по параметру i, необходимого для вычисления значения суммы}
s:=s+exp(i/2*ln(ax));
f:=s*ax/3;
b2[n]:=f;
write (' ',f:3:2);
a:=a+ha;
inc(n);
end;{конец цикла по переменной а}
writeln;
a:=a0;
n:=1;
writeln;
writeln('Контрольная печать значений полученных в цикле с предусловием');
while na>=n do{начало цикла необходимого для проверки цикла по переменной а}
begin
ax:=a+x;
s:=0;
for i:=n1 to n2 do {начало цикла по параметру i, необходимого для вычисления значения суммы}
s:=s+exp(i/2*ln(ax));
f:=s*ax/3;
b3[n]:=f;
write (' ',f:3:2);
a:=a+ha;
inc(n);
end; {конец цикла необходимого для проверки цикла по переменной а}
writeln;
readln;
i:=0;
readln;
writeln('Сравнение полученных результатов');
for j:=1 to nx do
if b2[j]<>b3[j]
then
inc(i);
if i>0
then
writeln('Цикл по пременной a работает неправильно ')
else
writeln('Цикл по пременной а работает правильно');
writeln;
writeln(q,'Конец проверки работы цикла по переменной а',q);
writeln;
readln;
writeln(q,'Начало проверки работы цикла по переменной х',q);
x:=x0;
a:=a0;
k:=1;
writeln('Контрольная печать значений полученных в цикле с параметром');
for i:=1 to nx do {начало цикла по переменной x}
begin
for j:=1 to na do {начало вложенного цикла по переменной а}
begin
ax:=a+x;
s:=0;
for n:=n1 to n2 do {начало цикла по параметру n, необходимого для вычисления значения суммы}
s:=s+exp(n/2*ln(ax));
a:=a+ha;
f:=ax*s/3;
write(' ',f:3:2);
end;
b4[k]:=f;
x:=x+hx;
inc(k);
end; {конец цикла по переменной а}
writeln;
writeln('Контрольная печать значений полученных в цикле с предусловием');
x:=x0;
a:=a0;
k:=1;
while k<=nx do {начало цикла необходимого для проверки цикла по переменной x}
begin
for j:=1 to na do {начало вложенного цикла по переменной а}
begin
ax:=a+x;
s:=0;
for n:=n1 to n2 do {начало цикла по параметру n, необходимого для вычисления значения суммы}
s:=s+exp(n/2*ln(ax));
a:=a+ha;
f:=ax*s/3;
write(' ',f:3:2);
end;
b5[k]:=f;
x:=x+hx;
inc(k);
end;
writeln;
readln;
writeln('Сравнение полученных результатов');
i:=0;
for j:=1 to nx do
if b4[j]<>b5[j]
then
inc(i);
if i>0
then
writeln('Цикл по переменной х работает неправильно')
else
writeln('Цикл по переменной х работает правильно');
writeln;
writeln(q,'Конец проверки цикла по пременной х',q);
readln;
End.
|