Struktura w DEV c++

0

Mam taki problem otóż staram się nauczyć programować w c++ z pomocą DEV c++ bardziej przejrzyściej. W tym celu tworze projekt i tworze oddzielnie pliki. W pliku głównym main tylko używam include innych i wszystko jest ok. Ale mam pewien z problem z jedna struktura i programem. Nie przytoczę go całkowicie bo to dość duży kod. Ale w skrócie.
-Tworze pewna strukturę w pliku main,
-tworze tablice tej struktury pliku main,
-inicjuje funkcje pobierająca tablice i zwracającą ją inny plik projektu,
Sprawdziłem wszystko dokładnie lecz wywala mi błąd 'element' does not name a type
element to struktura. Jak by oddzielny plik nie widział struktury. Jak mógłbym rozwiązać ten problem? Co do samej funkcji jest ok. sprawdziłem ją gdy znajduje się bezpośrednio w pliku main. jest ok. próbowałem dodać sama strukturę do pliku z funkcja ale również nie działa. CO mam zrobić ? z góry thx za odpowiedz.

0

Oczywiście że nie widzi bo musiałbyś zaincludować main aby widział, a wtedy cykliczny include.
Wiec wynieś deklaracje struktury do osobnego pliku .h który dołącz do głownego oraz do dodatkowego pliku.

P.S. Dev-C++ nie ma nic do rzeczy. Każdy kompilator (łącznie z tym używanym w Dev-C++) zareaguje na to tak samo.

0

Racja. Taka oczywista rzecz a ciężko by było mi na nie tak porostu wpaść. Wielkie dzieki.
A i jeszcze jedno co ma zawierać plik.h ze struktura ? tylko struktura? bo wyskakuje mi po stworzeniu pliku ze struktura i dodaniu include do main komunikat " redefinition of 'struct element' ". I nadal nie wiem co robic.

0

Pozwolę sobie jeszcze o jedno zapytać. Otóż mam sortowanie elementów tablicy zawierającej struktury. I sortuje ją za pomocą pierwszej Litery pliku struktury nazwa. Takie sortowanie pseudo alfabetyczne. Dopatrzy sie ktos może błędu w funkcji?

element *fun_sortowanie(element *tab,int *wsk_ilosc_danych)
{
	fstream dane;
	int i,j,nr;
	element min;
	for(i=0;i<*wsk_ilosc_danych;i++)
	{
		min=tab[i];
		for(j=i+1;j<*wsk_ilosc_danych;j++)
		{
			if(min.nazwa[0]>tab[j].nazwa[0])
			{
				min=tab[j];
				nr=j;
			}
		
		}	
			tab[nr]=tab[i];
			tab[i]=min;
	}
 return tab;

}
0

@vip268 klasyka gatunku czyli przypadek brzegowy. Zobacz co sie stanie jeśli pierwsza pętla dojdzie do ostatniego elementu. Nie wejdziesz do drugiej pętli więc zmienna "nr" będzie miała wartość z poprzedniej pętli a ty cośtam zaczniesz przypisywać ;]

0

wystarczy taka drobna poprawka: min=tab[nr=i];

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