Лабораторная работа № 4 . Одномерные массивы




 

Цель лабораторной работы: получение навыков использования массивов; работа с ошибками компилятора.

 

Задание

1. Написать и отладить программу, выполняющую задание. Программа должна работать с массивом.

2. В готовой программе имитировать ошибку компилятора, заданную вариантом. Список ошибок компилятора можно посмотреть в книге В.В. Фаронова Turbo Pascal (файл TurboPascal_polnoe_rukovodstvo.djvu) на странице 939 (приложение 3).

 

Теоретические сведения

Массивы – это структурный тип данных, который строится на основе какого-либо базового типа данных. Массив содержит упорядоченную совокупность однотипных данных. Каждый элемент массива имеет своеобразный адрес, называемый индексом. Так реализуется упорядоченность.

 

Массив::= array [ <тип индекса>{,<тип индекса> } ] of <тип элемента>

 

Тип индекса определяет его допустимые значения. Таким типом могут быть следующие порядковые типы: boolean, char, integer, перечисляемый тип, а также диапазоны этих типов. В зависимости от количества индексов различают одномерные, двумерные, трехмерные и n-мерные массивы. Элемент массива может иметь любой допустимый тип, кроме файлового.

Объявить массив можно двумя способами:

А) в разделе объявления переменных var задать переменную-массив;

var

a: array [1..10] of integer; {одномерный массив из 10 целых чисел}

b: array [byte] of char; {массив из 256 символов, индекс изменяется от 0 до 255}

c: array [‘a’.. ‘c’, -5..-3] of byte; {матрица размером 3*3. Индекс строк меняется от ‘a’ до ‘c’, а

индекс столбца от -5 до -3}

d: array [‘a’.. ‘c’] of array [-5..-3] of byte; {другое объявление матрицы с. Массив массива}

 

В) предварительно объявить новый пользовательский тип-массив, а потом объявить переменную этого типа.

type mas = array [1..10] of integer;

var a: mas;

 

Операции над массивами

Присваивание массивов целиком возможно, если массивы совпадают по типу.

var a, b: array [1..10] of integer;

… a:= b;

Для доступа к элементу массива необходимо указать имя массива и далее в квадратных скобках значения индексов через запятую:

a [i] a[3] c[‘a’,-3]

 

Некоторые функции языка паскаль

trunk (x) – преобразует значение вещественного типа в значение целого типа, отбрасывая дробную часть.

round (x) - преобразует значение вещественного типа в значение целого типа, округляя его до ближайшего целого.

 

Порядок выполнения

1) Получить вариант задания у преподавателя

2) Написать и отладить программу

3) Имитировать ошибку компилятора, заданную вариантом, и сделать копию экрана с сообщением об ошибке.

4) Подготовить отчет

5) Представить распечатку отчета преподавателю, защитить отчет (ответить на вопросы преподавателя по проделанной работе), показать выполнение программы по шагам и изменения значений переменных в окне просмотра.

 

 

Пример выполнения

 

Задание

Дан массив из 10 вещественных чисел. Поменять местами максимальный и минимальный элементы массива.

Номер ошибки компилятора: 2.

 

Программная реализация

 

program lab4;

uses crt;

const n =5;

 

var a: array [1..n] of integer;

i, nmin, nmax: integer;

 

begin

clrscr;

a[1]:=34; a[2]:=2; a[3]:=62; a[4]:=80; a[5]:=7;

nmin:=1;

nmax:=1;

writeln('Ishodnyi massiv:');

writeln;

for i:=1 to n do

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

writeln;

writeln;

for i:= 1 to n do

begin

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

else

if a[i]<a[nmin] then nmin:=i;

end;

i:= a[nmax];

a[nmax]:= a[nmin];

a[nmin]:=i;

writeln ('Massiv posle perestanovki:');

writeln;

for i:=1 to n do

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

readln;

end.

 

 

Имитация ошибки компилятора.

Ошибка № 2: identifier expected (не указан идентификатор). Чтобы получить нужное сообщение об ошибке, в разделе объявления переменных var ошибочно написано ключевое слово if вместо имени массива.

 

 

Требования к отчету

Отчет должен содержать:

1) Титульный лист

2) Номер варианта и текст задания

3) Листинг программы

4) Копию экрана с массивом до и после обработки

5) Описание ошибки компилятора и копию экрана с сообщением об этой ошибкой

 


 

Варианты заданий

 

№ варианта                                      
№ ошибки компилятора                                      

 

1) Дано 20 целых чисел. Определить, сколько раз встречается наибольшее значение. Предполагается, что максимальное число может повториться несколько раз.

2) Дано 20 вещественных чисел. Определить, сколько из них больше своих "соседей", т.е. предыдущего и последующего чисел.

3) Дано 20 вещественных чисел. Найти порядковый номер того из них, которое ближе всего к какому-нибудь целому числу.

4) Дана последовательность из 20-ти целых чисел. Определить, со скольких отрицательных чисел она начинается.

5) Дано 20 вещественных чисел. Определить, образуют ли они возрастающую последовательность.

6) Даны целое n>0 и последовательность из n вещественных чисел, среди которых есть хотя бы одно отрицательное число. Найти величину наибольшего среди отрицательных чисел этой последовательности.

7) Дано 20 целых чисел. Четные числа записать в массив y1, а нечетные числа записать в массив y2.

8) Дано 100 вещественных чисел. Распечатать их в обратном порядке по 6 чисел в строке.

9) Дана последовательность целых чисел. Все положительные числа этой последовательности записать во 2-ую последовательность.

10) Дана последовательность из 50 целых чисел. Подсчитать, сколько чисел являются удвоенными нечетными числами, то есть равны x*2, где x – нечетное число.

11) Дана непустая последовательность из натуральных чисел, за которой следует 0. Вычислить сумму тех из них, порядковые номера которых - числа Фибоначчи.

12) Дана непустая последовательность ненулевых чисел, за которой следует 0. Определить, сколько раз в этой последовательности меняется знак (напр., в последовательности 1, -34, 8, 14, -5 знак меняется 3 раза).

13) Найти сумму трех первых положительных элементов массива.

14) Найти максимальный по модулю элемент массива. Умножить его на первый отрицательный элемент.

15) Найти количество и среднее арифметическое положительных и отрицательных элементов массива. Логической переменной присвоить значение «истина», если среднее арифметическое отрицательных чисел по модулю больше, чем среднее арифметическое положительных.

16) Найти номер первого отрицательного элемента, который по модулю меньше максимального числа.

17) На основе исходного массива А сформировать новый массив В. В массив В отобрать те элементы, которые больше среднего арифметического массива А и стоят на местах с четными индексами.

18) Из массива удалить элементы, меньшие заданного в.

19) Вычислить среднее арифметическое положительных элементов, кратных трем.

 



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2017-12-07 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: