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

Удалить из матрицы все столбцы, в которых нет отрицательных элементов(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. Не надо в ответе цитировать целиком предыдущий пост. О чем речь, и так понятно :)

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

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

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

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