[ dnkol @ 14.05.2006. 12:55 ] @
Napisati program kojim se matrica A(NxN) medifikuje tako da elementi iznad glavne dijagonale u svakoj vrsti budu ciklicno pomerani za K mesta udesno (K se unosi sa tastature), i nalazi maksimalni element za elemente ispod glavne dijagonale. Prikazati matricu pre i posle transformacije kao i maksimalni element za elemente ispod glavne dijagonale.


Ukoliko neko zna kako da resi problem neka napise kod na C-u,pascalu ili neka jednostavno recima opise sta i kako da uradim!
[ n1tr0 @ 14.05.2006. 14:58 ] @
Npr. imas ovakvu matricu:
1 3 9 5 6 7
8 1 7 4 0 2
6 2 1 6 2 7
3 8 9 1 7 2
2 5 7 2 1 6
7 8 9 6 3 1
(ove jedinice sam stavio da uocis glavnu dijagonalu)
Sada treba rotirati za npr. dva mesta udesno, pa matrica treba da izgleda ovako:
1 6 7 3 9 5
8 1 0 2 7 4
6 2 1 2 7 6
3 8 9 1 7 2
2 5 7 2 1 6
7 8 9 6 3 1
Ako prolazis kroz matricu pomocu dve petlje sa i i j brojacima(i za vrste i j za kolone) treba da znas da kod elemenata na glavnoj dijagonali i i j su jednaki. Kada rotiras elemente u istoj vrsti(a uslov je da su iznad g.d.), znaci da kada to radis za neku vrstu i se ne menja, a j treba da bude vece od i.
Pokusaj sada sam napisati program, a ako naidjes na problem javi, pa cemo ti rado pomoci...
[ dnkol @ 15.05.2006. 18:24 ] @
Ok ali nisam postigo nista, ako moze malo detaljnije
[ IronTIRANIN @ 18.05.2006. 16:20 ] @
Dakle, posto zvanicno nismo radili funkcije pa ce zadatak da ti priznaju ako sve radis "pesice", evo prijatelju kako sam ja to zamislio.
Code:

#include <stdio.h>

main()
{
    int A[10][10];
    int i,j,k,n,p,pom,max_el;

    //**************************************************
    // UNOS MATRICE
    printf("\n\tUnesite dimenziju kvadratne matrice : ");
    scanf("%d",&n);
    for (i=0; i<n; i++)
        for (j=0; j<n; j++)
        {
            printf("\tUnesite vrednost elementa A[%d,%d] = ",i,j); 
            scanf("%d",&A[i][j]);
        }

    //**************************************************
    // STAMPANJE MATRICE PRE PROMENE
    for (i=0; i<n; i++)
    {
        printf("\n");
        for (j=0; j<n; j++)
            printf("\t%d",A[i][j]);
    }
    printf("\n\n");

    //**************************************************
    // POMERANJE ELEMENATA IZNAD GLAVNE DIJAGONALE ZA P MESTA UDESNO
    printf("\n\tZa koliko mesta treba pomeriti elemente vrste\? Odgovor : za ");
    scanf("%d",&p);
    for (k=0; k<p; k++)
    {
        for (i=0; i<n; i++)
        {
            pom=A[i][n-1];
            for (j=n-1; j>0; j--)
                if (i<j)
                    A[i][j]=A[i][j-1];
            A[i][i+1]=pom;
        }
    }

    //**************************************************
    // NALAZENJE NAJVECEG ELEMENATA ISPOD GLAVNE DIJAGONALE
    max_el=A[1][0];
    for (i=0; i<n; i++)
        for (j=0; j<n; j++)
            if (i>j)
                if (A[i][j]>max_el)
                    max_el=A[i][j];    
    
    //**************************************************
    // STAMPANJE MATRICE NAKON PROMENE I MAX_EL
    for (i=0; i<n; i++)
    {
        printf("\n");
        for (j=0; j<n; j++)
            printf("\t%d",A[i][j]);
    }
    printf("\n\n\tNajveci element ispod glavne dijagonale je %d.\n\n",max_el);

}

Naravno da je ovo moglo da se uradi mnogo lakse, al evo radio sam postupno da bi tebi bilo jasno. U svakom slucaju, najbitnije je da program radi a i da tebi bude jasno :) Pozdrav, ako jos nesto treba, tu sam.