Forum Sveta kompjutera

Nazad   Forum Sveta kompjutera > Test Run > Programiranje

Programiranje Programski jezici, tehnike, alatke...

Odgovor
 
Alatke vezane za temu Vrste prikaza
Stara 13.10.2020, 16:20   #1
Mladjo73
Novi član
 
Član od: 12.10.2020.
Poruke: 5
Zahvalnice: 1
Zahvaljeno 0 puta na 0 poruka
Određen forumom Matrica zadatak (C jezik)

Pozdrav svima. Trebala bi mi pomoc u vezi jednog zadatka iz matrica, gdje mi je potrebno da rotiram sve kolone matrice u desnu stranu za vrijednost minimalnog elementa matrice. U pitanju je kvadratna matrica. Dakle ja znam naravno pronaci minimalni elemenat, pokusavao sam sve i svasta ali nikako ne mogu da uspijem da rotiram sve kolone. U pitanju je C jezik, zadatak moram da rijesim bez koriscenja funkcija i pokazivaca jer to jos uvijek nismo radili. Dakle smijem samo koristiti osnovne funkcije i petlje.
Mladjo73 je offline   Odgovor sa citatom ove poruke
Stara 13.10.2020, 16:22   #2
Neutrino
Deo inventara foruma
 
Član od: 17.6.2011.
Poruke: 7.336
Zahvalnice: 94
Zahvaljeno 3.334 puta na 2.010 poruka
Određen forumom Re: Matrica zadatak (C jezik)

Šta već imaš urađeno od koda? Šta si pokušao? Gde je problem pošao naopako?
Neutrino je offline   Odgovor sa citatom ove poruke
Stara 13.10.2020, 17:18   #3
Mladjo73
Novi član
 
Član od: 12.10.2020.
Poruke: 5
Zahvalnice: 1
Zahvaljeno 0 puta na 0 poruka
Određen forumom Re: Matrica zadatak (C jezik)

Pokusavao sam nesto na 2 nacina.

Prvi nacin je bio da cijelu matricu smjestim u jedan obican niz i onda da sve elemente tog niza pomjerim u desnu stranu za vrijednost minimalnog elementa. Nakon toga sam vratio taj niz u matrcu. Iako sam mislio da ce rezultat toga biti skroz deseta stvar, na kraju sam dobio matricu kojoj jesu kolone rotirane za taj broj mjesta, ali takodje i vrste su joj rotirane pa nista nisam postigao time. Ovo sam probao iz razloga zato sto kad je u pitanju samo jedna kolona ili vrsta, ovaj nacin savrseno radi.

Drugi nacin je ovaj:

Kod:
#include <stdio.h>
int main ()
{
    int i, j, n, mat[10][10], min, pom, k, u;
    printf("Unesi dimenziju matrice:\n");
    scanf("%d", &n);
    printf("Unesi elemente:\n");
    for(i=0; i<n; i++)
    {
        for(j=0; j<n; j++)
        {
            scanf("%d", &mat[i][j]);
        }
    }
    printf("Matrica je:\n");
     for(i=0; i<n; i++)
    {
        for(j=0; j<n; j++)
        {
            printf("%d\t", mat[i][j]);
        }
        printf("\n\n");
    }
    min=mat[0][0];
    for(i=0; i<n; i++)
    {
        for(j=0; j<n; j++)
        {
            if(mat[i][j]<min)
            min=mat[i][j];
        }
    }
 
    for(i=0; i<n; i++)
    {
        for(j=0; j<n; j++)
        {
            for(u=0; u<min; u++)      //* for koji se vrti min puta *//
            {
                pom=mat[i][n-1];       //* Ove 4 naredne linije mi nikako ne rade ali ne kapiram zasto *//
                for(k=n-2; k>=0; k--)   //* Ovakva vrsta pomjeranja mi savrseno radi kod nizova. *//
                mat[i][k+1]=mat[i][k];
                mat[i][0]=pom;
            }
        }
    }
    printf("Nova je:\n");
    for(i=0; i<n; i++)
    {
        for(j=0; j<n; j++)
        {
            printf("%d\t", mat[i][j]);
        }
        printf("\n\n");
    }
}
Sto znaci da sam kod drugog nacina dosao samo do minimalnog elementa matrice, dalje ne ide.

Poslednja ispravka: Andross (13.10.2020 u 18:06)
Mladjo73 je offline   Odgovor sa citatom ove poruke
Stara 13.10.2020, 17:22   #4
Mladjo73
Novi član
 
