Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Методичка по информатике

.pdf
Скачиваний:
182
Добавлен:
18.03.2015
Размер:
9.43 Mб
Скачать

4. Описание оборудования и используемых программных комплексов

При выполнении лабораторной работы необходим специализированный компьютерный класс с минимальными системными требованиями компьютеров:

Процессор – Intel Pentium III; ОЗУ – 256 Mb;

видеокарта – 32 Mb.

Требуемое программное обеспечение: Операционная система Microsoft Windows;

Borland Pascal 7.0 for DOS / Borland Pascal 7.0 for Windows.

5. Краткое руководство по эксплуатации оборудования

При использовании оборудования необходимо:

соблюдать общие правила нахождения в учебных лабораториях, работы с компьютером и использования программных средств;

привести в порядок одежду; осмотреть рабочее место, убрать все мешающие работе

предметы; визуально проверить правильность подключения ПЭВМ к

электросети.

6. Задание

6.1. Варианты заданий с использованием одномерных массивов

Решить задачу с использованием одномерных массивов по указанному преподавателем варианту табл. 1.

80

Таблица 1

 

Варианты заданий на тему «Одномерные массивы»

 

 

№ варианта

Задание

1

2

1Найдите среднее арифметическое элементов заданного массива из 8 целых чисел и определите, сколько элементов данного массива больше среднего.

2Задан массив из 10 целых чисел. Замените все положительные элементы данного массива его максимальным элементом.

3Задан массив из 8 действительных чисел. Замените все отрицательные элементы данного массива его минимальным элементом.

4Найдите сумму максимального и минимального элементов заданного массива из 10 действительных чисел.

5В заданном массиве из 8 действительных чисел вычислите сумму и среднее арифметическое значение положительных элементов.

6Задан массив из 10 целых чисел. Найдите среднее арифметическое всех четных элементов массива.

7Подсчитайте количество нулевых элементов в массиве из 10 целых чисел и распечатайте исходный массив в обратном порядке.

8Дан целочисленный массив из 8 целых чисел. Преобразуйте его, прибавив к четным числам значение первого элемента. Первый элемент массива оставьте без изменений.

9Дан целочисленный массив из 10 целых чисел. Преобразуйте его, прибавив к нечетным числам значение последнего элемента. Последний элемент массива оставьте без изменений.

10Найдите наибольший по модулю элемент заданного массива из 9 действительных чисел.

11В заданном массиве из 5 действительных чисел определите количество чисел, не попадающих в интервал от -2 до 2,5.

12Дан одномерный массив из 10 элементов. Подсчитайте количество его элементов, кратных 3.

13Замените все положительные элементы заданного целочисленного массива из 8 элементов числом 1, а все отрицательные элементы – числом 0.

14Задан массив из 8 целых чисел. Определите, каких элементов в массиве больше – четных или нечетных.

15Вычислите среднее арифметическое всех отрицательных элементов заданного массива из 8 действительных чисел.

81

Окончание табл. 1

1

2

16Дан одномерный массив из 10 элементов. Упорядочте его элементы по возрастанию методом «пузырька».

17Дан одномерный массив из 10 элементов. Подсчитайте произведение его нечетных элементов.

18Дан одномерный массив из 10 элементов. Найдите его минимальный элемент и напечатайте его порядковый номер.

19Дан одномерный массив из 10 элементов. Найдите среднее арифметическое его элементов и выведите все элементы, меньшие среднего арифметического.

20Дан одномерный массив из 10 элементов. Упорядочте его элементы по убыванию линейным методом.

6.2.Варианты заданий с использованием двумерных

массивов

Решить задачу с использованием двумерных массивов по указанному преподавателем варианту табл. 2.

 

Таблица 2

 

Варианты заданий на тему «Двумерные массивы»

№ варианта

Задание

1

2

1

Дана целочисленная матрица размера 5x6. Поменять местами

 

первый и последний из столбцов.

2

Дана действительная матрица размера 3x4. Найти сумму элементов

 

последнего столбца данной матрицы.

3

Дана целочисленная матрица размера 5x7. Заменить в данной

 

матрице все отрицательные элементы числом 0, положительные

 

элементы – числом 1.

4

Дана целочисленная матрица размера 4x6. Переставить местами 1 и

 

2 строку матрицы.

5

Дана целочисленная матрица размера 5x6. Поменять местами 1 и 2

 

столбцы.

6

Дана целочисленная матрица размера 4x3. Найти произведение

 

