Предусловие-цикл-постусловие - C (СИ)
Формулировка задачи:
Доброго времени суток.
Хочу обратиться к Вам за помощью.
Нужно решить задачу.
Дано Е
Нужно найти первое n при котором аn будет меньше Е по формуле an=1\n^2 (n - натуральное)
n вывести на экран.
С предусловием и постусловием.
Я пишу под Linux-ом и виндовые библиотеки не использую.
P.S. Пока знаю только два цикла и не знаю какой использовать...
//То, что [S]получилось[/S] #include <stdio.h> #include <stdlib.h> #include <math.h> void scan(float a, double n, float E) { for (n; n<=100; n++) { if (E<=1) { a=1/(pow(n,2)); return 1; } else { printf("Ответ: %f", &n); } } } int main() { int n; float a,E; n=0; printf("Введите число E\n"); scanf("%f",&E); if (E==0) { printf("Ответ: 0"); } else { scan (a,n,E); // printf("Ответ: %f", &n-1); } }
Решение задачи: «Предусловие-цикл-постусловие»
textual
Листинг программы
#include <stdio.h> #include <stdlib.h> #include <math.h> void scan(int* n, float E) { float a = 0.0f; if (E<=1) { do { a=1/(float)((*n)*(*n)); ++(*n); } while (a >= E); } else { printf("Вы ввели неверное число \n"); exit(EOF); return 0; } } int main() { int n; float E; n=0; printf("Введите число меньше единицы E\n"); scanf("%f",&E); if (E==0) { printf("Ответ: 0"); } else { scan (&n,E); printf("Ответ: %d\n", n-1); } }
Объяснение кода листинга программы
- В функции
scan
происходит следующая последовательность действий:- Переменная
a
инициализируется значением 0.0f. - Если
E
меньше или равно 1, то выполняется циклdo
, в котором:- Вычисляется значение
a
по формуле1/(float)((*n)*(*n))
(предположительно, это вычисление квадратного корня). - Значение
n
увеличивается на 1.
- Вычисляется значение
- Цикл выполняется до тех пор, пока
a
не станет меньшеE
. - Если условие
E<=1
не выполняется, то выводится сообщение об ошибке и программа завершается. - Возвращается значение 0.
- Переменная
- В функции
main
происходит следующая последовательность действий:- Переменные
n
иE
инициализируются нулевыми значениями. - Пользователю предлагается ввести число
E
меньше 1. - Если
E
равно 0, то выводится сообщениеОтвет: 0
. - Если
E
не равно 0, то вызывается функцияscan
с аргументамиn
иE
. - После выхода из функции
scan
выводится сообщениеОтвет: n-1
, гдеn
- это значение, которое было передано в функциюscan
.
- Переменные
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д