Informatică, întrebare adresată de Ariana2693, 9 ani în urmă

URGENT Se da o matrice cu n linii si m coloane. Sa se afiseze matricea modificata astfel: elementele de pe contur egale cu valoarea elementului aflat pe ultima linie si ultima coloana.

Răspunsuri la întrebare

Răspuns de artur99
3
1. Trebuie să preiei elementul de pe ultima linie/coloană. Nu știu dacă la școală ați făcut cu for de la 0 la < n (Caz 1), sau de la 1 la <= n (Caz 2), dar sunt similare rezolvările.

Caz 1:
int ultimul_element = a[n-1][m-1];

Caz 2:
int ultimul_element = a[n][m];


2. Trebuie să parcurgi cele 4 contururi.
2.a) Conturul de sus, fiecare coloană de pe prima linie
Caz 1:
for(i=0;i<m;i++){
a[0][i] = ultimul_element;
}
Caz 2:
for(i=1;i<=m;i++){
a[1][i] = ultimul_element;
}
2.b) Conturul de jos, fiecare coloană de pe ultima linie
Caz 1:
for(i=0;i<m;i++){
a[n-1][i] = ultimul_element;
}
Caz 2:
for(i=1;i<=m;i++){
a[n][i] = ultimul_element;
}

2.c) Conturul din stânga, fiecare linie de pe prima coloană
Caz 1:
for(i=0;i<n;i++){
a[i][0] = ultimul_element;
}
Caz 2:
for(i=1;i<=n;i++){
a[i][1] = ultimul_element;
}
2.d) Conturul din dreapta, fiecare linie de pe ultima coloană
Caz 1:
for(i=0;i<n;i++){
a[i][m-1] = ultimul_element;
}
Caz 2:
for(i=1;i<=n;i++){
a[i][m] = ultimul_element;
}


Și e gata. Oricum, se pot scrie și mai compact, adică 2 în una:
1. Iei bordurile de sus și de jos și le înlocuiești (adică prima și ultima linie)
for(i=0;i<m;i++){
a[0][i] = ultimul_element;
a[m-1][i] = ultimul_element;
}
2. Iei bordurile din stânga și din dreapta (adică pe prima și ultima coloană)
for(i=0;i<n;i++){
a[i][0] = ultimul_element;
a[i][n-1] = ultimul_element;
}


Acum centralizând:

int a[100][100], i, j, el;

cin>>n>>m;
for(i=0;i<n;i++)
    for(j=0;j<m;j++)
        cin>>a[i][j];

el = a[n-1][m-1];

for(i=0;i<m;i++){
a[0][i] = el;
a[m-1][i] = el;
}
for(i=0;i<n;i++){
a[i][0] = el;
a[i][n-1] = el;
}

for(i=0;i<n;i++){
    for(j=0;j<m;j++)
        cout<<a[i][j]<<' ';
    cout<<endl;
}
Alte întrebări interesante