Перейти к содержанию
СофтФорум - всё о компьютерах и не только

Удалить из матрицы все столбцы, в которых нет отрицательных элементов(Visual С++ 2008)


Рекомендуемые сообщения

int otr=0;   for(j=0;j<m;j++)    {	    for(i=0;i<n;i++)	    {		    if (A[i][j]<0)		    otr=otr+1;		    }    if (otr=0)	    {		    for (i=0;i<n;i++)		    {	    A[i][j]=A[i+1][j];		    }	    m--;	    otr=0;	    }    }    cout << "Массив:" << endl;	  for (int i = 0; i < n; ++i)   {  for(int j = 0; j < m; ++j)	  cout << A[i][j] << " ";	    cout <<endl;     }

Вообще ничё не удаляет( Где ошибка? =(

Ссылка на комментарий
Поделиться на другие сайты

Ошибка, точнее, ошибки, в алгоритме удаления столбцов.

#include<iostream>#include<iomanip>using namespace std;int main(){const int n=3,m=4;int A[n][m]={{-1,-2,3,-4},{5,6,7,8},{9,10,11,12}},k=m; bool u; cout<<"Source array:"<<endl;for(int i=0;i<n;++i){for(int j=0;j<m;++j)cout<<setw(5)<<A[i][j]; cout<<endl;}for(int j=0;j<k;j++){  u=true; for(int i=0;i<n;i++)if(A[i][j]<0)u=false;  if(u){for(int i=0;i<n;i++)for(int h=j+1;h<k;++h)A[i][h-1]=A[i][h]; j--; k--;}}cout<<"Output array:"<<endl;for(int i=0;i<n;++i){for(int j=0;j<k;++j)cout<<setw(5)<<A[i][j]; cout<<endl;}cin.get();}

Это на Dev-C++, в Visual C++ надо добавить, скорее всего, заголовочный файл "stdafx.h"

Ссылка на комментарий
Поделиться на другие сайты

Ошибка, точнее, ошибки, в алгоритме удаления столбцов.

#include<iostream>#include<iomanip>using namespace std;int main(){const int n=3,m=4;int A[n][m]={{-1,-2,3,-4},{5,6,7,8},{9,10,11,12}},k=m; bool u;cout<<"Source array:"<<endl;for(int i=0;i<n;++i){for(int j=0;j<m;++j)cout<<setw(5)<<A[i][j]; cout<<endl;}for(int j=0;j<k;j++){  u=true; for(int i=0;i<n;i++)if(A[i][j]<0)u=false;  if(u){for(int i=0;i<n;i++)for(int h=j+1;h<k;++h)A[i][h-1]=A[i][h]; j--; k--;}}cout<<"Output array:"<<endl;for(int i=0;i<n;++i){for(int j=0;j<k;++j)cout<<setw(5)<<A[i][j]; cout<<endl;}cin.get();}

Это на Dev-C++, в Visual C++ надо добавить, скорее всего, заголовочный файл "stdafx.h"

А что такое h и k??

Ссылка на комментарий
Поделиться на другие сайты

k - это количество столбцов в матрице-результате. А h просто еще одна переменная цикла. i и j у нас уже заняты - по i перебираются номера строк, в j сидит номер столбца, который мы сейчас проверили. Если столбец j должен быть удален, оставшиеся столбцы от j+1 до k должны быть смещены налево. h и служит для перебора номеров столбцов справа от удаляемого, чтобы поочередно перенести их на одну позицию влево.

P.S. Не надо в ответе цитировать целиком предыдущий пост. О чем речь, и так понятно :)

Изменено пользователем Тролль
Ссылка на комментарий
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...