Co liczy kod+problem ze zrozumieniem kodu
Ostatnio zmodyfikowano 2017-06-16 05:39
degel1234 Temat założony przez niniejszego użytkownika |
Co liczy kod+problem ze zrozumieniem kodu » 2017-06-15 12:55:41 Siema mam 2 problemy: Pierwszy 1) ktora funkcja wykona sie najszybciej a ktora najwolniej i dlaczego -y=a*a+a -y=pow(a,2) -y=exp(a) y=log(a) y=sin(a) Druga sprawa to problem ze zrozumieniem kodu nizej i znalezieniem w nim ewentualnego bledu ktory ponoc jest. Za co ten kod w ogole odpowiada #include<stdio.h> #include<math.h> #define LDANYCH 1200 float sigma( double * dyspersje, int liczba, float tabl[][ LDANYCH ] ) { unsigned int i = 0, k; double suma, suma_kw, dysp, sr_dysp = 0, wartosc; while( i < liczba ) { suma_kw = 0; for( suma = 0., k = 0; k < liczba; k++ ) { suma = suma + tabl[ i ][ k ]; suma_kw = suma_kw +( tabl[ i ][ k ] ) *( tabl[ i ][ k ] ); } dysp = suma_kw /(( double ) k -( suma / liczba ) *( suma / liczba ) ); if( dysp != 0.) dyspersje[ i ] = sqrt( dysp ); else { dyspersje[ i ] = 0; } wartosc = pow( dysp, 1 / 2 ); sr_dysp = sr_dysp + dysp; } sr_dysp /= liczba; return sr_dysp; }
|
|
Monika90 |
» 2017-06-15 13:20:16 Czas wykonania funkcji zależy od implementacji, może też zależeć od typu zmiennej a i od jej wartości.
Natomiast kod jest ogólnie bez sensu. Może źle przepisałeś? |
|
degel1234 Temat założony przez niniejszego użytkownika |
» 2017-06-15 15:37:18 Poprawilem tylko tyle ze przy funkcji sigma i argumencie dyspersje zapomnialem dopisać * i dopisalem brakujacą * przy mnozeniue elementow tablic. Teraz jest tak jak mam w poleceniu. Mam wskazac usterki kodu, a ja nawet nie wiem co to liczy tak naprawde(jaki jest cel obliczen)
W kodzie zmienilem poki co tylko tyle ze usunalem unsigned przy deklarowaniu zmiennych i i k bo wyskakiwal blad
Co do szybkosci wykonania tych funkcji to w poleceniu mam jeszcze double a=5 |
|
Monika90 |
» 2017-06-15 16:38:04 wartosc = pow( dysp, 1 / 2 ); Wykładnik potęgi jest równy 0, bo 1 / 2 to jest 0, a po drugie zmienna wartosc nie jest nigdzie indziej używana, więc przypisanie jej czegokolwiek nie ma sensu. |
|
karambaHZP |
» 2017-06-16 05:39:17 Można jeszcze dorzucić utratę precyzji. Funkcja deklaruje zwrócenie float tymczasem za return stoi zmienna typu double . |
|
« 1 » |