Структурированные типы данных языка программирования Pascal

Автор работы: Пользователь скрыл имя, 18 Января 2012 в 09:53, лабораторная работа

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

Цель: Сформировать навыки создания и использования структурированных типов при написании программ на языке Pascal; изучить особенности использования и области применения массивов, записей, множеств и файлов.

Файлы: 1 файл

Лабораторная работа.doc

— 73.50 Кб (Скачать файл)

Лабораторная  работа

Тема:  Структурированные типы данных языка программирования Pascal.

    Цель: Сформировать навыки создания и использования  структурированных типов при  написании программ на языке Pascal; изучить особенности использования и области применения массивов, записей, множеств и файлов.

Ход работы

      Задача 1. Даны два вектора а[1..n] of integer и в[1..m] of integer. Необходимо создать матрицу c[1..n,1..m] of integer такую, что с=0, если а*а+в*в<100, с=а+в в противном случае. В матрице с отыскать хотя бы один элемент равный ключевому key и указать номер; key=0.

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

       

       
       
       
       

       
       
       
       
       
       

      Программа на языке Pascal

Program pervaya;

const n=5;

      m=6;

var key: integer;

    i: integer;

    j: integer;

    a: array[1..n] of real;

    b: array[1..m] of real;

    c: array[1..n,1..m] of real;

begin

  writeln('-----Vvedite massiv a-----');

  for i:=1 to n do

   begin

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

     readln (a[i]);

   end;

  writeln('-----Vvedite massiv b-----');

  for j:=1 to m do

   begin

    write('b[',j,']=');

    readln(b[j]);

   end;

  writeln('-------Massiv c------');

  for i:=1 to n do

  for j:=1 to m do

   begin

     if a[i]*a[i]+b[j]*b[j]<100

       then c[i,j]:=0

       else c[i,j]:=a[i]+b[j];

     writeln('c[',i,j,']=',c[i][j]:10:4);

   end;

     readln;

  writeln('Nulevie znacheniya imeyut index');

  key:=0;

  for i:=1 to n do

  for j:=1 to m do

   if c[i,j]=key then writeln('i=',i,'  j=',j); 

     readln

  end.

      Задача 2. Дан двумерный массив чисел типа Real. Подсчитать среднее арифметическое по строкам. Обнулить такие элементы, которые больше среднего арифметического.

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

 

 
 

 
 
 
 

      Программа на языке Pascal

Program vtoraya;

const n=3;

      m=2;

var s: real;

    i: integer;

    j: integer;

    sr: array[1..n] of real;

    c: array[1..n,1..m] of real;

begin

  writeln('-----Vvedite massiv c-----');

  for i:=1 to n do

  for j:=1 to m do

   begin

     write('c[',i,',',j,']=');

     readln (c[i,j]);

   end;

  writeln('--Srednee arifmeticheskoe po strokam--');

  for i:=1 to n do

    begin

      s:=0;

      for j:=1 to m do

        s:=s+c[i,j];

      sr[i]:=s/m;

      writeln('sr[',i,']=',sr[i]:6:2);

    end;

  readln;

  writeln('--Novaya matrica--');

  for i:=1 to n do

  for j:=1 to m do

    if c[i,j]>sr[i] then c[i,j]:=0;

  for i:=1 to n do

    begin

      for j:=1 to m do

       write(' c[',i,',',j,']=',c[i,j]:4:2);

    writeln('       sr[',i,']=',sr[i]:4:2);

    end; 

     readln

  end.

      Задача 3. Создать и сохранить в текстовом файле Test.dat текстовое сообщение «Hello world!!!» и вывести на экран. Найти в нем все буквы “L”.

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

       

       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       

      Программа на языке Pascal

      Program tretya;

      uses crt;

      var tf: text;

          t: string;

          s: char;

          k: integer;

      begin

        assign(tf,'Test.dat'); rewrite(tf);

        writeln('----Vvedite text----');

        readln(t);

        writeln(tf,t);

        close(tf);

        clrscr;

        writeln('-------------- Text iz faila --------------');

        reset(tf);

        writeln(t);

        writeln('-------------------------------------------');

        k:=0;

        while not eoln(tf) do

          begin

            read(tf,s);

            if s='l' then k:=k+1;

          end;

          writeln('kolichestvo simvolov "L" v texte = ',k);

        close(tf);

           readln

        end.

      Ответы  на контрольные вопросы:

  1. В качестве базового типа нельзя использовать вещественный и целый тип. То есть не верно.
  2. В тексте программы найдены следующие ошибки:
    1. С[1] – запись не верная, так как массив С двумерный, значит каждый элемент должен иметь два индекса (по строкам и столбцам);
    2. С[1,0] – запись не верная, так как индекс по столбцам должен начинаться с единицы;
    3. С(2,5) – запись не верная, так как индексы массива должны быть заключены в квадратные скобки;
    4. В[2,3] – массив В не описан в разделе переменных;
    5. F:=1 – F это массив, значит присвоить значение можно только какому либо элементу массива, запись которого должна содержать индексы в квадратных скобках;
    6. В описании массива F – чаще всего в качестве пита индекса используют интервальный F[1..4]
  3. Для поиска элемента “*” в текстовом файле необходимо открыть файл для чтения, считать текст из файла и присвоить строковой переменной в программе Str. После этого организовать цикл от 1 до length(Str) для перебора элементов строковой переменной. В цикле проверять: если Str[i]=’*’, то заветси счетчик для подсчета количества элементов k:=k+1 (начальное значение k=0 должно быть задано ранее). После завершения перебора элементов строки проверить: если k>0, то вывести сообщение о наличии символа в строке и можно напечатать количество этих символов.

 

Выводы по работе

       В ходе выполнения работы были  рассмотрены структурированные  типы данных Pascal: массивы, множества, записи и файлы. Были изучены особенности их использования и области применения и сделаны следующие выводы:

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

Информация о работе Структурированные типы данных языка программирования Pascal