Se citeste din fisierul matrice.in o matrice patratica cu n linii si n coloane.
Stergeti liniile si coloanele pe care se afla cele mai mici 2 elemente de pe diagonala principala si afisati matricea rezultata in fisierul matrice.out.
(trebuie sa fie folosite subprograme si banuiesc ca trebuie pentru: citirea matricii, afisarea matricii, determinarea pozitiei elementului minim de pe diagonala principala, stergerea liniei si a coloanei) LA NIVEL DE CLASA A XI-A.
EXEMPLU:
matrice.in
5
3 2 4 3 2
2 1 5 4 6
3 2 4 3 5
4 3 2 2 1
4 3 5 6 7
matrice.out
3 4 2
3 4 5
4 5 7
(s-au sters liniile si coloanele 2 si 4)
Răspunsuri la întrebare
#include <iostream>
#include <fstream>
using namespace std;
int a[101][101];
ifstream f("matrice.in");
ofstream g("matrice.out");
int cautapozmin(int n)
{
int min=1001, p=0;
for (int i=1; i<=n; ++i)
if (a[i][i]<min) { min=a[i][i]; p=i; }
return p;
}
void modifica(int poz, int &n)
{
int i,j;
for (i=poz; i<n; ++i)
for (j=1; j<=n; ++j)
a[i][j]=a[i+1][j];
for (j=poz; j<n; ++j)
for (i=1; i<=n; ++i)
a[i][j]=a[i][j+1];
--n;
}
void afisare(int n)
{
int i, j;
for (i=1; i<=n; ++i)
{
for (j=1; j<=n; ++j)
g << a[i][j] << " ";
g << "\n";
}
}
int main()
{
int n, i, j, poz;
f >> n;
for (i=1; i<=n; ++i)
for (j=1; j<=n; ++j)
f >> a[i][j];
poz=cautapozmin(n);
modifica(poz,n);
poz=cautapozmin(n);
modifica(poz,n);
afisare(n);
return 0;
}