Pascal. Массивы

Автор работы: Пользователь скрыл имя, 02 Июня 2013 в 13:44, курсовая работа

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

1. Имеется файл, в котором содержится размерность массива и его элементы. Вычислить:
А. максимальный по модулю элемент массива;
В. сумму элементов массива, расположенных между первым и вторым положительными элементами.
Полученные результаты записать в новый файл.

Прикрепленные файлы: 7 файлов

zad1.pas

— 2.51 Кб (Скачать документ)

zad1_in.txt

— 112 байт (Скачать документ)

zad1_out.txt

— 141 байт (Скачать документ)

zad2.pas

— 2.56 Кб (Скачать документ)

zad2_in.txt

— 308 байт (Скачать документ)

zad2_out.txt

— 811 байт (Скачать документ)

Курсовая.doc

— 202.00 Кб (Скачать документ)

1. Имеется файл, в котором содержится размерность массива и его элементы. Вычислить:

А. максимальный по модулю элемент массива;

В. сумму элементов  массива, расположенных между первым и вторым положительными элементами.

Полученные результаты записать в новый файл.

 

Блок-схема

 

 

 

 

 

Текст программы (Pascal)

 

program zadacha_1;

var

a: array [0..1000] of longint;

i,j,max_index: integer;

first_index, second_index: integer;

max: longint;

summa: longint;

t: text;

begin

   write('В файл zad1_in.txt внесите длину массива и его элементы и нажмите Enter');

   assign(t,'zad1_in.txt');

   reset(t);

   read(t,a[0]);

    if a[0]>0 then begin

     for i:= 1 to a[0] do begin

     read(t,a[i]);

   end;

   end

   else begin

   writeln('Некорректные данные (длина массива)!');

   end;

   close(t);

   if a[0]>0 then begin

     max:=abs(a[1]);

     max_index:=1;

     for i:= 1 to a[0] do begin

     if abs(a[i]) > max then begin

     max:=abs(a[i]);

     max_index:=i;

     end;

     end;

   end;

   if a[0]>0 then begin

     first_index:=0;

     second_index:=0;

     summa:=0;

     i:=1;

     while (i<=a[0]) and (second_index=0) do begin

     if a[i]>0 then begin

     if first_index=0 then begin

     first_index:=i;

     i:=i+1;

     end

     else begin

     second_index:=i;

    end

    end

     else begin

     i:= i+1;

     end;

    end;

    if (first_index<>0) and (second_index<>0) then begin

     for i:= first_index+1 to second_index-1 do begin

     summa:= summa + a[i];

     end;

     end;

  end;

   assign(t,'zad1_out.txt');

   rewrite(t);

   writeln(t,'Максмальный  элемент стоит на ',max_index,' позиции');

   writeln('Максмальный  элемент стоит на ',max_index,' позиции');

   writeln(t,'И  равен ',a[max_index]);

   writeln('И  равен ',a[max_index]);

   writeln(t);

   writeln(t,'Сумма элементов между первыми двумя положительными элементами равна ',summa);

   writeln('Сумма  элементов между первыми двумя  положительными элементами равна  ',summa);

   close(t);

   writeln('* Ответ  содержится в zad1_out.txt');

end.

 

 

Тест

 

В файл zad1_in.txt вводим сначала размерность массива, в данном случае – 25, и его элементы.

 

 

 

 

 

Затем запускаем программу ZAD1.exe

 

 

 

 

Находим решение задачи в файле zad1_out.txt

 

 

2. Соседями элемента Aij в матрице назовем элементы Akl где i-1 ≤ k ≤ i+1, j-1 ≤ l ≤ j+1, (k,l) ≠ (i,j). Операция сглаживания даёт новую матрицу того же размера, каждый элемент которой получается как среднее арифметическое имеющихся соседей соответствующего элемента исходной матрицы.

А. построить результат сглаживания  заданной вещественной матрицы размером 10 х 10 (оформить в виде процедуры);

Б.  в сглаженной матрице найти  сумму модулей элементов расположенных  ниже главной диагонали (оформить в  виде функции).

 

Блок-схема

 

                         

 

 

Текст программы (Pascal)

 

program zadacha_2;

type

matrix= array [0..11,0..11] of real;

var

 a,b: matrix;

 i,j: integer;

 t: text;

 summa_modulei: real;

procedure sglajivanie_ij(var x,y: integer);

var

  i,j: integer;

  summa: real;

  elementov: shortint;

  begin

   summa:=0;

   elementov:=0;

   for i:= x-1 to x+1 do begin

    for j:= y-1 to y+1 do begin

     if (i=x) and (j=y) then begin

     end

     else begin

      if (i=0) or (i=11) or (j=0) or (j=11) then begin

      end

      else begin

       summa:= summa + a[i,j];

       elementov:= elementov + 1;

      end;

     end;

    end;

  end;

  b[x,y]:= summa/elementov;

end;

function modul_ij(var x,y: integer): real;

var

i: integer;

begin

modul_ij:=abs(b[x,y]);

end;

begin

   for i:= 0 to 11 do

    for j:= 0 to 11 do begin

    a[i,j]:=0;

    b[i,j]:=0;

   end;

  assign(t,'zad2_in.txt');

  reset(t);

   for i:= 1 to 10 do begin

    for j:= 1 to 10 do begin

    read(t,a[i,j]);

    end;

   end;

  i:=1;

   while i<=10 do begin

    j:=1;

    while j<=10 do begin

    sglajivanie_ij(i,j);

    j:=j+1;

    end;

    i:=i+1;

   end;

  summa_modulei:=0;

  i:=1;

   while i<=10 do begin

    j:=i-1;

    while j>=1 do begin

    summa_modulei:= summa_modulei + modul_ij(i,j);

    j:=j-1;

    end;

    i:=i+1;

   end;

  assign(t,'zad2_out.txt');

  rewrite(t);

   for i:= 1 to 10 do begin

    for j:= 1 to 10 do begin

    write(t,b[i,j]:0:2,'  ');

    end;

    writeln(t);

   end;

  writeln(t);

  write(t,'Сумма модулей элементов сглаженной матрицы, лежащих ниже главной диагонали, равно

  ',summa_modulei:0:2);

  writeln('Сумма  модулей элементов сглаженной  матрицы, лежащих ниже главной  диагонали, равно

  ',summa_modulei:0:2);

  close(t);

  writeln('Ответ содержится в zad2_out.txt');

  writeln('Нажмите  Enter');

end.

 

Тест

 

 

В файл zad2_in.txt вводим матрицу размером 10x10

 

 

Затем запускаем программу ZAD2.exe

 

 

 

 

 

Находим решение задачи в файле zad2_out.txt

 


Информация о работе Pascal. Массивы