Контрольная работа по "Технологии програмирования"

Автор: Пользователь скрыл имя, 05 Октября 2011 в 17:47, контрольная работа

Краткое описание

контрольная по програмированию на языке паскаль

Файлы: 1 файл

Контрольная по ТП.doc

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

МИНИСТЕРСТВО  ОБРАЗОВАНИЯ И НАУКИ

РОССИЙСКОЙ  ФЕДЕРАЦИИ

ГОСУДАРСТВЕННОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ

ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ

КАМСКАЯ ГОСУДАРСТВЕННАЯ ИНЖЕНЕРНО-ЭКОНОМИЧЕСКАЯ АКАДЕМИЯ 

Кафедра «Сервис транспортных систем» 
 
 
 
 

КОНТРОЛЬНАЯ РАБОТА

По дисциплине «Технологии программирования» 
 

Вариант 5 
 
 
 
 
 
 
 
 
 
 
 
 
 

                                                        Выполнил: студент

                                                        Группы 2227

                                                        Галиакбаров Р.Н. 

                                                        Проверил: доцент

                                                        Беляев А.И. 
 
 
 
 
 

Набережные  Челны 
2011 год.

1. ЛИНЕЙНЫЕ АЛГОРИТМЫ

Описание  задачи

z1:=1-1/4sin22a+cos2a

z2:=cos2a+cos4a

Алгоритм  решения задачи

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Рис.1.1. Блок-схема алгоритма решения задачи

Реализация в Turbo Pascal

 

Program kontrolnaya;

Var z1, z2, a: Double;

begin

     WriteLn('enter a');

     ReadLn(a);

     z1:=1-(1/4)*sqr(sin(2*a))+cos(2*a);

     z2:=sqr(cos(a))+sqr(sqr(cos(a)));

     WriteLn('z1= ',z1,' z2= ',z2);

     ReadLn;

End.

Результаты  выполнения программы

 

2. АЛГОРИТМЫ С РАЗВЕТВЛЕНИЯМИ

Описание  задачи

  ,  x- нечетное, a > 0

e=  , y- четное, a < 0

      |axy|, во всех остальных случаях

Алгоритм  решения задачи

 

Реализация в Turbo Pascal

Program kontr2;

Var e,a: Double;

    x,y:Integer;

begin

     WriteLn('enter x, y, a ');

     ReadLn(x, y, a);

     If x mod 2<>0 then  e:=y*exp(Ln(x)/a)

     else if y mod 2=0 then e:=(a*x/2)*exp(Ln(y)/(-a))

     else e:=abs(a*x*y);

     WriteLn('e= ', e);

     ReadLn;

End.

Результаты  выполнения программы

3. АЛГОРИТМЫ С ЦИКЛАМИ

Описание  задачи

     Вычислить и вывести на экран в виде таблицы  значения функции, заданной с помощью  ряда Тейлора, на интервале от x1 до x2 с шагом dx с точностью ε. Таблицу снабдить заголовком и шапкой. Каждая строка таблицы должна содержать значение аргумента, значение функции и количество просуммированных членов ряда.

Алгоритм  решения задачи

 

Реализация в Turbo Pascal

 

const Maxlter=500;

var c,y,x,x1,x2,dx:Real;

    n,eps: Integer;

    done: boolean;

Begin

     Writeln('vvedite interval [x1,x2], tochnost, u shag');

     Readln(x1,x2,eps,dx);

     done:=true;

     x:=x1;

      c:=x;

      y:=c;

     n:=1;

     Writeln('____________________________________');

     Writeln('| Argument | Znachenie | K-vo iter |');

     Writeln('------------------------------------');

    While x<=x2  do

         begin

           c:=-c*sqr(x)/2/n/(2*n+1);

           y:=y+c;

           x:=x+dx;

           inc(n);

          Writeln('|', x:10:1,'|', y:10:eps,' | ',n ,'|');

           Writeln('------------------------------------');

            If n<=Maxlter then continue;

             done:=false;

             Break;

     End;

   ReadLn;

End.

Результаты  выполнения программы

4. ОДНОМЕРНЫЕ МАССИВЫ

Описание  задачи

     В одномерном массиве, состоящем из п вещественных элементов, вычислить:

  1. максимальный элемент массива;
  2. сумму элементов массива, расположенных до последнего положительного элемента.
  3. сжать массив, удалив из него все элементы, модуль которых находится в интервале [а, b]. Освободившиеся в конце массива элементы заполнить нулями.
 

