» »

Dvodimezionalna polja

Dvodimezionalna polja

strobos ::

Pozdrav,

že nekaj časa se mučim s problemom, ki mi ga ne uspe realizirat. Ta problem pa je : imam dvodimenzionalno polje, v tem polju moram vrstice razporediti tako, da bo prva vrstica imela najmanjšo vsoto svojih elementov, zadnja pa največjo. Uspelo mi je, da sem lahko izračunal vsoto posamezne vrstice in potem te vsote razporedil po vrsti, ne pa celih vrstic. Ali zna kdo to napisat v C++?

Lp

CCfly ::

Dvodimenzionalna tabela ni ravno najboljsa za tole. V C++ si naredi objekt npr class vrstica kjer imas zapisano tabelo oz eno vrstico nato pa le-te dajaj v dvosmerni seznam ali pa v vector.
http://www.cppreference.com/

Drugace pa lahko skopiras celotno vrstico pac. Naredi si eno enodimenzionalno tabelo kot zacasno odlozisce. Iz vrstice1 skopiraj vse v to tabelo, potem iz vrstice 2 skopiraj vsebino v vrstico1 in spet iz zacasne tabele v vrstico2.
Ni treba reci da je tole izredno potratno. Ce bos se imel probleme pa odpisi nazaj.

Zgodovina sprememb…

  • spremenilo: CCfly ()

Vesoljc ::

točno tko, delo z več dimenzionalnimi polji zna biti precej umazano...
tuki lahko pogledaš kako naj bi zadeve laufale (predvsem 6.15 do 6.20)

tkole zna biti veliko bolje:
#include <iostream>

using namespace std;

template<typename TIP, int VELIKOST>
class Vrstica
{
public:
                                   Vrstica        ();
     Vrstica<TIP, VELIKOST>&       operator =     (const Vrstica<TIP, VELIKOST>& rhs);
     void                          Print          ();
     void                          Nastavi        (int ldIndeks, TIP ldVrednost);

private:
     TIP                           mdVrstica[VELIKOST];
};

template<typename TIP, int VELIKOST>
Vrstica<TIP, VELIKOST>::Vrstica()
{
     for(int i = 0; i < VELIKOST; ++i)
          mdVrstica[i]   = 0;
}

template<typename TIP, int VELIKOST>
Vrstica<TIP, VELIKOST>& Vrstica<TIP, VELIKOST>::operator =(const Vrstica<TIP, VELIKOST>& rhs)
{
     for(int i = 0; i < VELIKOST; ++i)
     {
          this->mdVrstica[i]  = rhs.mdVrstica[i];
     }
     return(*this);
}

template<typename TIP, int VELIKOST>
void Vrstica<TIP, VELIKOST>::Print()
{
     for(int i = 0; i < VELIKOST; ++i)
          cout << mdVrstica[i] << " ";
     cout << endl;
}

template<typename TIP, int VELIKOST>
void Vrstica<TIP, VELIKOST>::Nastavi(int ldIndeks, TIP ldVrednost)
{
     mdVrstica[ldIndeks] = ldVrednost;
}

int main()
{
     Vrstica<int,10>     ldPolje[10];
     Vrstica<int,10>     ldZacasna;

     ldPolje[2].Nastavi(0,2);
     cout << "vrstica 2" << endl;
     ldPolje[2].Print();
     ldPolje[3].Nastavi(1,3);
     cout << "vrstica 3" << endl;
     ldPolje[3].Print();
     ldZacasna = ldPolje[2];
     cout << "zacasna" << endl;
     ldZacasna.Print();

     ldPolje[2] = ldPolje[3];
     ldPolje[3] = ldZacasna;
     cout << "vrstica 2" << endl;
     ldPolje[2].Print();
     cout << "vrstica 3" << endl;
     ldPolje[3].Print();
     return(1);
}

tole pa pljune vun:

vrstica 2
2 0 0 0 0 0 0 0 0 0
vrstica 3
0 3 0 0 0 0 0 0 0 0
zacasna
2 0 0 0 0 0 0 0 0 0
vrstica 2
0 3 0 0 0 0 0 0 0 0
vrstica 3
2 0 0 0 0 0 0 0 0 0


go with ++
Abnormal behavior of abnormal brain makes me normal...

CCfly ::

hardcore templates >:D

strobos ::

Najlepša hvala. Se še priporočam:)


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

Vsota določenih elementov matrike [C]

Oddelek: Programiranje
101005 (693) RatedR
»

[c#] Vstavljanje vrednosti v tabelo

Oddelek: Programiranje
111616 (1438) Cvenemir
»

osnove v Javi - zvezdice

Oddelek: Programiranje
403573 (2795) Tutankhamun
»

[C++] urejanje nizov po velikosti

Oddelek: Programiranje
82283 (2064) Matako
»

[c++] stil kodiranja, informativno

Oddelek: Programiranje
171938 (1754) CCfly

Več podobnih tem