tiempo de ejecucion... mi codigo...
#include <iostream>
#include <windows.h>
#include <time.h>
using namespace std;
int main(){
int precision, i = 0;
float pi = 4;
cout << "ingrese un grado de precision: ";
cin >> precision;
clock_t tStart = clock();
while (i++ < precision)pi += ((i%2==0?4:-4)/(1+i*2.0f));
printf ("\npi es: %.10f \n" , pi);
printf("Time taken: %.4fs\n", (double)(clock() - tStart)/CLOCKS_PER_SEC);
system("pause");
return 0;
}
numero introducido: 10.000.000
resultado: 3.1415970325
tiempo: 0.2270
(con 1.000.000.000 tarda 22 sec)
codigo leosansan (modif para el tiempo)
#include <iostream>
#include <windows.h>
#include <time.h>
using namespace std;
int main(){
int n,signo=-1 ;
float b=1,i;
cout<<"Ingrese el numero de terminos: ";
cin>>n;
clock_t tStart = clock();
for(i=3;i<=2*n-1;i+=2,signo*=-1)
b+=(1/i)*signo;
cout<<"Pi= " <<4*b<<endl;
printf("Time taken: %.4fs\n", (double)(clock() - tStart)/CLOCKS_PER_SEC);
system("pause");
return 0;
}
numero introducido: 10.000.000
resultado: 3.1416
tiempo: 0.0980
->anotacion... si metes 100.000.000 o más pasa más de 50 segundos sin hacer nada, me cansé de esperar
el codigo de yoel_alejando (modificado un par de errores, con "n" e "i" y que solo haga una impresion final
#include <iostream>
#include <windows.h>
#include <time.h>
using namespace std;
int main(){
double numero;
int n, N;
int signo;
cout << "numero de terminos: ";
cin >> N;
cout << endl;
clock_t tStart = clock();
numero = 4;
signo = -1;
for ( n = 1; n <= N; n++, signo*=-1 ) {
numero += signo * 4. / (2*n + 1);
}
cout << "pi es: " << numero << endl;
printf("Time taken: %.4fs\n", (double)(clock() - tStart)/CLOCKS_PER_SEC);
system("pause");
return 0;
}
numero introducido: 10.000.000
resultado: 3.14159
tiempo: 0.0960
(con 1.000.000.000 tarda 10 sec)
el codigo de
yoel_alejandro es el ganador
quedó muy eficiente
ya veo que hiperresumir todo no es tan bueno
chicos usen printf es por el bien de todos o bueno de todos los decimales que fueron calculados en vano! XD