Дана матрица. Необходимо:
- уплотнить заданную матрицу, удаляя из нее строки и столбцы, заполненные нулями;
- найти номер первой из строк, содержащих хотя бы один положительный элемент.
Код программы:
//--------------------------------------------------------------------------- #include<iostream.h> #include<conio.h> #include<math.h> #include<windows.h> #include<iomanip.h> #include<vcl.h> #pragma hdrstop #pragma argsused //--------------------------------------------------------------------------- char *rus(const char *text); int main(int argc, char* argv[]) { randomize(); int n,m,i,j,cnt=0,ipos=0; cout<<rus("Введите размерность массива:")<<endl; cout<<rus("Введите количество строк: n=");cin>>n; cout<<rus("Введите количество столбцов: m=");cin>>m; int **a=new int*[n]; for(i=0;i<n;i++)a[i]=new int[m]; int **a1=new int*[n]; for(i=0;i<n;i++)a1[i]=new int[m]; //--------------------------------------------------------------------------- cout<<rus("\nВведите элементы массива:")<<endl<<endl; for(i=0;i<n;i++) { for(j=0;j<m;j++) { a[i][j]=-4+random(10); cout<<setw(4)<<a[i][j]; } cout<<endl; } //--------------------------------------------------------------------------- for(i=0;i<n;i++) { for(j=0;j<m;j++) if(a[i][j]>0) { ipos=i; cnt++; break; } if(1==cnt) { cout<<rus("\nНомер строки содержащий положительный элемент: ")<<ipos+1; break; } } if(0==cnt)cout<<rus("\nТаких строк нет!"); //--------------------------------------------------------------------------- cout<<endl<<endl; cout<<rus("Уплотненная матрица:")<<endl<<endl; cnt=0; for(i=0;i<n;i++) for(j=0;j<m;j++) { if(a[i][j]!=0) { cout<<setw(4)<<a[i][j]; cnt++; } if(cnt==m) { cout<<endl; cnt=0; } } getch(); return 0; } //--------------------------------------------------------------------------- char bufrus[256]; char *rus(const char *text) { CharToOem(text, bufrus); return bufrus; } //---------------------------------------------------------------------------
Результат работы программы: