#include <stdio.h>
#define epsilon 0.000001
double fabs(double x)
{
/* berechnet den Absolutbetrag einer Fliesskommazahl */
if(x<0)
return -x;
else
return x;
}
double heron(double y)
{
double x_old=0.0, x_new = 1.0;
/* Initialisierung des Verfahrens */
while(fabs(x_new-x_old)>epsilon)
{
/* solange das Ergebnis noch nicht genau genug ist:
eine weitere Iteration gem¨aß Heron-Verfahren */
x_old=x_new;
x_new=0.5*(x_old+y/x_old);
}
return x_new;
}
int main()
{
double y;
printf("Geben Sie y ein: ");
/* Wir wollen m¨oglichst genau rechnen, deshalb nehmen wir
eine Fliesskommazahl doppelter Genauigkeit (double) f¨ur y.
Eine Variable vom typ double kann man mit %lf ausgeben
(printf) bzw. einlesen (scanf).*/
if(scanf("%lf", &y)!=1)
{
printf("Sie m¨ussen eine reelle Zahl eingeben. \n");
return -1;
}
if(y<0)
{
printf("Die Wurzel einer negativen Zahl ist nicht definiert. \n");
return -2;
}
}