Sei sulla pagina 1di 17

Cuaderno de prcticas de Programacin

Grado en Fsica

Memoria 4

Alumno: Joaqun Montes Fernndez DNI: 47500967X ru!o: "#$

Memor%a de !r&t%&as de "ro'rama&%(n)

rado en Fs%&a) De!to* Arqu%te&tura + ,e&nolo'a de -om!utadores

EJERCICIO DE LABORATORIO ! "#I$% & ' Enunciado(


#asndose en el !ro'rama real%zado en el la.orator%o) /amos a 0a&er un estud%o de la !re&%s%(n* "ara ello) se !%de: a* "rue.e a 1%2ar la !re&%s%(n de las /ar%a.les en 5 /alores d%st%ntos entre $00 + 3000* "ara &ada uno de esos /alores !rue.e 5 /alores d%st%ntos del n4mero de %tera&%ones 5entre $00 + $0006* .* 7se la 1un&%(n clock () !ara &ronometrar el t%em!o que se tarda en &al&ular la solu&%(n en &ada &aso* "ara ello) de.e llamarla antes + des!u8s de llamar a CalcularPI (), &al&ulando la d%1eren&%a de t%em!o entre am.as llamadas* &* 9eal%&e una ta.la &on 4 &olumnas que %nd%que: la !re&%s%(n es&o'%da) el n4mero de %tera&%ones real%zado) el t%em!o %n/ert%do en el &l&ulo + el n4mero de de&%males &orre&tos o.ten%dos !ara "I* "ara &ada /alor de la !re&%s%(n) se:ale la 1%la (!t%ma) es de&%r) la &orres!ond%ente al me2or resultado &on el menor n4mero de %tera&%ones 5me2or n4mero de de&%males &orre&to &on el menor n4mero de %tera&%ones6*

)' Cdigo *uente(


#include #include #include #include #include mpf_class mpf_class mpf_class mpf_class <iostream> <cstdlib> <ctime> <gmp.h> <gmpxx.h> CalcularRaiz(mpf_class x, int n) Calcular!otencia(mpf_class x, int n) Calcular"tan(mpf_class x, int n) Calcular!i(int n)

using namespace std ##$uncion para clacular la raiz cuadrada de x usando el algoritmo babilonico. ##Recibe el %alor de x & el numero de iteraciones a realizar mpf_class CalcularRaiz(mpf_class x, int n) ' int i mpf_class r, t r ( x t ( ) for(i() i<n i**)

Memor%a de !r&t%&as de "ro'rama&%(n)

rado en Fs%&a) De!to* Arqu%te&tura + ,e&nolo'a de -om!utadores

' t ( r r ( (x#r * r)#+ , return r , ##$uncion para calcular la potencia de un real, recibe la base real & el exponente entero mpf_class Calcular!otencia(mpf_class x, int n) ' int i mpf_class prod prod ( -.) for(i(- i<(n i**) prod .( x return prod , ##$uncion para calcular el arcotangente de x usando la serie de /regor&, recibe el %alor de x & el numero de iteraciones mpf_class Calcular"tan(mpf_class x, int n) ' int i, num mpf_class suma suma ( ).) for(i(- i<(n i**) ' num ( +.i0if(i1+ (( )) suma 0(Calcular!otencia(x,num)#num else suma *(Calcular!otencia(x,num)#num , return suma , ##$uncion para calcular el %alor de !2, recibe el numero de iteraciones mpf_class Calcular!2(int n) ' return 3.Calcular"tan(-#CalcularRaiz(4,n),n) , int main(%oid) ' int n cloc5_t t-, t+ double numsecs mpf_set_default_prec(6))) mpf_class %alor cout << 78umero de iteraciones9 7

Memor%a de !r&t%&as de "ro'rama&%(n)

rado en Fs%&a) De!to* Arqu%te&tura + ,e&nolo'a de -om!utadores

cin

>> n

t- ( cloc5() %alor ( Calcular!2(n) t+ ( cloc5() numsecs ( (double)(t+0t-)#C:;C<=_!>R_=>C cout.precision(+))) cout << 7?alor de !2 calculado9 7 << %alor << endl cout << 7@iempo9 7 << numsecs << 7 segundos7 << endl s&stem(7pause7) return ) ,

+' Prue,as de- programa( Banco de prue,as


PRECI.I$% 400 %/ ITERACIO%E. 300 400 600 <00 $000 TIEMPO 0.' 0)$6 0)6; $)<3 ;)<< 5)4< DECIMALE. C1 97 $34 $34 $34 $34

PRECI.I$% <00

%/ ITERACIO%E. 300 400 600 <00 $000

TIEMPO 0.' 0)55 3)03 ;)45 <)<< 9)7<

DECIMALE. C1 97 $93 340 340 340

Memor%a de !r&t%&as de "ro'rama&%(n)

rado en Fs%&a) De!to* Arqu%te&tura + ,e&nolo'a de -om!utadores

PRECI.I$% $300

%/ ITERACIO%E. 300 400 600 <00 $000

TIEMPO 0.' 0)77 3)9 7)04 $$)9$ $<)7

DECIMALE. C1 97 $93 3<7 ;66 ;66

PRECI.I$% $600

%/ ITERACIO%E. 300 400 600 <00 $000 $)3

TIEMPO 0.'

DECIMALE. C1 97 $93 3<< ;<; ;<;

4)<$ $0)< $9)37 ;0

PRECI.I$% 3000

%/ ITERACIO%E. 300 400 600 <00 $000

TIEMPO 0.' $)57 6);5 $4 34)6 ;<)4;

DECIMALE. C1 97 $93 3<< ;<; 479

Memor%a de !r&t%&as de "ro'rama&%(n)

rado en Fs%&a) De!to* Arqu%te&tura + ,e&nolo'a de -om!utadores

Capturas de panta--a

Memor%a de !r&t%&as de "ro'rama&%(n)

rado en Fs%&a) De!to* Arqu%te&tura + ,e&nolo'a de -om!utadores

EJERCICIO DE LABORATORIO )! "#I$% ' Enunciado(


Intente &al&ular un alto n4mero de de&%males de "I %n&rementando &omo est%me ne&esar%o tanto la !re&%s%(n ut%l%zada &omo el n4mero de %tera&%ones* Ind%que el /alor 1%nal &onse'u%do !ara "I) el n4mero de de&%males &orre&tos o.ten%do) el n4mero de %tera&%ones ut%l%zado) el /alor de la !re&%s%(n ut%l%zada + el t%em!o de &(m!uto que se 0a requer%do !ara &al&ularlo 5en &ursos anter%ores los alumnos 0an o.ten%do entre 500 + 3000 de&%males &orre&tos6*

)' Prue,as de- programa( Capturas de panta--a

"re&%s%(n: ;000 N4mero de de&%males &orre&tos: 905

Memor%a de !r&t%&as de "ro'rama&%(n)

rado en Fs%&a) De!to* Arqu%te&tura + ,e&nolo'a de -om!utadores

EJERCICIO DE LABORATORIO +! "#I$% & ' Enunciado(


=a .%.l%ote&a M" tam.%8n !erm%te de&larar enteros &on un n4meros de &%1ras ar.%trar%o 5t%!o de dato mpz_class6) lo que !erm%te tra.a2ar &on /alores enteros tan altos &omo sea ne&esar%o* >n el &aso de estos t%!os enteros no 0a&e 1alta %nd%&ar la !re&%s%(n) +a que se a2ustar automt%&amente se'4n las ne&es%dades de los &l&ulos de 1orma d%nm%&a* a* 9eal%&e una 1un&%(n !ara &al&ular el t8rm%no n?8s%mo de la su&es%(n de F%.ona&&% de 1orma no re&urs%/a* =a 1un&%(n de.e de/ol/er un /alor entero* 9eal%&e una ta.la que muestre los resultados o.ten%dos !ara n4meros altos* >n d%&0a ta.la de.e mostrar el /alor de n + el de F5n6* .* @a&%endo uso de las 1un&%ones que se 0an %m!lementado en esta !r&t%&a 5usando M"6 real%&e una 1un&%(n !ara &al&ular el /alor n4mero de a4reo 5el n4mero A6 a !art%r de la s%'u%ente eB!res%(n: A C l%m5n?D%n16 F5nE$6FF5n6 donde F5n6 es el t8rm%no n?8s%mo de la su&es%(n de F%.ona&&%* Ind%que en una ta.la el n4mero de de&%males &orre&tos en&ontrados !ara d%st%nto n4mero de %tera&%ones) as &omo el t%em!o %n/ert%do en &ada &aso* >l /alor del n4mero a4reo) &ons%derando los !r%meros 40 de&%males !ara que !ueda &om!arar resultados) es:

AC$)6$<0;;9<<749<94<4<3045<6<;4;656;<$$7730;

)' Cdigo *uente(


#include #include #include #include #include <iostream> <cstdlib> <ctime> <gmp.h> <gmpxx.h>

mpz_class $ib(int n) mpf_class "ureo(int n) using namespace std int main(%oid) '

Memor%a de !r&t%&as de "ro'rama&%(n)

rado en Fs%&a) De!to* Arqu%te&tura + ,e&nolo'a de -om!utadores

int n, i cloc5_t t-, t+ mpf_set_default_prec(6))) mpf_class %alor double numsecs cout << 72ntroduzca n9 7 cin >> n t- ( cloc5() %alor ( "ureo(n) t+ ( cloc5() numsecs ( (double)(t+0t-)#C:;C<=_!>R_=>C cout.precision(+))) cout << 7?alor9 7 << %alor << endl cout << 7@iempo9 7 << numsecs << 7 segundos7 << endl s&stem(7pause7) return ) , mpz_class $ib(int n) ' int 5 mpz_class i, A, t i ( A ( ) for(5() 5<(n0- 5**) ' t ( i * A i ( A A ( t , return A , mpf_class "ureo(int n) ' mpf_set_default_prec(6))) mpf_class p p ( (mpf_class)$ib(n)#$ib(n0-) return p ,

Memor%a de !r&t%&as de "ro'rama&%(n)

rado en Fs%&a) De!to* Arqu%te&tura + ,e&nolo'a de -om!utadores

+' Prue,as de- programa( Banco de prue,as


PRECI.I$% 400 $000 3000 %/ ITERACIO%E. $00000 500000 $000000 TIEMPO 0.' 3)$5 53)3< 30<)66 DECIMALE. C1 $35 ;56 65<

Capturas de panta--a

10

Memor%a de !r&t%&as de "ro'rama&%(n)

rado en Fs%&a) De!to* Arqu%te&tura + ,e&nolo'a de -om!utadores

11

Memor%a de !r&t%&as de "ro'rama&%(n)

rado en Fs%&a) De!to* Arqu%te&tura + ,e&nolo'a de -om!utadores

EJERCICIO DE LABORATORIO ! "#I$% 2 ' Enunciado(


9eal%&e una 1un&%(n que lea todo el 1%&0ero palabras.dat + lo &o!%e en un /e&tor de &adenas de &ara&teres*

)' Cdigo *uente(


%oid :eer:ista&pasara?ector(%oid) ' ifstream archi%o int i archi%o.open(7palabras.txt7) if(Barchi%o.is_open()) cout << 7>rror al abrir el fichero7 string palabra i ( ) Chile(Barchi%o.eof()) ' archi%o >> palabra %DiE ( palabra i** , archi%o.close() return ,

12

Memor%a de !r&t%&as de "ro'rama&%(n)

rado en Fs%&a) De!to* Arqu%te&tura + ,e&nolo'a de -om!utadores

EJERCICIO DE LABORATORIO )! "#I$% 2 ' Enunciado(


9eal%&e una 1un&%(n que &o!%e el &onten%do de un /e&tor de &adenas de &ara&teres so.re un 1%&0ero de teBto) es&r%.%endo &ada &adena en una lnea d%st%nta*

)' Cdigo *uente(


%oid :eer?ector&pasara:ista(%oid) ' ofstream archi%o int i,A archi%o.open(7palabras+.txt7) if(Barchi%o.is_open()) cout << 7>rror al abrir el fichero7 i ( ) Chile(i<++F))) ' archi%o << %DiE << endl i** , archi%o.close() return ,

13

Memor%a de !r&t%&as de "ro'rama&%(n)

rado en Fs%&a) De!to* Arqu%te&tura + ,e&nolo'a de -om!utadores

EJERCICIO DE LABORATORIO +! "#I$% 2 ' Enunciado(


9eal%&e una 1un&%(n que ordene un /e&tor de &adenas de &ara&teres atend%endo a la lon'%tud de d%&0as &adenas) de 1orma des&endente 5en !r%mer lu'ar las de ma+or lon'%tud6* 7se el al'or%tmo de la .ur.u2a*

)' Cdigo *uente(


%oid ;rdena@amano(string %DE, int n) ' int i,A string aux for(i(- i<n i**) for (A(n0- A>(i A00) if(%DAE.length()>%DA0-E.length())' aux ( %DAE %DAE ( %DA0-E %DA0-E ( aux , return ,

14

Memor%a de !r&t%&as de "ro'rama&%(n)

rado en Fs%&a) De!to* Arqu%te&tura + ,e&nolo'a de -om!utadores

+' Prue,as de- programa(

Banco de prue,as

15

Memor%a de !r&t%&as de "ro'rama&%(n)

rado en Fs%&a) De!to* Arqu%te&tura + ,e&nolo'a de -om!utadores

EJERCICIO DE LABORATORIO 4! "#I$% 2 ' Enunciado(


I'ual que el e2er&%&%o anter%or !ero %m!lementando el al'or%tmo de sele&&%(n*

)' Cdigo *uente(


%oid ;rdena@amano=eleccion(string %DE, int n) ' int i,A,posmin string aux for(i() i<(n0-) i**) ' posmin ( i for(A(i*- A<n A**) if(%DAE.length()>%DposminE.length())' posmin ( A aux ( %DAE %DAE ( %DA0-E %DA0-E ( aux , , return ,

16

Memor%a de !r&t%&as de "ro'rama&%(n)

rado en Fs%&a) De!to* Arqu%te&tura + ,e&nolo'a de -om!utadores

+' Prue,as de- programa( Banco de prue,as

17

Potrebbero piacerti anche