Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
[Amelina_N.I.,_Rusanova_YA.M.,_CHekulaeva_A.A.]_In(BookFi.org).pdf
Скачиваний:
5
Добавлен:
25.03.2016
Размер:
400.05 Кб
Скачать

Министерство образования Российской федерации

Ростовский ордена Трудового Красного Знамени государственный университет

Н.И. Амелина, Я.М. Русанова, А.А. Чекулаева

Информатика. Задачи.

Часть 2

Задачи на тему: массивы, строки, множества.

Методические указания для студентов дневного и вечернего отделений механико-математического факультета

Ростов - на - Дону

2002

2

Печатается по решению учебно-методической комиссии механико-математического факультета РГУ от . .2002.

АННОТАЦИЯ

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

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

Авторы: Н.И. Амелина, Я.М. Русанова, А.А. Чекулаева

© Н.И. Амелина, Я.М. Русанова, А.А. Чекулаева, 2002

3

 

СОДЕРЖАНИЕ

 

1

Массив как структура данных...............................................................

4

2

Двумерные массивы (матрицы).............................................................

8

3

Сортировка массивов. Поиск элементов. .............................................

12

4

Строки......................................................................................................

15

5

Множества...............................................................................................

19

4

1.1 Массив как структура данных.

Программа, которая из данных n целых чисел выводит сначала все отрицательные числа, а затем - все остальные.

Program MAS; const nmax = 10;

type IArray = array[1..nmax] of integer; var A: IArray;

n, i: byte; begin

write ('количество элементов массива = '); readln (n);

writeln ('Введите элементы массива.'); for i := 1 to n do readln (A[i]);

writeln ('Вывод по заданному правилу:'); for i := 1 to n do

if A[i]< 0 then writeln(A[i]); for i := 1 to n do

if A[i] >= 0 then writeln(A[i]);

end.

1.1.1 Дан массив целых чисел. Найти:

а) сумму (произведение) положительных (отрицательных) элементов массива;

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

в) сумму (произведение) четных (нечетных) элементов массива; г) сумму (произведение) элементов массива, кратных (не

кратных) заданному числу.

1.1.2 Дан массив чисел A. Для него нужно:

10

а) вычислить y = (1)i Ai без использования операции

i =1

возведения в степень;

б) получить массив B, расположив элементы массива A в обратном порядке;

в) получить массив B, в котором i-й элемент является средним арифметическим всех элементов массива A, кроме i-го.

1.1.3 Дан массив целых чисел. Определить: а) сколько раз в массиве меняется знак;

5

б) количество инверсий в массиве (т.е. таких пар элементов, в которых большее число находится слева от меньшего);

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

1.1.4 Дан массив вещественных чисел. Найти:

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

б) сумму и произведение элементов массива, расположенных между первым и вторым нулевыми элементами;

в) количество и сумму положительных элементов массива, предшествующих первому отрицательному элементу;

г) среднее арифметическое первых подряд идущих положительных элементов.

1.1.5 Преобразовать массив вещественных чисел по правилу:

а) положительные элементы заменить их квадратами, отрицательные - абсолютными величинами;

б) умножить все отрицательные элементы массива на первый, если он тоже отрицателен;

в) минимальный элемент заменить целой частью среднего арифметического всех элементов массива (если в массиве несколько элементов с минимальным значением, заменить последний по порядку);

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

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

1.1.6 Дан массив вещественных чисел. Определить:

а) значение наибольшего (наименьшего) элемента и его порядковый номер в массиве;

б) разность между наибольшим и наименьшим элементом; в) отношение суммы (произведения) элементов массива,

расположенных до максимального (минимального) элемента в массиве, к сумме (произведению) элементов, расположенных после максимального (минимального);

г) произведение (сумму, среднее арифметическое) элементов массива, расположенных между максимальным и минимальным элементами;

д) среднее арифметическое элементов (сумму, произведение) массива, расположенных между максимальным

6

(минимальным) и "центральным" элементами массива (предполагается, что в массиве нечётное число элементов).

1.1.7Преобразовать массив по правилу xk' = max xi , при 1 i k .

1.1.8Даны два вещественных массива с разным числом элементов. Найти:

а) общее число нулевых (ненулевых, положительных, отрицательных) элементов массивов;

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

в) сумму минимальных элементов обоих массивов; г) отношение максимальных элементов массивов;

д) модуль разности чисел, являющихся минимальными среди положительных элементов массивов.

1.1.9Даны вещественные массивы A и B с разным числом элементов. Логической переменной Flag присвоить значение "истина", если: а) у массива A больше положительных элементов, чем у массива

B;

б) сумма отрицательных элементов массива A меньше суммы отрицательных элементов массива B;

в) в массиве A нулевых элементов меньше, чем в массиве B;

г) произведение ненулевых элементов массива A больше произведения ненулевых элементов массива B;

иначе Flag положить равной "ложь". Выдать значение переменной.

1.1.10Даны вещественные массивы Х и У. Преобразовать каждый из них по правилу:

а) если у массива есть хотя бы один элемент, принадлежащий отрезку [a,b], то все отрицательные элементы заменить нулями. В противном случае - единицами;

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

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

1.1.11Для заданного массива выяснить, упорядочены ли элементы массива а) по невозрастанию;

б) по неубыванию;

7

в) по невозрастанию или по неубыванию.

1.1.12Для заданного одномерного массива выяснить представляют ли его элементы монотонную последовательность.

1.1.13Найти элемент, ближайший (наиболее удаленный) по значению к максимуму (минимуму, среднему арифметическому).

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

б) обнаружено наибольшее уменьшение зарплаты.

1.1.15Дан массив целых чисел.

а) для каждого из чисел, входящего в массив, указать, сколько раз оно входит в массив.

б) выяснить, имеется ли в массиве хотя бы одна пара совпадающих чисел.

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

1.1.16 Поменять местами:

а) максимальный и минимальный элементы массива; б) наибольший (наименьший) элемент с первым (последним)

элементом.

1.1.17Переставить элементы массива так, чтобы в начале массива располагались все отрицательные (четные), а в конце массива все положительные элементы (нечетные).

1.1.18Из массива удалить:

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

г) элементы, принадлежащие (не принадлежащие) заданному интервалу (отрезку).

1.1.19 Элементы массива (числового или символьного) а) сдвинуть на одну позицию влево (вправо); б) сдвинуть на k позиций влево (вправо);

в) циклически сдвинуть на одну позицию влево (вправо); г) циклически сдвинуть на k позиций влево (вправо).