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

Care este algoritmul pentru stergerea coloanelor care contin numere negative intr-o matrice?
Ex: scrieti un program care citeste un tablou bidimensional cu m linii si n coloane care memoreaza numere intregi de cel mult 4 cifre fiecare. Sa se afiseze tabloul obtinut prin stergerea coloanelor care contin numere negative.
Ajutor va rog!!!!!!

Răspunsuri la întrebare

Răspuns de boiustef
1

Răspuns:

folosim un vector b[] corespunzător coloanelor, în care punem 1 dacă în matrice pe coloana respectivă este negativ. Deplasăm unităţile în b[], la capătul din dreapta şi corespunzător schimbăm şi coloanele în matrice.

Numărăm câte zerouri avem în b[], adică coloane cu numai pozitive, actualizăm n şi afişem matricea rezultat.

Explicație:

#include <iostream>

using namespace std;

int n,m,i,j,a[100][100], b[100], k,nuneg;

int main()

{

   cout << "nr. linii m= "; cin >> m;

   cout << "nr. coloane n= "; cin >> n;

   cout << "introdu elemenele matricei: \n";

   for (i=0; i<m; ++i)

   {

       for (j=0; j<n; ++j)

       {

           cin >> a[i][j];

           if (a[i][j]<0) b[j]=1;

       }

   }

   j=0;

   while (j<n)

   {

       if (b[j]==1)

       {

           k=j; while (b[k]==1 && k<n) ++k;

           if (k<n)

           {

               swap(b[j],b[k]);

               for (int t=0; t<m; ++t)

                   swap(a[t][j],a[t][k]);

               j=k;

           }

           else j=n;

       }

       else {++j;}

   }

   j=0;

   while (b[j]==0) { ++nuneg; ++j; }

   n=nuneg;

   cout << "matrice modificata: \n";

   for (i=0; i<m; ++i)

   {

       for (j=0; j<n; ++j)

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

       cout << "\n";

   }

}


HarambePower: Multumesc mult!!!!!
Alte întrebări interesante