Witam, poniżej prezentuję kod źródłowy fragmentu mojego programu. W visualu 2010 wyskakuja mi komunikaty o błędzie:
1>------ Build started: Project: przeplywowy, Configuration: Debug Win32 ------
1>Build started 2011-10-26 01:43:12.
1>InitializeBuildStatus:
1> Touching “Debug\przeplywowy.unsuccessfulbuild”.
1>ClCompile:
1> brute.cpp
1>c:\users\padaka\documents\visual studio 2010\projects\przeplywowy\przeplywowy\szereg.h(116): error C2109: subscript requires array or pointer type
1>c:\users\padaka\documents\visual studio 2010\projects\przeplywowy\przeplywowy\szereg.h(117): error C2109: subscript requires array or pointer type
1>c:\users\padaka\documents\visual studio 2010\projects\przeplywowy\przeplywowy\szereg.h(117): error C2109: subscript requires array or pointer type
1>c:\users\padaka\documents\visual studio 2010\projects\przeplywowy\przeplywowy\szereg.h(118): error C2109: subscript requires array or pointer type
1>c:\users\padaka\documents\visual studio 2010\projects\przeplywowy\przeplywowy\szereg.h(125): error C2109: subscript requires array or pointer type
1>c:\users\padaka\documents\visual studio 2010\projects\przeplywowy\przeplywowy\szereg.h(126): error C2109: subscript requires array or pointer type
1>c:\users\padaka\documents\visual studio 2010\projects\przeplywowy\przeplywowy\szereg.h(126): error C2109: subscript requires array or pointer type
1>c:\users\padaka\documents\visual studio 2010\projects\przeplywowy\przeplywowy\szereg.h(127): error C2109: subscript requires array or pointer type
1>
1>Build FAILED.
1>
1>Time Elapsed 00:00:00.81
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
Bardzo proszę o pomoc gdyż nie wiem zbytnio co mogę robić źle. W kodzie źródłowym pogrubiłem elementy które podkreśla mi kompilator.
funkcja perm jak sama nazwa głosi generuje mi kolejne permutacje kolumn tablicy dwuwymiarowej, nastepnie oblicza wartość kryterium i aktualizuje najlepsze rozwiązanie zapisując tym samym permutację dla której ono występuje.
#ifndef SZEREG_H
#define SZEREG_H
/*-------------------------*/
class szereg
{
public:
int l_zadan;
int l_maszyn;
int iter;
int **TabWag;
int **TabWagPrzeplyw;
int **TabWagPrzeplywKopia;
int dana;
int cmax;
int cmaxbest;
~szereg()
{
delete [] TabWag;
delete [] TabWagPrzeplyw;
delete [] TabWagPrzeplywKopia;
}
/*-------------------------*/
void wczytaj_Wypelnij()
{
int wartosc;
iter=0;
ifstream in("dane.txt"); // plik do czytania
in >> l_maszyn; // pierwsza dana z pliku - kolumny (Maszyny)
in >> l_zadan; //ilosc wierszy (Procesy)
//warunek zakresu danych wejsciowych
if(l_zadan>MAX_I || l_maszyn>MAX_J)
{
cout<<"Za duzy zakres danych wejsciowych!"<
exit(1);
}
TabWag = new int *[l_zadan+1];//inicjowanie tablic - wartosci grafu oraz cmax
TabWagPrzeplyw = new int *[l_zadan+1];
TabWagPrzeplywKopia = new int *[l_zadan+1];
for(int tmp=0;tmp
{
TabWag[tmp] = new int[l_maszyn+1];
TabWagPrzeplyw[tmp] = new int[l_maszyn+1];
TabWagPrzeplywKopia[tmp] = new int[l_maszyn+1];
}
//wypelnianie pierwszej kolumny i pierwszego wiersza zerami
for(int a=0;a<=l_zadan;a++)
{
TabWag[a][0]=0;
TabWagPrzeplyw[a][0]=0;
TabWagPrzeplywKopia[a][0]=0;
}
for(int b=0;b<=l_maszyn;b++)
{
TabWag[0][b]=0;
TabWagPrzeplyw[0][b]=0;
TabWagPrzeplywKopia[0][b]=0;
}
//dane wejsciowe do tablic
for(int k=1;k<=l_zadan;k++)
{
for(int l=1;l<=l_maszyn;l++)
{
in>>wartosc;
dana=wartosc;
TabWag[k][l]=dana;
TabWagPrzeplyw[k][l]=dana;
TabWagPrzeplywKopia[k][l]=dana;
}
}
}
/*-------------------------*/
void wyswietl_Wagi()
{
cout<<"Wagi wierzcholkow:"<
for(int k=1;k<=l_zadan;k++)
{
for(int l=1;l<=l_maszyn;l++)
{
cout<
}
cout<
}
}
/*-------------------------*/
/*
void writeln(int *TabWagPrzeplyw, int l_maszyn)
{
iter++;
printf("\npermutacja: %d",iter);
cout << endl <
for(int i=0; i
{
cout << setw(2)<< TabWagPrzeplyw[i];
}
//oblicz_CMAX();
wyswietl_CMAX();
cout << endl;
}*/
void permut(int *TabWagPrzeplyw, int *TabWagPrzeplywKopia)
{
for(int i=1; i <= l_maszyn; i++)
{
for(int j=i+1; j <= l_maszyn; j++)
{
if(j != i)
{
for(int k=1; k <= l_zadan; k++)
{
TabWagPrzeplywKopia = TabWagPrzeplyw[k][[b]i[/b]];
TabWagPrzeplyw[k][[b]i[/b]] = TabWagPrzeplyw[k][[b]j[/b]];
TabWagPrzeplyw[k][[b]j[/b]] = TabWagPrzeplywKopia;
}
oblicz_CMAX();
is_best();
wyswietl_CMAX();
for(int k=1; k <= l_zadan; k++)
{
TabWagPrzeplywKopia = TabWagPrzeplyw[k][[b]i[/b]];
TabWagPrzeplyw[k][[b]i[/b]] = TabWagPrzeplyw[k][[b]j[/b]];
TabWagPrzeplyw[k][[b]j[/b]] = TabWagPrzeplywKopia;
}
}
}
}
}
void brute()
{
permut(*TabWagPrzeplyw, *TabWagPrzeplywKopia);
}
/*-------------------------*/
int oblicz_CMAX()
{
for(int x=1;x<=l_zadan;x++)
{
for(int y=1;y<=l_maszyn;y++)
{
TabWagPrzeplyw[x][y]=max(TabWagPrzeplyw[x-1][y],TabWagPrzeplyw[x][y-1])+TabWagPrzeplyw[x][y];
cmax=TabWagPrzeplyw[x][y];
//obliczanie cmax dla problemu przeplywowego
}
}
return cmax;
}
/*-------------------------*/
void wyswietl_CMAX()
{
cout<<"Wyniki posrednie CMAX:"<
for(int k=1;k<=l_zadan;k++)
{
for(int l=1;l<=l_maszyn;l++)
{
cout<
}
cout<
}
cout<
}
void is_best()
{
if (cmax
{//aktualize cmax & save permutation
cmaxbest=cmax;
for (int i=1; i<=l_zadan; i++)
{
for (int j=1; j<=l_maszyn; j++)
{
TabWag[i][j] = TabWagPrzeplyw[i][j];
}
}
}
}
};
#endif