Klasa macierzy

wrob
Użytkownik
Użytkownik
Posty: 7
Rejestracja: 30 sty 2009, o 15:49
Płeć: Mężczyzna
Podziękował: 1 raz

Klasa macierzy

Post autor: wrob »

Witam, mam pytanie jak przypisywać "hurtowo" wartości liczbowe do macierzy o znanym rozmiarze. Otóż klasa macierzy wygląda mniej więcej następująco :

Kod: Zaznacz cały

class matrix{
public :
 int w,k;  
 float **pole; 
//konstruktor macierzy
 matrix(int cw, int ck){
   w=cw;
   k=ck;
   //deklaracja dynamicznej dwuwymiarowej tablicy pole o rozmiarze w wierszy i k kolumn
   pole = new float*[w]; 
   for(int i=0;i<w;i++){pole[i] = new float[k];};
 };

};
Użytkownik tworzy np. macierz 3*4 poprzez :

Kod: Zaznacz cały

matrix A = matrix(3,4);
i teraz chciałbym wypełnić tę macierz danymi np. w sposób :

Kod: Zaznacz cały

A = { {1,2,3,4} , {5,6,7,8} , {9,10,11,12} };
wie ktoś jak w c++ można coś takiego zrobić ? Z góry dzięki za wszelkie sugestie.
soku11
Użytkownik
Użytkownik
Posty: 6607
Rejestracja: 16 sty 2007, o 19:42
Płeć: Mężczyzna
Podziękował: 119 razy
Pomógł: 1823 razy

Klasa macierzy

Post autor: soku11 »

Takim sposobem na pewno nie zrobisz...
Mozna to zrobic albo poprzez funkcje przyjmujaca zmienna ilosc parametrow, albo poprzez funkcje ktora przyjmuje tablice wskaznikow (albo lepiej - wskaznik na wskaznik - tablica dynamiczna). Mozna tez zrobic poprostu funkcje, ktora sama bedzie pobierala potrzebna ilosc zmiennych i je sobie zachowywala. Inne rozwiazania nie przychodza mi do glowy.

Pozdrawiam.
wrob
Użytkownik
Użytkownik
Posty: 7
Rejestracja: 30 sty 2009, o 15:49
Płeć: Mężczyzna
Podziękował: 1 raz

Klasa macierzy

Post autor: wrob »

Do tej pory używałem czegoś takiego w definicji klasy :

Kod: Zaznacz cały

void przypisz(const float *tablica){
 for(int i=0;i<w;i++){for(int j=0;j<k;j++){pole[i][j]=tablica[i*k+j];};}
};

po czym tworzę tablicę temp, macierz A i tę macierz wypełniam danymi :

Kod: Zaznacz cały

float temp[15] = {1,2,3,  4,5,6,  7,8,9,  10,11,12,  13,14,15};
matrix A = matrix(5,3);
A.przypisz(temp);
Działa to, tylko chciałbym to zrobić wprost, bez definiowania tablicy temp. Jak to by można zrobić, aby przypisać dane do macierzy A(o dowolnych wymiarach) poprzez np. :

Kod: Zaznacz cały

A = przypisz(1,2,3,  4,5,6,  7,8,9,  10,11,12,  13,14,15);
?
spajder
Użytkownik
Użytkownik
Posty: 735
Rejestracja: 7 lis 2005, o 23:56
Płeć: Mężczyzna
Lokalizacja: Łódź
Podziękował: 2 razy
Pomógł: 133 razy

Klasa macierzy

Post autor: spajder »

w C++ da się zrobić funkcję o zmiennej ilości parametrów


z tym da radę zrobić podobnie, jak chcesz (tylko przynajmniej jeden wymiar będziesz musiał podać ręcznie)
wrob
Użytkownik
Użytkownik
Posty: 7
Rejestracja: 30 sty 2009, o 15:49
Płeć: Mężczyzna
Podziękował: 1 raz

Klasa macierzy

Post autor: wrob »

Ok, dzięki, o to właśnie chodziło.
ODPOWIEDZ