
- •Задачи повышенной сложности
- •Лабораторная работа №2. Программирование разветвляющихся алгоритмов
- •Общие сведения
- •Оператор перехода
- •Условный оператор if
- •Оператор выбора case
- •Контрольные вопросы
- •Задачи повышенной трудности
- •Операторы цикла с условием
- •Операторы ограничения и прерывания цикла
- •Примеры
- •Контрольные вопросы
- •Задачи повышенной сложности
- •Лабораторная работа №4. Программирование с использованием массивов
- •Общие сведения:
- •Массивы
- •Линейные массивы
- •Двумерные массивы
- •Примеры:
- •Контрольные вопросы
- •Задачи повышенной сложности
- •Лабораторная работа №5. Программирование с использованием строковых переменных
- •Общие сведения
- •Примеры
- •Контрольные вопросы
- •Задания
- •Задачи повышенной сложности
- •Лабораторная работа №6. Программирование с использованием множеств Общие сведения
- •Контрольные вопросы
- •Задания
- •Задачи повышенной сложности
- •Лабораторная работа №7. Программирование с использованием типа запись
- •Контрольные вопросы
- •Задания
- •Задачи повышенной сложности
- •Лабораторная работа №8. Программирование с использованием процедур и функций
- •Процедуры и функции
- •Контрольные вопросы
- •Задания
- •Задачи повышенной сложности
- •Лабораторная работа №9. Работа с файлами
- •Общие сведения
- •Контрольные вопросы
- •Задания
- •Задачи повышенной сложности
- •Приложения
- •1. Сообщения об ошибках во время компиляции
- •2. Сообщения об ошибках вовремя выполнения программы
Примеры:
Пример1: Дан двумерный массив. В каждой строке все его элементы, не равные нулю, переписать (сохраняя порядок) в начало строки, а нулевые элементы - в конец массива. Новый массив не заводить. Этапы решения задачи: 1. Суть одного из алгоритмов решения данной задачи состоит в том чтобы "просматривать" массив построчно и находить в каждой строке пару (0:число), а затем менять их местами между собой и так до тех пор пока в строке таких пар не окажется. 2. Напишем программу на псевдо паскале:
program example1;
var
V:array[1..100,1..100] of integer;
m,n, i,j, c: integer;
flag: boolean;
begin
<ввод размерности массива m*n>
<заполнение ячеек массива>
for i:=1 to m do
repeat
flag:= true;
for j:=1 to n-1 do
if (v[i,j]=0) and (v[i,j+1]<>0) then begin
<поменять их местами>
flag:= false;
end;
until flag;
<Печать массива>
readln;
end.
3.Составим блок схему алгоритма
Детализируем блок "Упорядочиваем 1-ю строку"
Блок схема алгоритма целиком:
4.Приведем программу на языке Паскаль:
program example1;
var
V:array[1..100,1..100] of integer;
m,n, i,j, c: integer;
flag: boolean;
begin
write('Введите размерность массива m-n> ');
readln(m,n);
for i:= 1 to m do
for j:= 1 to n do begin
write('V[',i,',',j,']= ');
readln(V[i,j]);
end;
for i:=1 to m do
repeat
flag:= true;
for j:=1 to n-1 do
if (v[i,j]=0) and (v[i,j+1]<>0) then begin
c:=v[i,j]; v[i,j]:=v[i,j+1]; v[i,j+1]:=c;
flag:= false;
end;
until flag;
for i:= 1 to m do begin
for j:= 1 to n do write(V[i,j]:2);
writeln
end;
readln;
end.
Контрольные вопросы
-
Каким образом определяются переменные типа массив (одномерный и двумерный)?
-
Как осуществляется доступ к отдельному элементу одномерного и двумерного массива?
-
Каким образом выводятся элементы массива на экран?
-
Приведите пример фрагмента программы, который выводит на экран двумерный массив в виде матрицы.
-
Сколько чисел можно записать в шестимерный массив X : Array[0..1, 0..1, 0..1, 0..1, 0..1, 0..1] of Integer?
Задания
-
Дан массив размера N. Вывести его элементы в обратном порядке.
-
Дан массив размера N. Вывести вначале его элементы с четными индексами, а затем - с нечетными.
-
Дан целочисленный массив A размера 10. Вывести номер первого и последнего из тех его элементов A[i], которые удовлетворяют двойному неравенству: A[1] < A[i] < A[10]. Если таких элементов нет, то вывести 0.
-
Дан целочисленный массив размера N. Преобразовать его, прибавив к четным числам первый элемент. Первый и последний элементы массива не изменять.
-
Дан целочисленный массив размера N. Вывести вначале все его четные элементы, а затем - нечетные.
-
Поменять местами минимальный и максимальный элементы массива размера 10.
-
Заменить все отрицательные элементы целочисленного массива размера 10 на минимальное значение элементов массива.
-
Дан массив размера N. Осуществить сдвиг элементов массива вправо на одну позицию.
-
Дан массив размера N и число k (0 < k < 5, k < N). Осуществить циклический сдвиг элементов массива влево на k позиций.
-
Проверить, образуют ли элементы целочисленного массива размера N арифметическую прогрессию. Если да, то вывести разность прогрессии, если нет - вывести 0.
-
Дан массив ненулевых целых чисел размера N. Проверить, чередуются ли в нем положительные и отрицательные числа. Если чередуются, то вывести 0, если нет, то вывести номер первого элемента, нарушающего закономерность.
-
Дан массив размера N. Определить количество участков, на которых его элементы монотонно возрастают.
-
Дан массив размера N. Определить количество его промежутков монотонности (то есть участков, на которых его элементы возрастают или убывают).
-
Дан целочисленный массив размера N. Определить максимальное количество его одинаковых элементов.
-
Дан целочисленный массив размера N. Если он является перестановкой, то есть содержит все числа от 1 до N, то вывести 0, в противном случае вывести номер первого недопустимого элемента.
-
Дан целочисленный массив размера N. Назовем серией группу подряд идущих одинаковых элементов, а длиной серии - количество этих элементов (длина серии может быть равна 1). Вывести массив, содержащий длины всех серий исходного массива.
-
Дано число k (0 < k < 11) и матрица размера 4 x 10. Найти сумму и произведение элементов k-го столбца данной матрицы.
-
Дана матрица размера а x б. Найти суммы элементов всех ее четных строк и нечетных столбцов.
-
Дана матрица размера а x б. Найти минимальное значение в каждой строке.
-
Дана матрица размера а x б. В каждой строке найти количество элементов, больших среднего арифметического всех элементов этой строки.
-
Дана матрица размера а x б. Преобразовать матрицу, поменяв местами минимальный и максимальный элемент в каждой а) строке б) столбце.
-
Дана целочисленная матрица размера а x б. Вывести номер ее первой строки, содержащего равное количество положительных и отрицательных элементов (нулевые элементы не учитываются). Если таких строк нет, то вывести 0.
-
Дана целочисленная матрица размера M x N. Найти количество ее строк и столбцов, все элементы которых различны.
-
Дана квадратная матрица порядка M. Найти сумму элементов ее главной и побочной диагонали.
-
Дана квадратная матрица порядка M. Заменить нулями элементы матрицы, лежащие а) ниже главной диагонали, б) выше главной диагонали, в) нижепобочной диагонали.
-
Дана квадратная матрица порядка M. Повернуть ее на 90,180,270 градусов в положительном направлении.
-
Даны два числа k1 и k2 и матрица размера а x б. Поменять местами столбцы матрицы с номерами k1 и k2.
-
Дано число k и матрица размера а x б. Удалить столбец матрицы с номером k.
-
Даны целые числа а1, а2, а3. Получить целочисленную матрицу [bij]i,j=1,2,3, для которой bij=ai-3aj.
-
Получить [aij]i=1,…10; j=1,…12 - целочисленную матрицу, для которой aij=i+2j.
-
Дано натуральное число n. Получить действительную матрицу [aij]i, j=1,…n, для которой aij=
.
-
Дана действительная квадратная матрица порядка n. Найти наибольшее из значений элементов, расположенных в заштрихованной части матрицы.
а) б) в) г)
-
Дана квадратная вещественная матрица размерности n. Найти количество нулевых элементов, стоящих: выше главной диагонали; ниже главной диагонали; выше и ниже побочной.
-
Дана вещественная матрица размерности n * m. По матрице получить логический вектор, присвоив его k-ому элементу значение True , если выполнено указанное условие и значение False иначе: - все элементы k столбца нулевые; - элементы k строки матрицы упорядочены по убыванию; - k строка массива симметрична.
-
Дана вещественная матрица размерности n * m. Сформировать вектор b, в котором элементы вычисляются как: - произведение элементов соответствующих строк; - среднее арифметическое соответствующих столбцов; - разность наибольших и наименьших элементов соответствующих строк; - значения первых отрицательных элементов в столбце.
-
Дан двухмерный массив A[1..m,1..n]. Написать программу построения одномерного массива B[1..m], элементы которого соответственно равны а) суммам элементов строк, б) произведениям элементов строк, в) наименьшим средних арифметических элементов строк.
-
Расположить элементы данного массива в обратном порядке (первый элемент меняется с последним, второй - с предпоследним и т.д. до середины; если массив содержит нечетное количество элементов, то средний остается без изменения).
-
В данном массиве поменять местами элементы, стоящие на нечетных местах, с элементами, стоящими на четных местах.