Error - invalid types 'double[int]' for array subscript - nie wiem, jak naprawić ten błąd.

0

Witam!
Po pierwsze przyznam się i przeproszę: jestem kiepski w programowaniu! Ale co zrobić... muszę napisać program i napisałem na razie coś takiego (program nie jest skończony, ale chciałem sprawdzić czy to co napisałem robi to co chciałbym żeby robiło):

#include <iostream>
using namespace std;

	double z0[25]={0,0,0,0,0,0,1,1,1,0,0,1,0,1,0,0,1,1,1,0,0,0,0,0,0};
	double z1[25]={0,0,0,0,0,0,1,1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,0,0,0};
	double z2[25]={0,1,1,1,0,0,1,0,1,0,0,1,0,1,0,0,1,1,1,0,0,0,0,0,0};
	double z3[25]={0,0,1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1,0,0};
	double macierzW[25][25],macierzSNG[25];
	int i,j;
	
	
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)
{
	double macierzW[25];
	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* macierz)
{
	double macierzsgn[25];
	for (i=0;i<25;i++)
	{
		if (macierz[i]<0)
		{
			macierzsgn[i]=-1;
		}
		else
		{
			macierzsgn[i]=1;
		}
	}
}

double SGN(double *macierz, double *macierz2)
{
	double macierzSGN[25];
	for (j=0;j<25;j++)
	{
		for (i=0;i<25;i++)
		{
			macierzSGN[j]=macierzSGN[j]+macierz[i][j]*macierz2[i];
		}
	}
}

int main()
{

	
	wywolywaniemacierzy(z0);
	W(z0,z0);
		for (int j=0;j<25;j++)
	{
		for (int i=0;i<25;i++)
		{
			std::cout << macierzW[i][j];
		}
			std::cout << "  "<< endl;
	}
	
	return 0;
}

Problem znajduje się w funkcji double W(double *macierz, double *macierzT) i double SGN(double *macierz, double *macierz2), w obu przypadkach chodzi o to samo.

53 17 [Error] invalid types 'double[int]' for array subscript

domyślam się, że coś spieprzyłem z tablicą dwuwymiarową, ale po kilku godzinach nie mam pojęcia co.
Mam nadzieję, że ktoś życzliwy mi pomoże. Z góry dziękuję za odpowiedź.

0

Gdybyś mógł udzielić rąbka tajemnicy: po jaką cholerę stosujesz \ gdziekolwiek występuje []?

1

Sprawdź sobie ilu wymiarowe masz tablice i co do nich przypisujesz ewentualnie jak je przekazujesz do funkcji. :)

0

te "" powstały w jakiś sposób podczas przenoszenia kodu z programu do postu. Nie ma ich w kodzie i nie wiem skąd się tu wzięły.

Byś może jestem bardzo w to kiepski, ale dla mnie rozmiary, przypisania i przekazywanie wygląda dobrze...

0

Rzecz w tym, że błędy wskazują na to, że te \ jednak tam są.
Wklej kod normalnie.

1

W funkcji double W, tablica macierzW powinna być dwuwymiarowa. W double SGN jako pierwszy parametr funkcji też powinien być tablicą dwuwymiarową.

2

Przede wszystkim, deklarujesz prawie taką samą zmienną dwa razy, raz globalnie i raz w funkcji:

double macierzW[25][25] // Globalna dwuwymiarowa
double W(double *macierz, double *macierzT)
{
double macierzW[25]; // lokalna jednowymiarowa

Poza tym, funkcje są określone jakoby miały zwracać double, a ty nic nie zwracasz z nich, co jest błędem.

0

w czasie naprawiania błędów zadeklarowałem tablicę globalnie i zapomniałem usunąć lokalną deklaracje, a ta druga była deklarowana jako jednowymiarowa. Głupie niedopatrzenie!
Dzięki wielkie za odpowiedź.

1 użytkowników online, w tym zalogowanych: 0, gości: 1