'

Лекция 3

Понравилась презентация – покажи это...





Слайд 0

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


Слайд 1

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


Слайд 2

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


Слайд 3

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


Слайд 4

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


Слайд 5

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


Слайд 6

7 2 этап


Слайд 7

8 Алгоритм функции ввода данных int Vvod (float x[]) { Ввод n; for (i=0; i<n; i++) Ввод x[i]; Возврат n; }


Слайд 8

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


Слайд 9

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


Слайд 10

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


Слайд 11

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


Слайд 12

13 Фрагмент программы: imax =0; for (i =1; i <= k; i++) if (x[i] > x[imax]) imax = i;


Слайд 13

14 Программа: #include <stdio.h> #define NMAX 100 /* Макс-е количество входных чисел */ /* Функция ввода данных * / int Vvod (float x[]) { int n; /* Количество чисел */ int i; /* Индекс текущего числа */ printf ("\nВведите количество чисел\n"); scanf ("%d", &n); printf ("Введите числа\n"); for (i=0; i<n; ++i) scanf("%f", &x[i]); return n; }


Слайд 14

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; } }


Слайд 15

16 /* Главная функция */ void main (void) { float x[NMAX]; /* Обрабатываемые числа */ int n; /* Количество чисел */ int i; /* Индекс текущего числа */ /* 1. Ввод массива x */ n = Vvod(x); /* 2. Сортировка массива x по возрастанию */ Sort(x,n); /* 3. Вывод массива x */ printf("Упорядоченные числа:\n"); for (i=0; i<n; ++i) printf (" %4.1f", x[i]); }


×

HTML:





Ссылка: