[C/C++] wypełnienie tablicy wartościami.

0

mamy sobie np zmienną int x[2][4];

Czy istnieje jakiś szybki sposób na wypełnienie tej tablicy danymi?

coś w stylu x = {1,2,3,4}, {1,2,3,4}};

zaznaczam, że nie chodzi mi wypełnianie wartościami podczas inicjowania zmiennej.

0

Wydaje mi się ze nie.

0

Nie, takiej inicjacji nie można wykonać w innym momencie niż przy inicjacji zmiennej jak sama nazwa wskazuje z resztą :P

Inicjalizacja czy inicjacja w końcu? :P Inicjalizacja to słowo z angielskiego ale nie mam pewności czy występuje w słowniku.

0

Dobra, to może coś innego.
Dajmy na to, niech będzie sobie taka struktura:

struct MyChar {
	int x;
	int y;
	int val[30][30];
};

W jaki sposób zainicjować zmienną typu tej struktury?

MyChar x = {10,10, { elementy tablicy ... }} nie działa:/

0
MyChar data;

data.x = 1;
data.y = 2;
data.val[0][0] = 3;
0

IMHO coś takiego...

struct MyChar {
        int x;
        int y;
        int val[30][30];
} m = { .val = {{1,2,3,4}, {1,2,3,4}}};
0

Mamo! Czemu oni mnie zmuszają do tego języka!! ;(
Naprawdę to jest jedyny sposób? I jak chcę wypełnić całą tablicę to muszę to zrobić na 900 linii?!
przecież to jakaś porażka :/ dane muszę koniecznie umieścić w kodzie...

0
  1. Lepiej używać konstruktora
  2. No jeśli dane są zupełnie nie skorelowane (tzn nie są wynikiem obliczeń ani nic) to tak ;]
0

Możesz zdefiniować tablice z danymi, a potem ładować je w pętli do struktury.

0

Możesz zrobić w miarę wygodnie to, co chcesz. Rozumiem, że masz tablicę -- nazwijmy ją A -- i to ona jest zmienną. Chcesz ją wypełnić jakimiś stałymi wartościami, ale nie możesz tego zrobić przy inicjalizacji zmiennej (co do słowa, to w słowniku "inicjalizacji" nie ma, ale p. Grębosz w Symfonii pisał, że lepiej chyba używać właśnie jego, bo "inicjacja" znaczy... zresztą, sprawdź sam w słowniku :)).

Taki problem może zaistnieć, gdy ta... nie-inicjalizacja ma nastąpić tylko pod jakimś warunkiem. Np. w jakiejś funkcji. Gdy w programie zajdzie jakaś akcja (która nie musi zawsze zajść), to odpalana jest funkcja F i ona ma wstawić do A jakieś wartości.

Możesz to rozwiązać, definiując sobie w funkcji F drugą tablicę, nazwijmy ją B. Tablicę B możesz tam całkowicie normalnie zainicjalizować. Następnie wartości z tablicy B możesz przepisać do tablicy A. W przypadku tablicy dwuwymiarowej, będziesz potrzebował zagnieżdżonej pętli for (dwóch forów; no i uważaj na indeksy/rozmiary tablic!).

Wiem, że pisanie dwóch forów to pewien ból, ale to tylko parę linijek, a będziesz miał swój upragniony, elegancki zapis "inicjalizacyjny". Oczywiście, do kopiowania tablic nie musisz nawet używać pętli for. Możesz skopiować pewien obszar pamięci, czy -- w określonych okolicznościach -- po prostu przypisać wskaźnik. Ale może użycie forów wyda Ci się najlogiczniejsze/najczytelniejsze.

edit: Jak można się domyśleć, kolega powyżej dodał posta w momencie gdy ja pisałem swojego.

0

generalnie to problem jest trochę bardziej złożony.

tablicy ma max 30x30.
Strukturę stosuję do tego, żeby określić za pomocą zmiennych x i y, gdzie kończy się użyteczna część tablicy. mało będzie takich tablic, które chciałbym inicjować dokładnie przez wypisanie 900 wartości. Żeby trzymać w innym miejscu zainicjowaną tablicę, to i tak musiałbym przechowywać jej rozmiar (np 10x25) więc problem się po prostu powtarza :/

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