Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 12 odgovora
  • 4.725 pregleda

Najnovija ↓

Matrica u letu ? ... 14.11.2004. u 23:28 · pre 267 meseci #1
Kako da napravim matricu ( dvodimenzionalnu ) a da joj pre toga nije odredjena velicina, korisnik treba da unese velicinu, a uz to jos i da matrica generise sve kombinacije brojeva ( koliko moze da stane u matricu ) od 0 - 255 ... any idea or help ... tnx
Re: Matrica u letu ? ... 15.11.2004. u 00:04 · pre 267 meseci #2
recimo matricu integera dimenzija n x m praviš dinamički
Code:
int i,j;
int *matrica;
matrica = (int*)malloc(sizeof(int)*n*m);
// a pristupas sa 
matrica[i][j];

A ovaj drugi deo nisam skapirao šta hoćeš?
Potpis
ex. trooper
Oh goody... it's my Illudium PU-36 Explosive Space Modulator!
Softversko Inženjerstvo
♪♫♪
Re: Matrica u letu ? ... 15.11.2004. u 09:03 · pre 267 meseci #3
Ovaj, ovo sto ti trazis je malo zesci problem. Alokacija je decja igra, ali pozivanje
Code:

  matrica[i][j];

...pa, heh, aj malo razmislimo; kolika je dimenzija matrice po 'i'...? I gde to pise? Kapiramo ili ne?
Elem, ja sam to svojevremeno radio u Delphi-ju (Pascal), i resenje je da napises klasu koja ti alocira memoriju kad joj das dimenzije. Zatim toj klasi sredis operator [] kako znas i umes, tako da dobijes zeljeni clan; ja sam u Delphi-ju pravio property (jasno, jer property ima getter i setter metode), ali sve ovo sam radio za dvodimenzionalni array. Pravi izazov je uraditi isto za proizvoljan broj dimenzija, i to je ono sto sam napisao u prvoj recenici ovog posta...

Rajko
Re: Matrica u letu ? ... 15.11.2004. u 09:18 · pre 267 meseci #4
Jel koristis C ili C++? Ako koristis C mozes da uradis na nacin na koji ti je rekao trooper, a ako koristis C++, mozes to da uradis pomocu sablona iz STL.
Re: Matrica u letu ? ... 15.11.2004. u 09:23 · pre 267 meseci #5
Code:

#include <stdlib.h>

int **allocate_array(int m, int n)
{
  int **rows = malloc(m * sizeof(int*)), i;

  for(i = 0; i < n; i++)
    rows[i] = malloc(n * sizeof(int));
  return rows;
}


Dealokaciju napisi sam. Koristis ovako:
Code:

int **x = allocate_array(2, 5);
x[1][3] = 12;
Re: Matrica u letu ? ... 15.11.2004. u 14:44 · pre 267 meseci #7
Citat:
vladab: a ako koristis C++, mozes to da uradis pomocu sablona iz STL.


Ili još bolje uBLAS ili neki stariji rođak.
Potpis
IOCC
Re: Matrica u letu ? ... 16.11.2004. u 08:21 · pre 267 meseci #8
E da, zaboravio sam na **; tako da matrica ispada prava decja igra; sorry na digresiji.

Rajko
Re: Matrica u letu ? ... 18.11.2004. u 08:39 · pre 267 meseci #10
Ma i trooper-ov primer valja, ali sa malim promenama
Code:

int *matrica;
matrica = (int*)malloc(sizeof(int)*num_rows*num_cols);
// a pristupas sa
for(int i=0;i<num_rows;i++)
    for(int j=0;j<num_cols;j++) 
              cout<<"clan iz reda:"<<i<<" i kolone:"<<j<< " je :"<<matrica[i*n+j];

Posto u principu dvodimenzionalni matrix je num_rows puta duzine jednodimenzionalnog jednog.

Ako imamo matrix sa 3reda i 2 kolone onda to u memoriji izgleda 6 uzastopnih sizeof(whatever) polja:
Code:


matrica [1   2   3   4   5   6] 
         |   |   |   |   |   | 
        0,1 0,2  |   |   |   |
                1,1 1,2  |   |
                        2,1 2,2
Potpis
People who think they know everything tend to irritate those of us who do.
Re: Matrica u letu ? ... 19.11.2004. u 17:27 · pre 267 meseci #11
Evo prvi deo sam resio :


Code:

#include <stdlib.h>
#include <iostream.h>


int main()

{

int num_rows,num_cols;
int *matrica;
int n =0;

cin >> num_rows;
cin >> num_cols;

matrica = (int*)malloc(sizeof(int)*num_rows*num_cols);

for(int i=0;i < num_rows; i++)
    for(int j=0;j < num_cols; j++)
    {
    cin >> matrica[i*n+j];
    n++;
    }

int nn=0;

for(int ii=0;ii < num_rows; ii++)
     for(int jj=0;jj < num_cols; jj++)
     
     {     
     cout << "clan iz reda:" << ii << " i kolone:" << jj << " je :"<< matrica[ii*nn+jj];
     nn++;
     }

return 0;

}


tnx
Re: Matrica u letu ? ... 20.11.2004. u 16:58 · pre 267 meseci #12
Jeste da zadatak radi i pomocu nacina koji si napisao, ali bar po meni taj nacin nije dovoljno elegantan. Koristeci nacin koji je zvrba naveo matrici se pristupa normalno sa matrica[x][y] sto je lepse i za oko i za tumacenje. U C-u su dozvoljene svakakve perverzije recimo umesto niz[x] mozemo da pisemo i x[niz] ali opet to ne radimo zato sto nije prakticno. Tako da 'and moja preporuka ti je da lepo stvoris dinamicku matricu kao u zvrbinom primeru. Mada koliko primecujem ti pises u C++ a koristis funkcije iz C-a za alociranje memorije, naravno one rade bez problema, ali u C++ postoji operator za alociranje memorije new i operator za oslobadjanje delete pa je preporucljivo da koristis njih za ovaj posao.
Potpis
I drink to make other people interesting.
Re: Matrica u letu ? ... 20.11.2004. u 17:03 · pre 267 meseci #13
Kao što smo već pomenuli, u C++u postoji toliko gotovih biblioteka sa odličnim implementacijama matrice, da meni ne bi palo napamet da pišem novu iz početka. No, svako ima pravo da radi šta hoće...
Potpis
IOCC
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme