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

se citesc n*m elemente intr-o matrice din fisier, sa se inlocuiasca elementele de pe coloana c1 cu elementele de pe coloana c2. va rog rapid.​

Răspunsuri la întrebare

Răspuns de andriesboss92
1

Răspuns:

#include <iostream>

#include <fstream>

using namespace std;

ifstream in("matrice.in");

ofstream out("matrice.out");

int main()

{

   int n, m, c1, c2;

   

   in>>n;

   in>>m;

   in>>c1;

   in>>c2;

   

   int a[n][m], aux[m];

   

   for(int i=1;i<=n;i++)

       for(int j=1;j<=m;j++)

       {

           in>>a[i][j];

           if(j==c2)

               aux[i]=a[i][j];

       }

   

   for(int i=1;i<=n;i++)

       a[i][c1]=aux[i];

   

   for(int i=1;i<=n;i++)

   {

       for(int j=1;j<=m;j++)

           cout<<a[i][j]<<" ";

       cout<<endl;

   }

}

Exemplu:

n = 3

m = 4

c1 = 3

c2 = 1

Matricea este:

1 2 3 4

1 2 4 3

1 3 4 2

Se va afisa:

1 2 1 4

1 2 1 3

1 3 1 2

Explicație:

Citim initial cate linii si coloane are matricea a[i][j], dupa care citim coloana pe care vrem sa o inlocuim apoi citim coloana cu care vrem sa inlocuim coloana citita anterior.

Am declarat matricea a[n][m] deoarece este mai eficient sa folosesti asa declararea intrucat nu ocupi spatiu suplimentar in memorie, folosind doar nxm valori necesare.

In timpul citirii matricei, vom folosi un vector auxiliar care va memora toate elementele de pe coloana c2 citita.

Parcurgem din nou matricea cu un singur for(i,n) deoarece avem deja coloana c1 pe care vrem sa o inlocuim.

Ex: Pt exemplul de mai sus, noi vrem sa inlocuim coloana 3, adica elementele (3, 4 , 4)

c1: 3 4 4 ... si cum coloana este astfel:

3

4

4

Crestem i-ul astfel incat sa modificam elementele de pe fiecare linie a coloanei c1 citita.

i=1: 3

i=2: 4

i=3: 4

Vectorul aux[] are elementele: 1 1 1

a[1][3]=aux[1] ⇒ a[1][3]=1

a[2][3]=aux[2] ⇒ a[2][3]=1

a[3][3]=aux[3] ⇒ a[3][3]=1


videosxdfa: Multam fain :D
Alte întrebări interesante