» »

Matrike-osnove

Matrike-osnove

Eliminator ::

Sem zacetnik pri programiranju in me zanima, ce bi mi kdo lahko malo razlozil kaj glede matrike... Za izris matrike sicer razumem funkcijo vendar bi bil zelo vesel ce bi mi jo lahko se en enkrat razlozo. Pri funkciji za izpis matrike mi tudi ni jasno, zakaj je izven for zank
cout<<endl;
(drugi endl v kodi)

{
     for (int i=0; i<4; i++)
     {
         for (int j=0; j<5; j++)
          {
                  cout<<matrika[i][j]<<" ";
                  
          }
          cout<<endl;
          
     }
     cout<<endl;
     
     
}


Kot drugo pa me zanima, kako bi naredil funkcijo za izracun povprecne vrednosti vsakega stolpca.

Hvala za pomoc

black ice ::

Sklepam, da je drugi endl zato, da imaš vmes eno prazno vrstico zaradi večje preglednosti. Poženi program pa boš videl.

Kako izračunaš povprečno vrednost stolpca? Imaš dvodimenzionalno polje, definirano kot matrika[i][j]. Eno (i ali j) je koordinata v vrstici, drugo koordinata v stolpcu. Kaj narediš? Sešteješ vse elemente v stolpcu, deliš s številom elementov in dobiš povprečno vrednost stolpca.

Kot vidiš matriko izpisuješ tako, da imaš dve zanki, kjer povečuješ obe koordinati (vrstico in stolpec) ter tako "zajameš" in s tem izpišeš vse elemente v matriki oz. dvodimenzionalnem polju.

Eliminator ::

Nekaj takega sem probaval za povpecno vrendost posamzenega stolpca vendar nekaj ne dela vredu. Velikost matrike je 4*5(4vrstice 5 stolpcev)

    double vsota = 0.0; 
    
    for (int i=0; i<4; i++)
    {    
        for (int j=0; j<5; j++)
        {
            vsota = vsota + matrika[i][j];
        }
        cout<<"Povprecje "<<i+1<<". stolpca je "<<vsota/4<<endl;
        vsota = 0;
    }
    cout<<endl;


A lahko kdo pogleda pa poda kaksno resitev...

hvala

metalc ::

Ti bi rad za vsak stolpec izračunal in napisal povprečje?

Potem naj gre prvi (zunanji) for po stolpcih, v drugem (notranjem) pa po vrsticah in seštevaš elemente. Če dobro pogledaš, vidiš, da sedaj sešteješ 5 števil in deliš s 4, to pa ni povprečje.

Sicer ni narobe, ampak malo "lepše" bo, če vsoto inicializiraš pred drugim for.

BTW, kakšen tip imaš v matriki, int, float ali double? Ne bo škodilo, če "namesto" s 4 deliš s 4.0f (če bi rad dobil float) oz. 4.0, če bi rad double.

Zgodovina sprememb…

  • spremenilo: metalc ()

Eliminator ::

Funkcijo za povpracje mam double samo je v glavi funkcije formalni argument int matrika... Rezultat(povprecje stolpcev) pa bo potem double(upam :D). Bom se jutri loto tega kaj si ti napisal in ce mi kaj nebo slo bom se te enkrat prosil za pomoc:D


Zaenkrat pa hvala :d

metalc ::

Da ti prihranim glavobole, ker imaš v matriki inte. Ena od "lepot" C oz. C++ je, da kadar deliš dve eksplicitno celi števili (podani brez decimalnih pik), bo delil celoštevilsko, se pravi dobiš samo celi del (9/4 ni 2.25 temveč 2, medtem, ko je 9.0/4 ali 9/4.0 res 2.25). Zato poskrbi, da bo vsaj en element res realen. V tem primeru lahko 4 "podecimaliziraš" v 4.0, sicer pa castanje....

vsota naj bo kar int (oz. v splošnem enako tipu matrike), ker je celoštevilsko seštevanje hitrejše, poleg tega realna števila niso nujno enaka podanemu (lahko rečeš, da naj bo 5, pa ti bo lahko izpisal 4.999999....). Če se že bojiš, da bi zaradi velikih številk v matriki padel iz območja int, je še vedno boljša rešitev long int.

Eliminator ::

{
       double vsota=0.0;
       
       for (int j=0; j<5; j++ )
       {
       
           for(int i=4; i<4; i++)
           {
                   vsota=vsota+matrika[i][j];
                   
           }
           cout<<"Povprecje "<<j+1<<". stolpca je "<<vsota/5<<endl;
       }


}


Sedaj mam kodo tako, vednar mi skoz izpise npr: povprecje 1. stolpca je 0.... in tako naprej do 5 stolpca...
Verjetno sem nekje naredil eno glupo napako vendar ne vem kaj...

prosil bi za pomoc :D

Mavrik ::

Zato ker se ti seštevanje nikoli ne izvede.

Poglej (IN RAZUMI) kaj delajo for zanke. Ti pri notranji for zanki praviš: "Okej, i je 4. Ponavljaj dokler je i manj kot štiri." Zakaj misliš da se tisto ne izvede? ;)
The truth is rarely pure and never simple.

Eliminator ::

Zato ker sn tam mel napisano i=4:D Kak sn te lahko to tak napiso:D

Samo se vseeno nena zaj povprecja prav izpise... prvi stolpec bi moglo bit povprecje 1 (ker vnesem 12345 v vsako vrstico)... Pa napise povprecje 0.8...

metalc ::

To pa zato, ker pravilno sešteješ 4 števila in dobiš 4, deliš pa s 5.

Pa pred drugim for inicializiraj še vsoto, sicer bodo drugi stolpci še bolj pestri....

Eliminator ::

Super hvala za pomoc. Ne vem sploh zakaj sem delil s 5... Ko sem pa vedo da so 4 stevila v stolpcu... :D

Vseeno hvala za pomoc in ce bo se kdaj kaka naloga z matrikami ko nebom znal bom kr tu vprasal :D

LP


Vredno ogleda ...

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

Kalkulator

Oddelek: Kaj kupiti
284900 (2545) cobrastar
»

excel+visual basic

Oddelek: Pomoč in nasveti
101556 (1443) švrk
»

[C] Pomoč pri programu za fax (matrike)

Oddelek: Programiranje
111283 (1026) alphasaphir
»

Matematika/Logika - teoretični pristop

Oddelek: Šola
103629 (3352) Tim Burton
»

programiranje v c++

Oddelek: Programiranje
51892 (1658) Tutankhamun

Več podobnih tem