Forum Sveta kompjutera

Nazad   Forum Sveta kompjutera > Test Run > Programiranje

Programiranje Programski jezici, tehnike, alatke...

Odgovor
 
Alatke vezane za temu Vrste prikaza
Stara 26.3.2009, 18:08   #1
RuSkO_17
Novi član
 
Član od: 24.10.2008.
Lokacija: Sarajevo
Poruke: 26
Zahvalnice: 5
Zahvaljeno 3 puta na 3 poruka
Određen forumom Jedan zadatak C++. Hitno!

Neki element matrice naziva se njeno sedlo, ukoliko je on ujedno najveći element u redu u kojem se nalazi i najmanji element u koloni u kojoj se nalazi, ili obrnuto (tj. najmanji element u redu u kojem se nalazi i najveći element koloni u kojoj se nalazi). Pojam sedla matrice od velikog je značaja u teoriji igara. Nemaju sve matrice sedlo, a neke ih mogu imati i više.
Napišite funkciju koja kao parametar prima matricu organiziranu kao vektor vektôrā, a koja kao rezultat vraća koliko sedala posjeduje ta matrica (odnosno 0 ukoliko matrica ne posjeduje niti jedno sedlo). Ukoliko preneseni parametar nema strukturu matrice (tj. ukoliko svi redovi proslijeđenog vektora vektôrā nemaju isti broj elemenata), funkcija treba baciti izuzetak. Napisanu funkciju testirajte u glavnom programu na primjeru matrice čije se dimenzije i
elementi unose sa tastature.


Treba mi samo ona petlja kada idem korz matricu, ništa više.... :-(
RuSkO_17 je offline   Odgovor sa citatom ove poruke
Stara 26.3.2009, 20:17   #2
Beagle
Drug Član
 
Avatar korisnika Beagle
 
Član od: 12.7.2006.
Lokacija: SSH - Selendra Supreme HQ
Poruke: 7.147
Zahvalnice: 772
Zahvaljeno 2.267 puta na 1.686 poruka
Određen forumom Re: Jedan zadatak C++. Hitno!!

Shta ti je sedlo?

Pa ugnezdi dve petlje:
Kod:
for(int i =0; i<x; i++){
       for(int j=0; j<y; j++){
            vektor[i][j]; // ovde radi sa njim shta ocesh 
       }
}
Sa ovim prolazish svaki element 2D niza. Ako ti nisu poznate dimenzije vektora (x i y), iskoristi .length metodu (ne znam kako ovo ide u C++ nisam radio u njemu).
Beagle je offline   Odgovor sa citatom ove poruke
Stara 26.3.2009, 21:03   #3
RuSkO_17
Novi član
 
Član od: 24.10.2008.
Lokacija: Sarajevo
Poruke: 26
Zahvalnice: 5
Zahvaljeno 3 puta na 3 poruka
Određen forumom Re: Jedan zadatak C++. Hitno!!

sedlo, ukoliko je on ujedno najveći element u redu u kojem se nalazi i najmanji element u koloni u kojoj se nalazi, ili obrnuto (tj. najmanji element u redu u kojem se nalazi i najveći element koloni u kojoj se nalazi)

Ma znam ja to da trebam dvije petlje, i da koristim .length() (tačnije koristim .size(), zbog int tipa, ispravnije je). Elem, problem mi je kako da obiđem sve elemente matrice odjednom na dva načina. Dakle da nađem sedlo(sedla) i za red-kolona i kolona-red odjednom.
Kontaš?

evo npr. trazenje za red kolona
Kod:
int SedloPrviSlucaj(vector<vector<double> > matrica){
    int x;
    int sedlo=0;
    for(int i=0; i<matrica.size(); i++){
        x=0;
        double max=matrica[i][0];
        for(int j=1; j<matrica[0].size(); j++){
         if(matrica[i][j]>max){
             max=matrica[i][j];
             x=j;
         }
        }
         int t=0;
         for(int k=0; k<matrica.size(); k++){
             if(matrica[k][x]>matrica[i][x])
                 t++;
          }
          if(t==matrica.size()-1){
                 sedlo++;
             }
    }

    return sedlo;
}
sada samo zamijenim par parametara i dobijem po kolona-red i sve saberem i to je to. Ali kada pošaljem zadaću asistentu, on mi javlja da rješenje nije elegantno i neda mi j.ebene bodove.
RuSkO_17 je offline   Odgovor sa citatom ove poruke
Stara 27.3.2009, 0:23   #4
water wizard
Deo inventara foruma
 
Član od: 29.1.2008.
Poruke: 20.482
Zahvalnice: 433
Zahvaljeno 4.007 puta na 3.729 poruka
Određen forumom Re: Jedan zadatak C++. Hitno!!

Možda treba dvodimenzionalni niz?Mada meni ovde nije ništa jasno
water wizard je offline   Odgovor sa citatom ove poruke
Stara 27.3.2009, 2:11   #5
EclipsE
Starosedelac
 
Član od: 16.4.2006.
Lokacija: Scary Movie Reputacija: ■■□
Poruke: 1.337
Zahvalnice: 378
Zahvaljeno 279 puta na 196 poruka
Slanje poruke preko Skypea korisniku EclipsE
Određen forumom Re: Jedan zadatak C++. Hitno!!

Kod:
int SedloPrviSlucaj(vector<vector<double> > matrica)
{
    int x, y, t, w;
    int sedlo = 0;

    if (matrica[0].size() != matrica.size())
        throw "greska";

    for (int i = 0; i < matrica.size(); i++)
    {
        x = 0;
        y = 0;
        double max = matrica[i][0];
        double min = matrica[i][matrica.size() - 1];

        for (int j = 0; j < matrica[0].size(); j++)
        {
            if (matrica[i][j] > max)
            {
                max = matrica[i][j];
                x = j;
            }
            if (matrica[i][j] < min)
            {
                min = matrica[i][j];
                y = j;
            }

            t = 0; w = 0;

            for (int k = 0; k < matrica.size(); k++)
            {
                if (matrica[k][x] > max)
                    t++;

                if (matrica[k][y] < min)
                    w++;
            }

            if (t == matrica.size() - 1)
                sedlo++;

            if (w == matrica.size() - 1)
                sedlo++;
        }
    }

    return sedlo;
}
evo npr. moja verzija... samo sam dodao da pamti i najmanji element, pa onda uporedjuje tu kolonu (e sad brkam kolone i redove ali znash na shta mislim xD) i radi isto shto i sa najvecim.. nego, ovo vazi samo za matrice u kojima se brojevi u redovima i kolonama NE ponavljaju.. npr. ovaj sluchaj
ako u istom redu imamo dve dvojke, i u obe kolone je najmanji broj
4 2 6 3 2
x 5 x x 4
x 6 x x 7
x 3 x x 9
x 7 x x 8

dakle obe dvojke su sedlo? ukoliko je to sluchaj mora funkcija malo da se zakomplikuje
EclipsE je offline   Odgovor sa citatom ove poruke
Sledeći korisnik se zahvaljuje korisniku EclipsE na korisnoj poruci:
RuSkO_17 (27.3.2009)
Stara 27.3.2009, 8:49   #6
RuSkO_17
Novi član
 
Član od: 24.10.2008.
Lokacija: Sarajevo
Poruke: 26
Zahvalnice: 5
Zahvaljeno 3 puta na 3 poruka
Određen forumom Re: Jedan zadatak C++. Hitno!!

Citat:
water wizard kaže: Pregled poruke
Možda treba dvodimenzionalni niz?Mada meni ovde nije ništa jasno
Pa piše ti da treba da koristiš vektor vektora, ne vidim sta je tu nejasno. :-)

Citat:
EclipsE kaže: Pregled poruke

evo npr. moja verzija... samo sam dodao da pamti i najmanji element, pa onda uporedjuje tu kolonu (e sad brkam kolone i redove ali znash na shta mislim xD) i radi isto shto i sa najvecim.. nego, ovo vazi samo za matrice u kojima se brojevi u redovima i kolonama NE ponavljaju.. npr. ovaj sluchaj
ako u istom redu imamo dve dvojke, i u obe kolone je najmanji broj
4 2 6 3 2
x 5 x x 4
x 6 x x 7
x 3 x x 9
x 7 x x 8

dakle obe dvojke su sedlo? ukoliko je to sluchaj mora funkcija malo da se zakomplikuje
Zadatak radi, ali šta , provjerio sam, za matricu
1 2
3 4

mi ispisuje da matrica ima čak 4 sedla, a ona ustvari ima 2 sedla (brojevi 2 i 3), vidi se da je broj 2 najveći u redu matrice, a najmanji u svojoj koloni, a vidi se i da broj 3 je najveći u svojoj koloni, a najmanji u svom redu.

Valjda vam je sad kristalno jasno šta je sedlo, mada zadatak nije urađen. :-D


a ova tvoja matrica
4 2 6 3 2
x 5 x x 4
x 6 x x 7
x 3 x x 9
x 7 x x 8
nema sedlo uopće, te dvice nisu sedla, bili bi sedla (obje) da su najveće u svom redu, dakle da prvi red izgleda ovako: 1 2 1 1 2
RuSkO_17 je offline   Odgovor sa citatom ove poruke
Stara 27.3.2009, 12:11   #7
EclipsE
Starosedelac
 
Član od: 16.4.2006.
Lokacija: Scary Movie Reputacija: ■■□
Poruke: 1.337
Zahvalnice: 378
Zahvaljeno 279 puta na 196 poruka
Slanje poruke preko Skypea korisniku EclipsE
Određen forumom Re: Jedan zadatak C++. Hitno!!

a nisam obracao paznju

Kod:
int SedloPrviSlucaj(vector<vector<double> > matrica)
{
    int x, y, t, w;
    int sedlo = 0;

    if (matrica[0].size() != matrica.size())
        throw "greska";

    for (int i = 0; i < matrica.size(); i++)
    {
        x = 0;
        y = 0;
        double max = matrica[i][0];
        double min = matrica[i][matrica.size() - 1];

        for (int j = 0; j < matrica[0].size(); j++)
        {
            if (matrica[i][j] > max)
            {
                max = matrica[i][j];
                x = j;
            }
            if (matrica[i][j] < min)
            {
                min = matrica[i][j];
                y = j;
            }
        }

        t = 0; w = 0;

        for (int k = 0; k < matrica.size(); k++)
        {
            if (matrica[k][x] > max)
                t++;

            if (matrica[k][y] < min)
                w++;
        }

        if (t == matrica.size() - 1)
            sedlo++;

        if (w == matrica.size() - 1)
            sedlo++;
    }

    return sedlo;
}
ovo bi trebalo da radi savrsheno..
EclipsE je offline   Odgovor sa citatom ove poruke
Stara 27.3.2009, 15:50   #8
RuSkO_17
Novi član
 
Član od: 24.10.2008.
Lokacija: Sarajevo
Poruke: 26
Zahvalnice: 5
Zahvaljeno 3 puta na 3 poruka
Određen forumom Re: Jedan zadatak C++. Hitno!!

Bravo, savršeno radi!



Biće bodova...

Poslednja ispravka: RuSkO_17 (27.3.2009 u 16:03)
RuSkO_17 je offline   Odgovor sa citatom ove poruke
Odgovor

Bookmarks sajtovi

Alatke vezane za temu
Vrste prikaza

Vaš status
Ne možete postavljati teme
Ne možete odgovarati na poruke
Ne možete slati priloge uz poruke
Ne možete prepravljati svoje poruke

BB kod: uključeno
Smajliji: uključeno
[IMG] kod: uključeno
HTML kod: isključeno


Slične teme
tema temu započeo forum Odgovora Poslednja poruka
Hitno! Pomoć oko temperature GPU! Andrija_22 Overklok 44 1.7.2012 23:34
Kviz na Pinku - matematički zadatak! stevan10 Brbljaonica 15 18.3.2009 13:00
Hitno! Koje napajanje mi je potrebno? Napajanje izgleda gori mozdani ŠDK - Osnovne komponente 7 25.6.2008 12:10
Jedan nalog za Net iskorišćen na dva mesta EHHO Komunikacioni uređaji i umrežavanje 7 26.5.2008 16:32
Kako dodati još jedan HDD? Tetanus Nosači podataka 20 11.12.2007 19:06


Sva vremena su po Griniču +2 h. Sada je 1:29.


Powered by vBulletin® verzija 3.8.7
Copyright ©2000–2024, vBulletin Solutions, Inc.
Hosted by Beograd.com