[C++/Visual] Tablica dwuwymiarowa przechowująca współrzędne

0

Chciałbym zainicjować tablicę dwuwymiarową NxN i w każdej z komórek żeby była tablica trzyelementowa, która zawiera współrzędne punktów - x, y, z, (ogólnie chcę mieć tablicę NxN i żeby każdy jej element przechowywał trzy liczby będące współrzędnymi punktu w przestrzeni) .

Przykładowy kod, którego używam to:

typedef float point3[3];
const int N=20;

void jakasFunkcja(void){

        point3  x_min = {-5.0, 0.0, 0.0}; //jakiś punkt w przestrzeni
	point3 tab[N][N];  //tablica na współrzędne
	tab[0][0]=x_min; //tutaj chcę wpisać ten jeden przykładowy punkt

}

trzecia linijka w 'jakasFunkcja' generuje błąd:
error C2106: '=' : left operand must be l-value

Gdzie jest błąd w moim myśleniu i jak można zrobić to czego chcę?
(Microsoft Visual Studio 2008)

0

Napisz konkretnie co chcesz zrobic. Za pomoca funkcji chcesz wypelnic tablice NxN ,wsporzlednymi x,y,z ktore wpisujesz z klawiatury i tych punktow ma byc 20????

0

powiem ci ,że może nie jestem super znawcą c++ ale jak dla mnie to wygląda dziwnie a tym bardziej późniejsze użycie tego

typedef float point3[3];

0
neytro napisał(a)

Napisz konkretnie co chcesz zrobic. Za pomoca funkcji chcesz wypelnic tablice NxN ,wsporzlednymi x,y,z ktore wpisujesz z klawiatury i tych punktow ma byc 20????

Jak już napisałem, chcę mieć tablicę NxN gdzie każdy element tej tablicy będzie zawierał trzy liczby będące współrzędnymi x, y, z punktu w przestrzeni 3-D. (Jeśli N będzie równe 20 tzn że będe miał w niej 20x20=400 punktów)

0

Zamiast tego typedef'a zrób sobie strukturę lub klasę:

struct point3{
    float x, y, z;
};

const int N=20;

void jakasFunkcja(void){

        point3  x_min = {-5.0, 0.0, 0.0}; //jakiś punkt w przestrzeni
        point3 tab[N][N];  //tablica na współrzędne
        tab[0][0]=x_min; //tutaj chcę wpisać ten jeden przykładowy punkt
}
0
pd2 napisał(a)
typedef float point3[3];

        point3  x_min = {-5.0, 0.0, 0.0}; //jakiś punkt w przestrzeni
	point3 tab[N][N];  //tablica na współrzędne
	tab[0][0]=x_min; //tutaj chcę wpisać ten jeden przykładowy punkt
}

Problem w tym, ze w C++ nie istnieje cos takiego, jak kopiowanie tablicy przez wartosc. Bardzo dobrze, ze pomyslales o uzyciu typedef - znacznie upraszcza to zapis wszystkiego. Jednakze typedef NIE TWORZY nowego typu danych! to tylko "alias", skrót, metka, dla prostszego zapisu. W C++ nie jestes w stanie zrobic:

    int x[2] = {0,1};
    int y[2] = {2,3};
    x = y;

nie dosc, ze to nie skopiuje zawartosci tablicy, to nawet sie nie skompiluje, i dostaniesz ten sam blad: lewa strona musi byc l-value, czyli musi byc "podstawialna"

uzyj podpowiedzi przedmowcy, opakuj tablice w strukture lub klase - to utworzy nowy typ, ktory bedzie "podstawialny"

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