Odpověď na: proměnný název proměnné
Úvodní stránka › Fórum › Software › Jazyky › Jazyk Wiring › proměnný název proměnné › Odpověď na: proměnný název proměnné
Je tam více problémů.
Jeden problém je v tzv. scope – česky tuším rozsah platnosti proměnných.
Na začátku si vytvoříte pole diody, které je globální – můžete k němu přistupovat ve všech funkcích. Potom si třeba ve funkci a vytvoříte pole diody, které je pro tuto funkci lokální. A tím zastíníte globální pole diody. Dále dojde k zavolání funkce zobraz(), ale ta nevidí to lokální pole z funkce a, ale globální pole diody definované na začátku.
Kdyby se nejednalo o pole, stačilo by odebrat klíčové slovo boolean ve funkcích a pak už by se měnila hodnota globální proměnné. U pole to ale tak jednoduché není, protože nejde napsat ve funkci diody[3][3] = {{1,1,1},{1,0,1},{1,1,1}};
.
Napadají mě dvě cesty, jak to řešit.
První možnost:
Vytvoříte si několik globálních polí, která budou obsahovat požadované sekvence
Třeba: boolean v1[3][3] = {{1,1,1},{1,0,1},{1,1,1}};
a potom v jednotlivých funkcích překopírujete obsah požadovaného pole do pole diody.
memcpy(diody, v1, 9 * sizeof(boolean));
O memcopy viz zde: http://www.cplusplus.com/reference/cstring/memcpy/
Druhá možnost:
Funkci zobraz() přidáte parametr typu pole, přes který vždy předáte pole do funkce zobraz. To pak můžete nechat kód tak, jak máte (lokální pole v tomto případě nevadí), jen přidáte zavolání funkce s parametrem pole: zobraz(diody).
Globální pole diody pak můžete zahodit. Tato cesta je asi schůdnější