Član od: 12.10.2020.
Poruke: 5
Zahvalnice: 1
Zahvaljeno 0 puta na 0 poruka
Određen forumom Re: Matrica zadatak (C jezik)

Takodje radeci ovaj drugi nacin u jednom trenutku sam uspio da pomjeram sve vrste na gore ili na dole, tj. da im mijenjam mjesta za vrijednost minimalnog elementa. Ali nikako da uspijem da pomjerim kolone u desno ili lijevo.

EDIT: Poslao sam prethodni odgovor gdje sam objasnio 2 nacina na koja sam pokusavao, zajedno sa kodom ali iz nekog razloga moram sacekati da moderator odobri.


Dok ne odobre evo ovde taj drugi nacin koji sam spominjao:
Dakle pokusavao sam uvodjenjem ovog fora koji se vrti min puta i daljim uporedjivanjem sa forom sa "k" brojacem pomjerati svaki element posebno ali ovo nazalost ne radi nista.

Kod:
#include <stdio.h>
int main ()
{
    int i, j, n, mat[10][10], min, pom, k, u;
    printf("Unesi dimenziju matrice:\n");
    scanf("%d", &n);
    printf("Unesi elemente:\n");
    for(i=0; i<n; i++)
    {
        for(j=0; j<n; j++)
        {
            scanf("%d", &mat[i][j]);
        }
    }
    printf("Matrica je:\n");
     for(i=0; i<n; i++)
    {
        for(j=0; j<n; j++)
        {
            printf("%d\t", mat[i][j]);
        }
        printf("\n\n");
    }
    min=mat[0][0];
    for(i=0; i<n; i++)
    {
        for(j=0; j<n; j++)
        {
            if(mat[i][j]<min)
            min=mat[i][j];
        }
    }
 
    for(i=0; i<n; i++)
    {
        for(j=0; j<n; j++)
        {
            for(u=0; u<min; u++)      //* for koji se vrti min puta *//
            {
                pom=mat[i][n-1];       //* Ove 4 naredne linije mi nikako ne rade ali ne kapiram zasto *//
                for(k=n-2; k>=0; k--)   //* Ovakva vrsta pomjeranja mi savrseno radi kod nizova. *//
                mat[i][k+1]=mat[i][k];
                mat[i][0]=pom;
            }
        }
    }
    printf("Nova je:\n");
    for(i=0; i<n; i++)
    {
        for(j=0; j<n; j++)
        {
            printf("%d\t", mat[i][j]);
        }
        printf("\n\n");
    }
}

Poslednja ispravka: Andross (13.10.2020 u 18:05)
Mladjo73 je offline   Odgovor sa citatom ove poruke
Stara 14.10.2020, 0:53   #5
Wolf72
Član
 
Član od: 28.8.2012.
Poruke: 106
Zahvalnice: 27
Zahvaljeno 9 puta na 9 poruka
Određen forumom Re: Matrica zadatak (C jezik)

Kod:
#include <stdio.h>
int main ()
{
    int i, j, n, mat[10][10],mat2[10][10], min, pom, k, u;
    printf("Unesi dimenziju matrice:\n");
    scanf("%d", &n);
    printf("Unesi elemente:\n");
    for(i=0; i<n; i++)
    {
        for(j=0; j<n; j++)
        {
            scanf("%d", &mat[i][j]);
        }
    }
    printf("Matrica je:\n");
     for(i=0; i<n; i++)
    {
        for(j=0; j<n; j++)
        {
            printf("%d\t", mat[i][j]);
        }
        printf("\n\n");
    }
    min=mat[0][0];
    for(i=0; i<n; i++)
    {
        for(j=0; j<n; j++)
        {
            if(mat[i][j]<min)
            min=mat[i][j];
        }
    }
    printf("%d\n\n",min);
    
    for(i=0; i<n; i++)
    {
        for(j=0; j<n; j++)
        {
            mat2[i][(j+min)%n]=mat[i][j];
        }
    }
    
    printf("Nova je:\n");
    for(i=0; i<n; i++)
    {
        for(j=0; j<n; j++)
        {
            printf("%d\t", mat2[i][j]);
        }
        printf("\n\n");
    }
}
Wolf72 je offline   Odgovor sa citatom ove poruke
Sledeći korisnik se zahvaljuje korisniku Wolf72 na korisnoj poruci:
Mladjo73 (14.10.2020)
Stara 14.10.2020, 14:28   #6
Mladjo73
Novi član
 
Član od: 12.10.2020.
Poruke: 5
Zahvalnice: 1
Zahvaljeno 0 puta na 0 poruka
Određen forumom Re: Matrica zadatak (C jezik)

