Язык Си. Алгоритм Свойства алгоритма дискретность состоит из отдельных шагов (команд) понятность
Скачать 4.66 Mb.
|
Алгоритм Евклида«5»: Выполнить задание на «4» и подсчитать число шагов алгоритма для каждого случая.
Последовательности Примеры:
1, 2, 4, 7, 11, 16, … 1, 2, 4, 8, 16, 32, … an = n a1 = 1, an+1 = an+1 a1 = 1, an+1 = an + n an = 2n-1 a1 = 1, an+1 = 2an b1 = 1, bn+1 = bn+1 c1 = 2, cn+1 = 2cn Последовательности Задача: найти сумму всех элементов последовательности, которые по модулю больше 0,001: Элемент последовательности (начиная с №2):
b = b+1; c = 2*c; z = -z; Алгоритм начало S конец нет да |a| > 0.001? S = S + a; S = 0; b = 1; c = 2; z = -1; a = 1; начальные значения a = z*b/c; b = b + 1; c = 2*c; z = -z; первый элемент a = 1; S = 0; новый элемент изменение Перестановка? ? Программа #include main() { int b, c, z; float S, a; S = 0; z = -1; b = 1; c = 2; a = 1; while (fabs(a) > 0.001) { S += a; a = z * b / c; z = - z; b ++; c *= 2; } printf ("S = %10.3f", S); } переход к следующему слагаемому начальные значения увеличение суммы расчет элемента последовательности математические функции fabs – модуль вещественного числа Что плохо? ? , b; чтобы не было округления при делении Задания «4»: Найти сумму элементов последовательности с точностью 0,001: Ответ: S = 1.157 «5»: Найти сумму элементов последовательности с точностью 0,001: Ответ: S = 1.220 Цикл с постусловием Задача: Ввести целое положительное число (<2000000) и определить число цифр в нем. Проблема: Как не дать ввести отрицательное число или ноль? Решение: Если вводится неверное число, вернуться назад к вводу данных (цикл!). Особенность: Один раз тело цикла надо сделать в любом случае проверку условия цикла надо делать в конце цикла (цикл с постусловием). Цикл с постусловием – это цикл, в котором проверка условия выполняется в конце цикла. Цикл с постусловием: алгоритм начало конец нет да n <= 0? тело цикла условие блок «типовой процесс» ввод n основной алгоритм Программа main() { int n; do { printf("Введите положительное число\n"); scanf("%d", &n); } while ( n <= 0 ); ... // основной алгоритм } условие Особенности:
Сколько раз выполняется цикл? a = 4; b = 6; do { a ++; } while (a <= b); 3 раза a = 7 a = 4; b = 6; do { a += b; } while ( a <= b ); 1 раз a = 10 a = 4; b = 6; do { a += b; } while ( a >= b ); зацикливание a = 4; b = 6; do b = a - b; while ( a >= b ); 2 раза b = 6 a = 4; b = 6; do a += 2; while ( a >= b ); зацикливание Задания (с защитой от неверного ввода) «4»: Ввести натуральное число и определить, верно ли, что сумма его цифр равна 10. Пример: Введите число >= 0: Введите число >= 0: -234 1233 Нужно положительное число. Нет Введите число >= 0: 1234 Да «5»: Ввести натуральное число и определить, какие цифры встречаются несколько раз. Пример: Введите число >= 0: Введите число >= 0: 2323 1234 Повторяются: 2, 3 Нет повторов. Тема 6. Циклы с переменной Цикл c переменной Цикл – это многократное выполнение одинаковой последовательности действий.
Задача. Вывести на экран кубы целых чисел от 1 до 8 (от a до b). Особенность: одинаковые действия выполняются 8 раз. Можно ли решить известными методами? ? Алгоритм начало конец нет да N <= 8? N = 1; N ++; вывод cubeN cubeN = N*N*N; |