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

[C++] error: cannot convert 'double (*)[25]' to 'double*' for argument '1' to 'double SGN(double*, double*)

Ostatnio zmodyfikowano 2014-03-24 09:20
Autor Wiadomość
lost90
Temat założony przez niniejszego użytkownika
[C++] error: cannot convert 'double (*)[25]' to 'double*' for argument '1' to 'double SGN(double*, double*)
» 2014-03-24 07:27:15
Jestem już pod koniec pisania programu. Zostały mi do poprawienia 2 rzeczy i nie mam pomysłu o co może chodzić (być może dlatego, że moja wiedza o c++ jest średniej jakości).

C/C++
#include <iostream>
using namespace std;

double z0[ 25 ] = { - 1, - 1, - 1, - 1, - 1, - 1, 1, 1, 1, - 1, - 1, 1, - 1, 1, - 1, - 1, 1, 1, 1, - 1, - 1, - 1, - 1, - 1, - 1 };
double macierzW[ 25 ][ 25 ];
double macierzsgn[ 25 ], macierzSGN[ 25 ];
int i, j, k;

double wywolywaniemacierzy( double * macierz )
{
    for( i = 0; i < 25; i++ )
    {
        if( macierz[ i ] == 1 )
        {
            std::cout << "* ";
        }
        else
        {
            std::cout << "  ";
        }
        if( i == 4 )
        {
            std::cout << " " << endl;
        }
        if( i == 9 )
        {
            std::cout << " " << endl;
        }
        if( i == 14 )
        {
            std::cout << " " << endl;
        }
        if( i == 19 )
        {
            std::cout << " " << endl;
        }
        if( i == 24 )
        {
            std::cout << " " << endl;
        }
    }
}

double W( double * macierz, double * macierzT )
{
    for( j = 0; j < 25; j++ )
    {
        for( i = 0; i < 25; i++ )
        {
            macierzW[ i ][ j ] = 0.04 * macierz[ i ] * macierzT[ j ] + 0.04 * macierz[ i + 1 ] * macierzT[ j + 1 ];
        }
    }
}

double SGN( double * macierzW, double * macierz )
{
    for( k = 0; k < 25; k++ )
    {
        macierzSGN[ k ] = 0;
    }
    for( i = 0; i < 25; i++ )
    {
        for( j = 0; j < 25; j++ )
        {
            macierzSGN[ i ] += macierzW[ i ][ j ] * macierz[ j ];
        }
    }
}
double sgn( double * macierz )
{
   
    for( i = 0; i < 25; i++ )
    {
        if( macierz[ i ] < 0 )
        {
            macierzsgn[ i ] =- 1;
        }
        else
        {
            macierzsgn[ i ] = 1;
        }
    }
}


int main()
{
   
   
    wywolywaniemacierzy( z0 );
    W( z0, z0 );
    SGN( macierzW, z0 );
    sgn( macierzSGN );
   
    for( i = 0; i < 25; i++ )
    {
        std::cout << macierzsgn[ i ];
    }
   
    return 0;
}

efekt jest taki, że wyskakują takie błędy:


65 32 [Error] invalid types 'double[int]' for array subscript
92 17 [Error] cannot convert 'double (*)[25]' to 'double*' for argument '1' to 'double SGN(double*, double*)'

pierwszy błąd dotyczy funkcji double SGN(double *macierzW,double *macierz), dotyczy tablicy dwuwymiarowej, ale nie widzę gdzie jest błąd. Drugiego błędu nawet za bardzo nie rozumiem, a program wskazuje go przy wywoływaniu funkcji SGN...

z góry dziękuję za odpowiedź


P-107118
DejaVu
» 2014-03-24 09:20:30
http://cpp0x.pl/forum/temat/​?id=10889
Więcej:
Frazy, które należy wpisać w wyszukiwarkę google:
P-107123
« 1 »
  Strona 1 z 1