Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
методичка.doc
Скачиваний:
39
Добавлен:
07.06.2015
Размер:
5.91 Mб
Скачать

2. Сортировка методом пузырька

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

Уплотнение массива – это удаление из него элементов, отвечающих тем или иным условиям. Образующиеся пустоты заполняются за счет сдвига всех оставшихся элементов. Так как массив укорачивается, при обработке массива необходимо использовать не цикл с параметром, а цикл с условием.

Вставка элемента в массив – задача обратная предыдущей. Прием используется тот же – смещение группы элементов на одну позицию. Только при уплотнении сдвиг производится влево, при вставке – вправо. При вставке возникает проблема, что делать с последними элементами? Если в дальнейшей работе с массивом участвуют только заявленные элементы, то «хвост» придется вытеснить, последние значения при этом будут утрачены. Иначе, нужно создавать дополнительный массив, размерность которого будет больше исходного на количество вставленных элементов. Выбор типа цикла для работы с массивом зависит от конкретного случая.

Практическая часть.

Пример 1. Создать программу и блок-схему для нахождения суммы положительных элементов главной диагонали. (Матрица квадратная, ввод элементов сделать с клавиатуры).

Программный код решения примера:

//Девятая программа

//Автор Загребельный С.Л.

#include <stdio.h>

#include <conio.h>

#include <locale.h>

#define m 3

int main (void) {

int i, j, k, l,sum; // переменные циклов

int A[m][m];

setlocale(LC_ALL, "Russian");

// Ввод элементов матрицы

for (i = 0; i < m; i++)

{printf("\n Введите 3 элемента %d строки\n",i+1);

for (j = 0; j < m; j++)

scanf("%i,%j",&A[i][j]);}

// Распечатка матриц

printf("\n Исходная матрица (%dx%d):\n", m, m);

for (i = 0; i < m; i++) {

printf("\n");

for (j = 0; j < m; j++)

printf(" %4d", A[i][j]);

}

sum=0;

for (i = 0; i < m; i++)

for (i = 0; i < m; i++)

if (A[i][i]>0) {sum = sum+A[i][i];}

printf(" \n сумма положительных элементов главной диагонали %d\n", sum);

printf("\n\n ... Press any key: ");

_getch();

return 0;

}

Рис. 9.1. Окно кода программы

Рис.9.2. Окно выполнения программы

Блок-схема к программе

Индивидуальные задания

Составить программу на языке программирования С++ и блок-схему к программе для решения задания из таблицы 9.1.(Матрица квадратная размером NN, ввод элементов массива сделать автоматически через генератор случайных чисел, элементы массива должны быть целыми числами).

Таблица 9.1.

Номер варианта

Условие задания

1

Общую сумму положительных четных чисел на главной и побочной диагоналях.

2

Общее произведение нечетных отрицательных элементов главной и побочной диагоналей.

3

Количества кратных 3 элементов отдельно на главной и отдельно на побочной диагоналях.

4

Среднее арифметическое для отрицательных элементов главной диагонали и среднее арифметическое для положительных элементов побочной диагонали.

5

Найти среднее геометрическое положительных кратных 4 элементов главной и побочной диагоналей.

6

Где больше кратных 3 элементов: на главной или побочной диагоналях.

7

Где меньше отрицательных элементов: на главной или побочной диагоналях.

8

Что больше: произведение положительных элементов главной диагонали или произведение отрицательных побочной.

9

Что меньше: сумма нечетных элементов главной диагонали или произведение некратных 3 элементов побочной.

10

Общую сумму отрицательных нечетных чисел на главной и побочной диагоналях.

11

Общее произведение четных кратных 3 элементов главной и побочной диагоналей.

12

Количества кратных 5 элементов отдельно на главной и отдельно на побочной диагоналях.

13

Суммы положительных четных чисел отдельно на главной и отдельно на побочной диагоналях.

14

Произведения нечетных отрицательных элементов отдельно на главной и отдельно на побочной диагоналях.

15

Общее количество кратных 3 элементов на главной и побочной диагоналях.

Продолжение таблицы 9.1.

16

Среднее арифметическое для всех отрицательных элементов главной и побочной диагоналей.

17

Найти среднее геометрическое положительных элементов отдельно для главной и отдельно для побочной диагоналей.

18

Где больше сумма кратных 4 элементов: на главной или побочной диагоналях.

19

Где меньше сумма положительных элементов: на главной или побочной диагоналях.

20

Что больше: сумма четных элементов главной диагонали или сумма нечетных побочной.

21

Что меньше: произведение кратных 4 элементов главной диагонали или сумма положительных побочной.

22

Суммы отрицательных нечетных чисел отдельно на главной и отдельно на побочной диагоналях.

23

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

24

Общее количество не кратных 5 элементов на главной и побочной диагоналях.

25

Общую сумму квадратов положительных элементов главной и побочной диагоналей.

26

Среднее арифметическое нечетных элементов главной диагонали.

27

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

28

Количество элементов кратных числу 3 из диапазона [-10;10] для главной диагонали.

29

Среднее геометрическое нечетных элементов главной и побочной диагонали.

30

Сумму нечетных отрицательных элементов главной диагонали и произведение четных чисел из диапазона [-5;6] для побочной диагонали.