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

Se citeşte din fişierul matrice.in o matrice pătratică cu n linii si n coloane (n<=100), cu elemente numere naturale din intervalul [0,1000].

Ştergeţi liniile si coloanele pe care se afla cele mai mici doua elemente de pe diagonala principală şi afişaţi matricea rezultată în fişierul matrice.out.

Se vor scrie si folosi funcţii pentru:
- determinarea poziţiei elementului minim de pe diagonala principală
- ştergerea liniei si a coloanei cu indice dat.

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

Răspunsuri la întrebare

Răspuns de boiustef
1

#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