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:
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";
}
}