Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.06.2011, 08:22   #1
axel43
Новичок
Джуниор
 
Регистрация: 09.04.2011
Сообщений: 2
Сообщение Матрицы,Выделение динамической

Доброго времени суток,нужна помощь,работает с ошибками:
Задание:в матрице удалить строки с положительными суммами элементов, а затем добавить столько же строк из отрицательных элементов заданного массива.


Код:
#include<iostream.h>
#include<iomanip.h>
#include<stdlib.h>
#include<conio.h>
#include<assert.h>

#define NDEBUG//otmena dejstviya operatorov kontrola "assert"
void main()
{
  clrscr();
  int i,j,n,m,q,k,sum,**ptr;
  cout<<"Vvedite razmery isxodnoy matricy"<<endl<<"4islo strok:";
  cin>>n;
  cout<<"4islo stolbcov:";
  cin>>m;
  ptr=new int*[m];
  assert(ptr!=0);//kontrol videleniya dinami4eskoi pamaty
  for(j=0;j<m;j++)
   { ptr[j]=new(int[n]);
     assert(ptr[j]!=0);
      for(i=0;i<n;i++)
       ptr[j][i]=(rand()-16383)%10;
        }
  cout<<setw(30)<<"Vvedena matrica:"<<endl;
  for(i=0;i<n;i++){
    for(j=0;j<m;j++)cout<<setw(4)<<ptr[j][i];
      cout<<endl;}
  cout<<endl;
q=0;
k=0;
  
do{ sum=0;
      for(i=q;i<q+1;i++)
     for(j=0;j<m;j++)
       sum=sum+ptr[j][i];
      if(sum>0)
     { for(j=q;j<m-k-1;j++)
           for(i=0;i<n;i++)ptr[j][i]=ptr[j+1][i];
       delete[]ptr[m-k-1];
       k++;continue;
     }
      q++;
     }
  while(q+k<m);
  if(k!=0) goto PROD;
  cout<<"Net strok po usloviu"<<endl;
  goto OUT;
PROD:cout<<"vvedite massiv dlinoy "<<m<<" simvolov"<<endl;
     if(k>=1)
     { for(i=n-k;i<n-k+1;i++)
       { ptr[i]=new(int[m]);
      assert(ptr[n-k]!=0);
        for(j=0;j<m;j++)
           cin>>ptr[j][i];
       }
     }
    if(k>1)
     { for(i=m-k+1;i<m;i++)
       { ptr[i]=new(int[m]);
         assert(ptr[n-k]!=0);
           for(i=0;i<n;i++)
             ptr[j][i]=ptr[j][i-1];
       }
     }
     cout<<setw(30)<<"Polu4ena matrica:"<<endl;
     for(i=0;i<n;i++){
       for(j=0;j<m;j++)cout<<setw(4)<<ptr[j][i];
         cout<<endl;}
OUT: for(j=0;j<m;j++)
     delete[]ptr[j];//osvobojdenie dinami4eskoi pamaty
     delete[]ptr;
     cout<<endl<<"Konec programmy.";
     getch();
}

Последний раз редактировалось pproger; 26.06.2011 в 01:39.
axel43 вне форума Ответить с цитированием
Старый 26.06.2011, 00:50   #2
tsarek
Новичок
Джуниор
 
Регистрация: 13.09.2008
Сообщений: 1
По умолчанию

Кто научил так безусловными переходами пользоваться? Это ж не васик.
tsarek вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
объявление динамической структуры С++ severest Помощь студентам 13 06.05.2011 17:59
Выделение динамической памяти под правый треугольник квадратной матрицы Assasin92 Общие вопросы C/C++ 0 30.10.2010 23:14
Сортировка динамической структуры Lemo Помощь студентам 7 13.10.2009 18:58
динамическое выделение памяти под верхний треугольник квадратной матрицы juventine Помощь студентам 2 12.04.2009 13:02
Помогите с динамической паматью! profi Помощь студентам 2 20.09.2008 15:50