Алгоритм  решения задачи

 
Реализация в Turbo Pascal

Program kontr4;

var

   n,i,j: 1..1000;

   a: array [1..1000] of integer;

   b,c: array [1..1000] of integer;

   max,sum,d,e: Integer;

Begin

     repeat;

     writeln('Введите число элементов n:');

     readln(n);

     until n>0;

     writeln('введите элементы массива с первого по ',n,'-й');

     max:= a[i];

      for i:=1 to n do

        begin

             write(i,': ');

             readln(a[i]);

             if a[i]>max then max:=a[i]

        end;

       i:=1;

       while a[i]>0 do

            for i:=1 to n do

            begin

                  sum:=sum+a[i];

            end;

           writeLn('  max= ', max,'; sum= ',sum);

           repeat;

           writeln('введите интервал сжатия массива [a,b]');

           readln(d,e);

           Until (abs(d)<abs(e));

     d:=abs(d);

     e:=abs(e);

     i:=1;

      for i:=1 to n do

         if (a[i]>=d) and (a[i]<=e) then write('0 ')

          else write(a[i],' ');

     readLn;

end.

Результаты  выполнения программы

 

5. ДВУМЕРНЫЕ МАССИВЫ

Описание  задачи

     Дана  целочисленная квадратная матрица. Определить:

     1) сумму элементов в тех столбцах, которые не содержат отрицательных элементов (оформить в виде функции);

     2) минимум среди сумм модулей  элементов диагоналей, параллельных  побочной диагонали матрицы (оформить  в виде процедуры).

Алгоритм  решения задачи

 

Реализация  в Turbo Pascal

Program z1;

uses crt;

const

    n=3;

type

   matr = array[1..n,1..n] of integer; 

var

   i,j,ks1,ks2,min:integer;

   a:matr;

   summb:boolean; 
 

procedure summd(m1:matr; var m:integer);

    var i,j,k:integer;

        s:array[1..n*2] of integer;

    begin

       k:=0;

       for i:=1 to n do begin

          for j:=1 to n do begin

            s[j+k]:=s[j+k]+abs(a[i,j]);

          end;

          k:=k+1;

       end;

       m:=s[1];

       for i:=1 to n*2-1 do

          if s[i]<m then m:=s[i];

    end;

function sum(j:integer):integer;

    var i,s:integer;

    begin

         s:=0

        for i:=1 to n do s:=s+a[i,j];

        sum:=s;

    end;

begin

    clrscr;

    writeLn('Введите элементы матрицы');

     for i:=1 to n do

     for j:=1 to n do

     begin

          writeln('');

          readLn(a[i,j]);

          GotoXY(j*8,i*2);

          write(a[i,j]:3);

    end;

    writeln;

    for j:=1 to n do begin

        summb:=true;

        for i:=1 to n do begin

            if a[i,j]<0 then summb:=false; 

        end;

        if summb then begin

           writeln('сумма', Ј,’го столбца = ',sum(j);

           ks1:=ks1+1;

        end; 

    end;

    if ks1=0 then writeln('Нет столбцов не содержащих отрицательных элементов');

    summd(a,min);

    writeln('Minimalnaya summa diagonalei paral gl diag: = ',min);

    readkey;

end.

Результаты  выполнения программы

6. СТРОКИ

Описание  задачи

     Дана  строка символов. Группы символов, разделенные одним или несколькими пробелами и не содержащие пробелов внутри себя, будем называть словами. Найти количество слов, первый и последний символы которых совпадают.

Алгоритм  решения задачи

 

 
Реализация  в Turbo Pascal

uses crt;

const rz=['_',':',';',',',' ','.','?','!'];

var s,s1:string;

    i,k,n:byte;

    f:boolean;

begin

clrscr;

writeln('Введите предложение');

readln(s);

n:=0;

i:=1;

while i<=length(s) do

if not(s[i] in rz)and ((i=1)or(s[i-1] in rz)) then

begin

  k:=i;s1:='';

  while not(s[k] in rz)and(k<=length(s))do

   begin

    s1:=s1+s[k];

    k:=k+1;

   end;

  if s1[1]=s1[length(s1)] then n:=n+1;

i:=i+length(s1);

end;

else i:=i+1;

Информация о работе Контрольная работа по "Технологии програмирования"