Informatică, întrebare adresată de TeemoGG, 8 ani în urmă

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

Răspuns de boiustef
2

#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;

}


Alte întrebări interesante