элементов первого столбца данной матрицы.

7

Дана квадратная целочисленная матрица размера 4х4. Заменить

 

нулями элементы матрицы, лежащие на главной диагонали.

8

Дана действительная матрица размера 3x4. Найти минимальное

 

значение в первой строке данной матрицы.

9Задана целочисленная квадратная матрица размера 3х3. Найти наименьший элемент главной диагонали данной матрицы.

82

 

Окончание табл. 2

1

2

10

Дана целочисленная матрица размера 4x4. Найти минимальное

 

значение во втором столбце данной матрицы.

11

Дана действительная матрица размера 4x3. Найти максимальное

 

значение в третьей строке данной матрицы.

12

Дана квадратная целочисленная матрица размера 6х6. Заменить

 

нулями элементы матрицы, лежащие выше главной диагонали.

13

Известны результаты сдачи трех экзаменов десятью студентами.

 

Найти средний балл каждого студента и общий средний балл.

 

Точность среднего балла – два знака после запятой.

14

В матрице целых чисел размера 10х15 определить количество и

 

сумму элементов, значения которых находятся вне интервала [-1, 1].

15

Дана квадратная целочисленная матрица 7х7. Найти сумму

 

элементов ее побочной диагонали.

16

Дана действительная матрица размерности 3х5. Найти количество

 

положительных элементов, расположенных в третьей строке данной

 

матрицы.

17

Дана целочисленная матрица размерности 4х4. Найти количество

 

отрицательных элементов, расположенных во втором столбце

 

данной матрицы.

18

Дана действительная матрица размерности 3х5. Сформировать

 

одномерный массив минимумов по строкам данной матрицы.

19

Дана действительная матрица размера 4x3. Сформировать

 

одномерный массив максимумов по столбцам данной матрицы.

20Дана действительная матрица размера 5x6. Подсчитать среднее арифметическое положительных элементов главной диагонали.

7.Методика выполнения заданий

Для выполнения заданий необходимо:

1)изучить теоретическую часть (п. 3), рассмотреть нижеприведенные примеры (п. 7.1 и 7.2);

2)разработать алгоритмы для решения задач согласно выданному варианту, составить программы на языке Pascal, воспользовавшись нижеприведенными примерами, протестировать и представить полученный результат преподавателю;

3)ответить на контрольные вопросы;

4)создать отчет по лабораторной работе в электронном виде.

83

7.1. Примеры типовых задач обработки одномерных массивов данных

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

нахождение суммы элементов массива; нахождение количества элементов массива, удовлетворяющих

определенным условиям;

задачи на поиск элементов массива, удовлетворяющих некоторым заданным условиям;

преобразование массивов путем замены и перестановки их элементов;

упорядочение элементов массива и др.

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

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

Пример 1. Нахождение суммы элементов массива, удовлетворяющих некоторому заданному условию.

Найти сумму четных элементов заданного одномерного массива из 10 целых чисел.

PROGRAM Sum_mas;

Type Mas=array[1..10] of integer; Var a: Mas;

i,s: integer;

Begin

84

s:=0;

for i:=1 to 10 do begin

writeln('Введите элемент массива'); readln(a[i]);

if a[i] mod 2=0 then s:=s+a[i] {Проверка четности элемента и накопление суммы}

end; writeln('Сумма s=', s) End.

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

Пример 2. Задан массив из 6 целых чисел. Найти количество неотрицательных элементов массива.

PROGRAM Kol;

Var А: array[1..10] of integer; i, k: integer;

Begin k:=0;

for i:=1 to 10 do begin

writeln('Введите элемент массива'); readln(a[i]);

if A[i] >=0 then k:=k+1 {Проверка соответствия условию элемента и увеличение счетчика}

end;

writeln('Количество неотрицательных элементов к=', к) for i:=1 to 6 do

85

write(A[i], ‘ ‘); {печать одномерного массива в строку, после каждого элемента печатается три пробела}

End.

7.1.3. Преобразование массивов путем замены и перестановки их элементов. Данную задачу можно представить себе так: есть стакан сока и кружка молока, нужно перелить молоко в стакан, а сок – в кружку. Решение данной задачи невозможно без наличия третьей емкости. Аналогично для выполнения преобразования замены-перестановки в массиве необходима дополнительная переменная. Следует также учитывать, что необходимо вывести на печать исходный и преобразованный массивы с соответствующими комментариями для наглядности результатов выполнения программы.

