PDA

View Full Version : [C]Calcolare la radice quadra di un numero


frizzo28
18-09-2005, 17:54
Ciao a tutti :) ho scritto questo codice per il calcolo della radice quadra in c ma nn funziona...O meglio mi sono scaricato il foglio excel dahttp://www.matematicamente.it/approfondimenti/erone/ e poi ho scritto il codice per C basandomi su quello :muro:


#include<stdio.h>
#include<stdlib.h>
double a,h,f4,d5,f5,d6,f6,d7,f7,d8,f8,d9,f9,d10,f10;


main() {
printf("inserisci un numero intero: ");
scanf("%d",&a);
h = 10;
f4 = a/h;
d5 = (h + f4)/2;
f5 = a / d5;
d6 = (d5 + f5)/2;
f6 = a /d6;
d7 = (d6+f6)/2;
f7 = a/d7;
d8 = (d7+f7)/2;
f8 = a/d8;
d9 = (d8+f8)/2;
f9 = a/d9;
d10 = (d9+f9)/2;
f10 = a/d10;
printf("\n La radice quadrata di %d arrotondata per difetto e' %d",a, d9);
printf("\n La radice quadrata di %d arrotondata per eccesso è %d \n",a, f10);
system("pause");
return 0;
}


P.S io come compilatore uso dev-c++ della blodscheed
P.P.S.Siccome sono un newsbie della programmazione (sono 5 giorni che sto a studia c) vi prego di spiegarvi il modo chiaro.
Ciao a tutti e grazie in anticipo :stordita:

anx721
18-09-2005, 18:48
Per implementare l'algoritmo devi rifarti alla formula secono la quale l'approssimazione (n+1)-esima della radice quadrata di N la ricavi dalla precedente cosi:

H<n+1> = 1/2 * (H<n> + N / H<n>)

Per calcolarti le varie approssimazioni devi quindi utilizzare un ciclo for, che puoi far ripetere un numero fisso divolte, ad esempio 10 volte, o finchè l'errore dell'approssimazione è abbastanza piccolo.

Quello che devi fare quindi è:

- far inserire all'utente un nuemero N che devi acquisire come double: scanf("%lf", &N); ("%lf" non "%d") : %d acquisice un int, %lf un double

- sceglierti h in modo che sia minore di N, ad esempio h = N/2.0

- eseguire un ciclo for, ad esempio per 10 volte, in cui aggiorni la variabile h con la formula:

h = (1.0/2) * (h + N / h);

71104
18-09-2005, 20:09
frizzo28, chiariamo una cosa prima: ti è stato specificamente richiesto di creare un algoritmo per il calcolo della radice quadrata o devi solo realizzare un programma o una parte di esso che la calcoli? cioè in altre parole, sei al corrente dell'esistenza della funzione sqrt che si trova in math.h? :)

frizzo28
28-11-2005, 19:39
no!!!! Non la conoscevo. Tks ho guardato su internet math.h e l'ho trovata :D grz