Я новичок в языке C, и я пытаюсь сделать лабораторный учебник, который мы получили в uni.Basic C Program, Babylonian Algorithm
Мы попросили сделать следующее:
Задача 1. Вавилонская алгоритм для вычисления квадратного корня из числа п следующим образом: 1. Сделать предположение в ответ (вы можете выберите n/2 в качестве своего первоначального предположения).
- Вычислить г = п/догадаться
- Набор догадку = (догадку + R)/2
- вернуться к шагу 2 на столько итераций, сколько необходимо. Чем больше этапов 2 и 3 повторяется , тем ближе будет угадать квадратный корень из n.
Написать программу, которая вводит целое число для п, итерации через вавилонский алгоритм пять раз, и выводит ответ в виде двойного до двух знаков после запятой. Ваш ответ будет наиболее точным при малых значениях n.
Вот что я написал:
#include <stdio.h>
#include <math.h>
int n;
main(void){
printf("Enter a value for n: ");
scanf("%d",&n);
double guess = n/2;
for (int i = 0; i < 5; i++) {
double r = n/guess;
double guess = (guess + r)/2;
}
printf("%d",guess);
}
Где я не так? Он выплескивает смешные результаты; например, если я вводю «4» в виде n, ответ должен быть около «2», но каждый раз он дает разные огромные результаты.
Спасибо, это сработало, оба ответа были на деньги; как я могу его распечатать до 2 десятичных знаков? –
Спецификатор формата '"% .2f "'. Выясните, нужен ли вам ''% .2lf''. Я думаю, что float неявно преобразуется в double в списки переменных аргументов. – paddy
Спасибо, помощник. Spot on –