Пример 3. Преобразовать массив, поменяв местами первый и последний элемент исходного массива из 6 элементов.

PROGRAM Zamena;

Var А: array[1..10] of integer; i, c: integer;

Begin k:=0;

for i:=1 to 10 do begin

writeln('Введите элемент массива'); readln(a[i]);

end;

writeln('Исходный массив:'); for i:=1 to 6 do

write(A[i], ‘ ‘); {печать одномерного массива в строку, после каждого элемента печатается три пробела}

c:=a[1]; {дополнительной переменной с присваивается значение первого элемента массива}

a[1]:=a[6]; {значение первого элемента массива заменяется на значение 6-го элемента}

a[6]:=c; {шестому элементу массива присваивается значение 1-го элемента, сохраненное как переменная с}

86

for i:= 1 to 6 do write (a[i]:5); writeln('Преобразованный массив:'); for i:=1 to 6 do

write(A[i], ‘ ‘); {печать одномерного массива в строку, после каждого элемента печатается три пробела}

End.

7.1.4. Поиск данных в массивах. Поиск информации,

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

Пример 4. Поиск наибольшего элемента в массиве. Задан одномерный массив из 7 действительных элементов. Найти наибольший элемент данного массива.

PROGRAM Max_mas;

Type Mas=array[1..7] of real; Var a: Mas;

max : real; i: integer; Begin

for i:=1 to 7 do begin

writeln(‘Введите элемент а[‘,i,’]’); readln(a[i])

end;

max:=a[1];

for i:=2 to 7 do

if max<a[i] then max:=a[i]; writeln(‘max=’, max)

End.

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

87

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

7.1.5. Сортировка одномерных массивов данных.

Сортировкой массива называют упорядочение его элементов в соответствии с определенными правилами (как правило, по возрастанию или убыванию элементов).

Рассмотрим следующие алгоритмы сортировки массивов данных: линейная сортировка (сортировка отбором) и сортировка методом «пузырька».

Алгоритм линейной сортировки массивов по возрастанию заключается в следующем. Сначала первый элемент массива сравнивается по очереди со всеми оставшимися элементами. Если очередной элемент массива меньше по величине, чем первый, то эти элементы переставляются местами. Сравнение продолжается далее уже для обновленного первого элемента, в результате чего будет найден и установлен на первое место самый наименьший элемент массива. Далее продолжается аналогичный процесс уже для оставшихся элементов массива, т.е. второй элемент сравнивается со всеми остальными и, при необходимости, переставляется с ними местами. Алгоритм завершается, когда сравниваются и упорядочиваются предпоследний и последний из оставшихся элементов массива.

Пример 5. Линейная сортировка массива по возрастанию. Известны результаты тестирования 9 учащихся. Расположить данные результаты в порядке возрастания баллов.

Программа реализации изложенного выше алгоритма линейной сортировки отбором может иметь следующий вид:

PROGRAM Sort;

TYPE M=array[1..9]of integer; Var a: M;

i,j,m, k, x: integer;

Begin

For i:=1 to 9 do begin

writeln('Введите результаты ',i,'-го учащегося'); readln(a[i])

88

end;

{Для всех элементов массива, кроме последнего, сделать} for j:=1 to 8 do

begin

m := j; {Ищем минимальный элемент (в начале j-й)} for k:=j+1 to 9 do

if a[k]<a[m] then m:=k; { минимальный элемент - k-й} x:=a[j]; {Обменять минимальный элемент с j-м} a[j]:=a[m];

a[m]:=x

end;

writeln('Отсортированные по возрастанию результаты:'); for i:=1 to 9 do write (a[i],' ');

end.

Особенностью сортировки методом «пузырька» является не сравнение каждого элемента со всеми, а сравнение в парах соседних элементов. Данный алгоритм состоит в последовательных просмотрах от начала к концу элементов массива. Если для пары соседних элементов выполняется условие, что элемент справа больше элемента слева, то производится обмен значениями этих элементов, т.е. в процессе выполнения алгоритма постепенно «всплывают» более «легкие» элементы массива.

Фрагмент программы на Паскале выглядит так: for j:=n downto 2 do

{Сравнить все пары соседних элементов от первого до (j-1)-го} for k:=1 to j-1 do

if a[k]>a[k+1] then begin

x:=a[k];

{Обменять k-й элемент с (k+1)-м}

a[k]:=a[k+1];

 

a[k+1]:=x

 

end;

 

89