Citat:
Wolf72 kaže: Pregled poruke
Kod:
#include <stdio.h>
int main ()
{
    int i, j, n, mat[10][10],mat2[10][10], min, pom, k, u;
    printf("Unesi dimenziju matrice:\n");
    scanf("%d", &n);
    printf("Unesi elemente:\n");
    for(i=0; i<n; i++)
    {
        for(j=0; j<n; j++)
        {
            scanf("%d", &mat[i][j]);
        }
    }
    printf("Matrica je:\n");
     for(i=0; i<n; i++)
    {
        for(j=0; j<n; j++)
        {
            printf("%d\t", mat[i][j]);
        }
        printf("\n\n");
    }
    min=mat[0][0];
    for(i=0; i<n; i++)
    {
        for(j=0; j<n; j++)
        {
            if(mat[i][j]<min)
            min=mat[i][j];
        }
    }
    printf("%d\n\n",min);
    
    for(i=0; i<n; i++)
    {
        for(j=0; j<n; j++)
        {
            mat2[i][(j+min)%n]=mat[i][j];
        }
    }
    
    printf("Nova je:\n");
    for(i=0; i<n; i++)
    {
        for(j=0; j<n; j++)
        {
            printf("%d\t", mat2[i][j]);
        }
        printf("\n\n");
    }
}
Ne mogu da vjerujem da je sva problematika mogla stati u samo 1 liniju koda. Meni nikada ovo ne bi palo na pamet, mada sam tek pocetnik pa se nadam da ce mi u buducnosti ici sve bolje i bolje. Hvala mnogo!

I da, jos jedno pitanje ako nije problem (nadam se da nisam naporan), sta bi bilo ako bih pokusavao da pomjerim kolone ali u lijevo za istu ovu vrijednost?

Poslednja ispravka: Mladjo73 (14.10.2020 u 14:46)
Mladjo73 je offline   Odgovor sa citatom ove poruke
Stara 14.10.2020, 16:29   #7
Wolf72
Član
 
Član od: 28.8.2012.
Poruke: 106
Zahvalnice: 27
Zahvaljeno 9 puta na 9 poruka
Određen forumom Re: Matrica zadatak (C jezik)

Citat:
Mladjo73 kaže: Pregled poruke
Ne mogu da vjerujem da je sva problematika mogla stati u samo 1 liniju koda. Meni nikada ovo ne bi palo na pamet, mada sam tek pocetnik pa se nadam da ce mi u buducnosti ici sve bolje i bolje. Hvala mnogo!

I da, jos jedno pitanje ako nije problem (nadam se da nisam naporan), sta bi bilo ako bih pokusavao da pomjerim kolone ali u lijevo za istu ovu vrijednost?
mat2[i][j]=mat[i][(j+min)%n]; za levo.
Problematika je samo kad dodajes taj min na index niza.
Recimo ako ti je min = 1 a ti si u for petlji na 3. clanu (i=2, n=3) , dodajes taj pomeraj na i dobijes i=3 a niz ti ide od 0 do 2. Taj i=3 treba ustvari da ti se vrati na pocetak niza tako da kad uradis %n dobijes prvi clan. (3%3=0).
Wolf72 je offline   Odgovor sa citatom ove poruke
Stara 15.10.2020, 15:48   #8
Mladjo73
Novi član
 
Član od: 12.10.2020.
Poruke: 5
Zahvalnice: 1
Zahvaljeno 0 puta na 0 poruka
Određen forumom Re: Matrica zadatak (C jezik)

Citat:
Wolf72 kaže: Pregled poruke
mat2[i][j]=mat[i][(j+min)%n]; za levo.
Problematika je samo kad dodajes taj min na index niza.
Recimo ako ti je min = 1 a ti si u for petlji na 3. clanu (i=2, n=3) , dodajes taj pomeraj na i dobijes i=3 a niz ti ide od 0 do 2. Taj i=3 treba ustvari da ti se vrati na pocetak niza tako da kad uradis %n dobijes prvi clan. (3%3=0).
Ukapirao sam, hvala jos jednom.
Mladjo73 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
Prevodi i titlovi Teva Kompjuteri i film 1567 6.3.2024 16:24
[Android] kako ubaciti srpski jezik u htc wildfire zexxxx Programi za mobilne telefone 1 20.9.2014 19:30
Word 2003 jezik Insecticide Aplikativni softver 1 19.8.2010 21:30
c++ zadatak sunce86 Programiranje 19 7.6.2010 22:37


Sva vremena su po Griniču +2 h. Sada je 16:20.


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