infoarena

infoarena - concursuri, probleme, evaluator, articole => Informatica => Subiect creat de: Dragu Mircea din Mai 22, 2012, 20:46:41



Titlul: matrice
Scris de: Dragu Mircea din Mai 22, 2012, 20:46:41
Salut.
Am o problema :

Fie A o matrice patratica de dimensiune n, cu elemente de tip intreg. In fiecare linie, sa se schimbe intre ele elementele care se afla pe diagonala principala cu cele aflate pe diagonala secundara.
Sa se determine maximul elementelor din matrice excluzand pe cele aflate pe diagonale.

Prima cerinta am rezolvat-o, insa nu reusesc sa parcurg "doar" elementele din matrice excluzand diagonalele.  ](*,)

Cod:
#include<stdio.h>
#define p 16
#define q 16

int main()
{
    int A[p][q], b=0, d=0, m, n, r, i, j, k;
    printf("\n Dati numarul de linii (coloane) m = ");
    scanf("%d", &m);
    for(i=0; i<m; i++)
    {
        for(j=0; j<m; j++)
        {
            printf("\n A[%d][%d] = ", i+1, j+1);
            scanf("%d", &A[i][j]);
        }
    }
    printf("\n Matricea asociata este : \n\n");
    for(i=0; i<m; i++)
    {
        for(j=0; j<m; j++)
        {
            printf("\t %d", A[i][j]);
        }
        printf("\n\n");
    }
    for(i=0, j=0; i<m, j<m; i++, j++)
    {
        r=A[i][i];
        A[i][i] = A[i][m-j-1];
        A[i][m-j-1] = r;
    }
    printf("\n Matricea rezultat este : \n\n");
    for(i=0; i<m; i++)
    {
        for(j=0; j<m; j++)
        {
            printf("\t %d", A[i][j]);
        }
        printf("\n\n");
    }
    for(i=0; i<m; i++)
    {
        for(j=i; j<m; j++)
        {
                if(i!=j & b < A[i][j])
                b = A[i][j];
        }
    }
    printf("\n\n Maximul elementelor din matrice excluzand pe cele aflate pe diagonale : %d!\n", b);
}

Editat de admin: Foloseste tagul "code" cand postezi surse.


Titlul: Răspuns: matrice
Scris de: George Marcus din Mai 22, 2012, 20:52:07
Conditia sa fie pe diagonala principala e i = j, iar pe cea secundara i + j = n - 1. Cand calculezi maximul verifici prima data ca niciuna dintre aceste conditii sa nu fie indeplinita.