Лекция 3 Разработка алгоритмов и программ сверху вниз

Содержание

Слайд 2

Бикмурзина А.Р., Захарова З.Х., Хохлов Д.Г. КГТУ (КАИ), кафедра АСОИУ Задача

Бикмурзина А.Р., Захарова З.Х., Хохлов Д.Г.

КГТУ (КАИ), кафедра АСОИУ

Задача

Дано целое n

и вещественные x1, x2, ..., xn. Составить программу печати заданных вещественных чисел в порядке возрастания (не убывания).
Слайд 3

Бикмурзина А.Р., Захарова З.Х., Хохлов Д.Г. КГТУ (КАИ), кафедра АСОИУ Вход:

Бикмурзина А.Р., Захарова З.Х., Хохлов Д.Г.

КГТУ (КАИ), кафедра АСОИУ

Вход:

Введите количество чисел:

5
Введите числа: 12.5 6 14 -3 10
Выход:
Упорядоченные числа:-3.0 6.0 10.0 12.5 14.0
Слайд 4

Бикмурзина А.Р., Захарова З.Х., Хохлов Д.Г. КГТУ (КАИ), кафедра АСОИУ Функциональная структура программы

Бикмурзина А.Р., Захарова З.Х., Хохлов Д.Г.

КГТУ (КАИ), кафедра АСОИУ

Функциональная структура программы


Слайд 5

1 этап. Разработка алгоритма функции main().

1 этап.

Разработка алгоритма функции main().

Слайд 6

Бикмурзина А.Р., Захарова З.Х., Хохлов Д.Г. КГТУ (КАИ), кафедра АСОИУ Алгоритм

Бикмурзина А.Р., Захарова З.Х., Хохлов Д.Г.

КГТУ (КАИ), кафедра АСОИУ

Алгоритм :

1. n

= Vvod(x); /* Ввод n и массива x */
2. Sort (x,n); /* Сортировка массива x по возрастанию*/
3. Вывод сортированного по возрастанию массива x
Слайд 7

2 этап

2 этап


Слайд 8

Бикмурзина А.Р., Захарова З.Х., Хохлов Д.Г. КГТУ (КАИ), кафедра АСОИУ Алгоритм

Бикмурзина А.Р., Захарова З.Х., Хохлов Д.Г.

КГТУ (КАИ), кафедра АСОИУ

Алгоритм функции ввода

данных

int Vvod (float x[])
{
Ввод n;
for (i=0; i Ввод x[i];
Возврат n;
}

Слайд 9

Бикмурзина А.Р., Захарова З.Х., Хохлов Д.Г. КГТУ (КАИ), кафедра АСОИУ Вывод

Бикмурзина А.Р., Захарова З.Х., Хохлов Д.Г.

КГТУ (КАИ), кафедра АСОИУ

Вывод массива x


Вывод заголовка "Упорядоченные числа:";
for (i=0; i Вывод x[i];

Слайд 10

Бикмурзина А.Р., Захарова З.Х., Хохлов Д.Г. КГТУ (КАИ), кафедра АСОИУ Метод

Бикмурзина А.Р., Захарова З.Х., Хохлов Д.Г.

КГТУ (КАИ), кафедра АСОИУ

Метод последовательного нахождения

максимума

2.5 6 14 -3 10 // рассматривается n элементов
2.5 6 10 -3 14
2.5 6 10 -3 // рассматривается n-1 элементов
2.5 6 -3 10
2.5 6 -3 // рассматривается n-2 элементов
2.5 -3 6
2.5 - 6 // рассматривается n-3 элементов
-3 2.5

Слайд 11

Бикмурзина А.Р., Захарова З.Х., Хохлов Д.Г. КГТУ (КАИ), кафедра АСОИУ Алгоритм

Бикмурзина А.Р., Захарова З.Х., Хохлов Д.Г.

КГТУ (КАИ), кафедра АСОИУ

Алгоритм функции сортировки

массива x по возрастанию

void Sort (float x[], int n)
{ for (k=n-1; k>0; k--)
{ Определение максимума среди
элементов x[0], ... , x[k] и его
индекса imax.
Обмен: x[imax] <--> x[k];
}

Слайд 12

3 этап Определение максимума среди элементов x[0], ... , x[k] и его индекса imax.

3 этап

Определение максимума среди элементов x[0], ... , x[k] и его

индекса imax.
Слайд 13

Бикмурзина А.Р., Захарова З.Х., Хохлов Д.Г. КГТУ (КАИ), кафедра АСОИУ Фрагмент

Бикмурзина А.Р., Захарова З.Х., Хохлов Д.Г.

КГТУ (КАИ), кафедра АСОИУ

Фрагмент программы:

imax =0;
for

(i =1; i <= k; i++)
if (x[i] > x[imax]) imax = i;
Слайд 14

Бикмурзина А.Р., Захарова З.Х., Хохлов Д.Г. КГТУ (КАИ), кафедра АСОИУ Программа:

Бикмурзина А.Р., Захарова З.Х., Хохлов Д.Г.

КГТУ (КАИ), кафедра АСОИУ

Программа:

#include
#define NMAX

100 /* Макс-е количество входных чисел */
/* Функция ввода данных * /
int Vvod (float x[])
{
int n; /* Количество чисел */
int i; /* Индекс текущего числа */
printf ("\nВведите количество чисел\n");
scanf ("%d", &n);
printf ("Введите числа\n");
for (i=0; i scanf("%f", &x[i]);
return n;
}
Слайд 15

Бикмурзина А.Р., Захарова З.Х., Хохлов Д.Г. КГТУ (КАИ), кафедра АСОИУ /*

Бикмурзина А.Р., Захарова З.Х., Хохлов Д.Г.

КГТУ (КАИ), кафедра АСОИУ


/* Функция

сортировки x массива по возрастанию */
void Sort (float x[], int n)
{
int k; /* Максимальный индекс просмотра*/
float r; /* Для обмена */
int imax; /* Индекс максимального элемента */
int i; /* Индекс текущего числа */
for (k=n-1; k>0; k--)
{ imax =0;
for (i =1; i <= k; i++)
if (x[i] > x[imax]) imax = i;
/* Обмен x[imax] и x[k] */
r = x[imax];
x[imax] = x[k];
x[k] = r;
}
}