Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Co liczy kod+problem ze zrozumieniem kodu

Ostatnio zmodyfikowano 2017-06-16 05:39
Autor Wiadomość
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

C/C++
#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;
}
P-162571
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ś?
P-162574
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
P-162576
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.
P-162577
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
.
P-162587
« 1 »
  Strona 1 z 1