Автор: Пользователь скрыл имя, 18 Июня 2013 в 00:10, контрольная работа
Составить программу вычисления функций X и Y, приведенных в табл. 1. Числовые значения переменных а, Ь, с приведены в табл. 2. Исходные данные ввести с клавиатуры, считая, что каждое из числовых значений переменных вводится после подсказки (в диалоговом режиме), причем переменные a и b - вещественного типа, переменная с - целого типа.
После ввода исходных данных напечатать заголовок: "Исходные данные" и, пропустив две строки, вывести исходные данные, снабдив их пояснениями.
Результаты вычислений х и у вывести на печать по спецификации Е, отведя на каждое число по 15 позиций с тремя знаками после десятичной точки. Результат снабдить заголовком "Результат счета", отступив две строки от распечатки исходных данных.
В задаче необходимо предусмотреть проверку корректности вычислений:
1) деление на 0;
2) логарифм отрицательного числа и др.
В случае обнаружения ошибки программа должна выдать об этом сообщение и обеспечить повторный ввод измененных данных.
Составить программу вычисления функций X и Y, приведенных в табл. 1. Числовые значения переменных а, Ь, с приведены в табл. 2. Исходные данные ввести с клавиатуры, считая, что каждое из числовых значений переменных вводится после подсказки (в диалоговом режиме), причем переменные a и b - вещественного типа, переменная с - целого типа.
После ввода исходных данных напечатать заголовок: "Исходные данные" и, пропустив две строки, вывести исходные данные, снабдив их пояснениями.
Результаты вычислений х и у вывести на печать по спецификации Е, отведя на каждое число по 15 позиций с тремя знаками после десятичной точки. Результат снабдить заголовком "Результат счета", отступив две строки от распечатки исходных данных.
В задаче необходимо предусмотреть проверку корректности вычислений:
1) деление на 0;
2) логарифм отрицательного числа и др.
В случае обнаружения ошибки программа должна выдать об этом сообщение и обеспечить повторный ввод измененных данных.
Таблица 1.
Функции |
Условие |
|
|
Таблица 2.
Числовые значения переменных | ||
a |
b |
c |
719,460 |
-0,0047∙107 |
-7752 |
Исходные данные ввести с клавиатуры. Каждое из числовых значений переменных вводится после подсказки (в диалоговом режиме), причем переменные a и b - вещественного типа, переменная с - целого типа.
После ввода исходных данных печатается заголовок: "Исходные данные" и, пропустив две строки, выводятся исходные данные, с пояснениями.
Результаты вычислений х и у выводятся на печать по спецификации Е, с отведением на каждое число по 15 позиций с тремя знаками после десятичной точки. Результат снабжен заголовком "Результат счета" с отступом в две строки от распечатки исходных данных.
В задаче предусмотрена проверка корректности вычислений. В случае обнаружения ошибки программа должна выдает об этом сообщение и обеспечивает повторный ввод измененных данных.
Результат работы программы на Fortran
Результат работы программы на Pascal
Pascal
Program zad1;
uses crt;
var a,b: real;
c, err: integer;
y, x: real;
function tan(x: real):real;
begin
tan:=sin(x)/cos(x);
end;
function sign(x: real):integer;
begin
if x>0 then sign:=1
else if x=0 then sign:=0
else sign:=-1;
end;
function lg(x:real):real;
begin
lg:=ln(x)/ln(10);
end;
function pow(arg:real; pw:real):real;
var
l: integer;
power: real;
begin
if (arg<0) then power:= (-1)*exp(pw*ln(abs(arg)))
else if (arg>0) then power:=exp(pw*ln(abs(arg)))
else power:=0;
l:=round(pw);
if (l mod 2 = 0) then power:=abs(power);
if (pw=0) then power:=1;
pow:=power;
end;
begin
while (true) do begin
clrscr;
err:=0;
write('Введите a, b, c: '); readln(a, b, c);
writeln('Исходные данные: ');
writeln;
writeln;
writeln('a = ',a:5:3);
writeln('b = ',b:5:3);
writeln('c = ',c:5);
if a*a-c<=0 then
err:=1
else
x:=1-lg(sqrt(a*a-c));
if abs(a*a-b*b)<1.5*x then
if sin(x)+pow(cos(a*x),2)<0 then
begin
err:=1;
end
else
y:=a*sqrt(sin(x)+pow(cos(a*x),
else if (abs(a*a-b*b)<1.5*x) then
if (a-b*b=0) then
begin
err:=1;
end
else
y:=exp(sin(x))+b*(arctan(x)+0.
else
if (x=0) or (cos(x)=0) or (tan(pow(x,3))-b*sin(x)=0) then
begin
err:=1;
end
else
y:=(pow(x,-3)-b)*cos(3*pow(
if (err=0) then
begin
writeln;
writeln;
writeln('Результат расчета : ');
writeln('x = ',x:15:3);
writeln('y = ',y:15:3);
readln;
exit;
end
else
begin
writeln('Невозможные исходные данные. Введите новые исходные данные');
readln;
end;
end;
end.
Fortran
program prog1
real*8 a, b, x, y
integer c, flag
flag=0
while (flag.eq.0) do
flag=1;
Print *, 'Input a, b, c'
read (*,*) a,b,c
write(*,'(1x,a)') 'Ishodnie dannie :'
write(*,*) ''
write(*,*) ''
write(*,'(1x,a,f15.3)') 'a=',a
write(*,'(1x,a,f15.3)') 'b=',b
write(*,'(1x,a,i15)') 'c=',c
if (a**2-c.le.0) then
write(*,'(1x,a)') 'Nedopustimie ishohnie dannie'
write(*,*) ''
flag=0
else
x=1-log10(sqrt(a**2-c))
if (abs(a**2-b**2).lt.1.5*x) then
if (sin(x)+(cos(a*x))**2.lt.0) then
write(*,'(1x,a)') 'Nedopustimie ishohnie dannie'
write(*,*) ''
flag=0
else
y=a*sqrt(sin(x)+(cos(a*x))*
endif
elseif (abs(a**2-b**2).eq.1.5*x) then
if ((a-b**2.eq.0).or.(acos(x).eq.
write(*,'(1x,a)') 'Delenie na 0'
write(*,*) ''
flag=0
else
y=exp(sin(x))+b*(atan(x)+0.
endif
else
if ((x.eq.0).or.(cos(x**3).eq.0).
write(*,'(1x,a)') 'Delenie na 0'
write(*,*) ''
flag=0
else
y=(x**(-3)-b)*cos(3*(x**2)**
endif
endif
endif
enddo
write(*,*) ''
write(*,*) ''
write(*,'(1x,a)') 'Rezultat s4eta: '
write(*,'(1x,a,e15.3)') 'x=',x
write(*,'(1x,a,e15.3)') 'y=',y
end
Используя оператор цикла, составить программу, выполняя следующие условия:
1. Исходные данные вводятся с клавиатуры в диалоговом режиме.
2. Результаты расчета выводятся на монитор и в файл.
3. Результаты счета выводятся по вещественному формату. Перед выводом результата напечатать: "Результат", поместив его на 30-й позиции строки. Отступив строку, напечатать числовые значения результатов счета.
Вычислить среднее арифметическое элементов массива А(10,12).
Исходные данные вводятся с клавиатуры в диалоговом режиме. Результаты расчета выводятся на монитор и в файл. Результаты счета выводятся по вещественному формату. Перед выводом результата печатается: "Результат", помещенное на 30-й позиции строки. Отступив строку, напечатаны числовые значения результатов счета.
Результат работы программы на Fortran
Результат работы программы на Pascal
Файл, созданный в результате работы программы
Pascal
Program prog2;
uses crt;
var n,m,i,j: integer;
sred:real;
A: array[1..10,1..12] of integer;
fl: text;
begin
clrscr;
write('Введите размерность массива n,m: ');
readln(n,m);
for i:=1 to n do
for j:=1 to m do begin
write('Введите A[',i,',',j,']: ');
readln(A[i,j]);
end;
assign(fl,'1.txt');
rewrite(fl);
sred:=0;
writeln('Введенный массив:');
writeln(fl,'Введенный массив:');
for i:=1 to n do begin
for j:=1 to m do begin
write(A[i,j]:4);
write(fl,A[i,j]:4);
sred:=sred+A[i,j];
end;
writeln('');
writeln(fl,'');
end;
sred:=sred/(n*m);
writeln;
writeln('Среднее арифметическое = ', sred:7:3);
writeln(fl,'Среднее арифметическое = ', sred:7:3);
close(fl);
readln;
end.
Fortran
program prog2
integer n, m, i, j
real sred, A(1:10,1:12)
Print *, 'Vvedite razmernost` massiva n, m'
read (*,*) n,m
Print *, 'Vvedite massiv '
read(*,*) ((A(i,j), i=1,n),j=1,m)
open(unit=5, file='c:\123.txt')
sred=0;
print *, 'Vvedennij massiv:'
write(5, *) 'Vvedennij massiv:'
do i=1,n
do j=1,m
print '(1x,f6.2,$)', A(i,j)
write(5,'(1x,f6.2,$)') A(i,j)
sred=sred+A(i,j)
enddo
write(*,*)
enddo
sred=sred/(n*m)
write(*,'(1x,a30)') 'Rezul`tat:'
print *, 'Srednee arifmeti4eskoe elementov = ', sred
write(5,'(1x,a,f6.2,$)') 'Srednee arifmeti4eskoe elementov = ', sred
read (*,*)
end