Контрольная работа по "Информатике"

Автор: Пользователь скрыл имя, 18 Июня 2013 в 00:10, контрольная работа

Описание работы

Составить программу вычисления функций X и Y, приведенных в табл. 1. Числовые значения переменных а, Ь, с приведены в табл. 2. Исходные данные ввести с клавиатуры, считая, что каждое из числовых значений переменных вводится после подсказки (в диалоговом режиме), причем переменные a и b - вещественного типа, переменная с - целого типа.
После ввода исходных данных напечатать заголовок: "Исходные данные" и, пропустив две строки, вывести исходные данные, снабдив их пояснениями.
Результаты вычислений х и у вывести на печать по спецификации Е, отведя на каждое число по 15 позиций с тремя знаками после десятичной точки. Результат снабдить заголовком "Результат счета", отступив две строки от распечатки исходных данных.
В задаче необходимо предусмотреть проверку корректности вычислений:
1) деление на 0;
2) логарифм отрицательного числа и др.
В случае обнаружения ошибки программа должна выдать об этом сообщение и обеспечить повторный ввод измененных данных.

Работа содержит 1 файл

ОТЧЕТ.doc

— 453.00 Кб (Скачать)

ЗАДАЧА 1

  1. Постановка задачи

Составить программу вычисления функций  X и Y, приведенных в табл. 1. Числовые значения переменных а, Ь, с приведены в табл. 2. Исходные данные ввести с клавиатуры, считая, что каждое из числовых значений переменных вводится после подсказки (в диалоговом режиме), причем переменные a и b - вещественного типа, переменная с - целого типа.

После ввода исходных данных напечатать заголовок: "Исходные данные" и, пропустив  две строки, вывести исходные данные, снабдив их пояснениями.

Результаты вычислений х и у вывести на печать по спецификации Е, отведя на каждое число по 15 позиций с тремя знаками после десятичной точки. Результат снабдить заголовком "Результат счета", отступив две строки от распечатки исходных данных.

В задаче необходимо предусмотреть проверку корректности вычислений:

1) деление на 0;

2) логарифм отрицательного числа  и др.

В случае обнаружения ошибки программа  должна выдать об этом сообщение и  обеспечить повторный ввод измененных данных.

 

Таблица 1.

Функции

Условие

 


 

Таблица 2.

Числовые значения переменных

a

b

c

719,460

-0,0047∙107

-7752


 

  1. Форма представления исходных данных и результатов расчета

Исходные данные ввести с клавиатуры. Каждое из числовых значений переменных вводится после подсказки (в диалоговом режиме), причем переменные a и b - вещественного типа, переменная с - целого типа.

После ввода исходных данных печатается заголовок: "Исходные данные" и, пропустив две строки, выводятся исходные данные, с пояснениями.

Результаты вычислений х и у  выводятся на печать по спецификации Е, с отведением на каждое число по 15 позиций с тремя знаками после десятичной точки. Результат снабжен заголовком "Результат счета" с отступом в две строки от распечатки исходных данных.

В задаче предусмотрена проверка корректности вычислений. В случае обнаружения ошибки программа должна выдает об этом сообщение и обеспечивает повторный ввод измененных данных.

 

Результат работы программы на Fortran

Результат работы программы на Pascal

 

  1. Схема алгоритма

 

  1. Тексты программ

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),2))+exp(a*x+b)

       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.273)/(10*sign(a-b*b))

       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(pow(x,2),1/5)-0.7)/(tan(pow(x,3))-b*sin(x));

      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))**2)+exp(a*x+b)

     endif

  elseif (abs(a**2-b**2).eq.1.5*x) then

  if ((a-b**2.eq.0).or.(acos(x).eq.0)) then

         write(*,'(1x,a)') 'Delenie na 0'

         write(*,*) ''

flag=0  

     else     

      y=exp(sin(x))+b*(atan(x)+0.273)/(sign(10.0,a-b**2))

     endif

    else

   if ((x.eq.0).or.(cos(x**3).eq.0).or.(tan(x**3)-b*sin(x).eq.0)) then 

        write(*,'(1x,a)') 'Delenie na 0'

      write(*,*) ''

flag=0

else

      y=(x**(-3)-b)*cos(3*(x**2)**(1.0/5)-0.7)/(tan(x**3)-b*sin(x))

        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

 

ЗАДАЧА 2

  1. Постановка задачи

Используя оператор цикла, составить программу, выполняя следующие условия:

1. Исходные данные вводятся с клавиатуры в диалоговом режиме.

2. Результаты расчета выводятся на монитор и в файл.

3. Результаты счета выводятся по вещественному формату. Перед выводом результата напечатать: "Результат", поместив его на 30-й позиции строки. Отступив строку, напечатать числовые значения результатов счета.

Вычислить среднее арифметическое элементов массива А(10,12).

  1. Форма представления исходных данных и результатов расчета

Исходные данные вводятся с клавиатуры в диалоговом режиме. Результаты расчета выводятся на монитор и в файл. Результаты счета  выводятся по вещественному формату. Перед выводом результата печатается: "Результат", помещенное на 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


Информация о работе Контрольная работа по "Информатике"