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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 15.11.2011, 12:40   #1
vbnmrf
 
Регистрация: 15.11.2011
Сообщений: 8
По умолчанию Правый верхний треугольник

Задана матрица A=(aij) , i=1..n, j=1..m, n,m<=10, у которой есть отрицательные элементы. Переставить строки матрицы таким образом, чтобы отрицательные элементы были расположены в правом верхнем треугольнике.
Код:
#include <iostream>
using namespace std;

int main()
{
    int **A= new (int *[100]),i,j,*t,n,m;
    cout<<"vvedite koli4estvo strok i stolbcov <10\n";
    cin>>n;
    m=n;    
    for (i=0;i<100;i++)
        A[i]=new int [100];
    for (i=0;i<n;i++)
     for (j=0;j<m;j++)
     {
         A[i][j]=rand()%200-100;
     }
     cout<<endl;
     for (i=0;i<n;i++)
     {
      for (j=0;j<m;j++)
     
         cout<<A[i][j]<<" ";
         cout<<endl;
     }
     cout<<endl;
     for (i=0;i<n;i++)
      for (j=0;j<m;j++)
     {
     if (A[i][j]<0)
     { 
      for (j=0;j<m;j++)
      {
          t=A[0];
          A[0]=A[j];
          A[j]=t;
      }
     }
     
     }
     for (i=0;i<n;i++)
     {
      for (j=0;j<m;j++)
     
         cout<<A[i][j]<<" ";
         cout<<endl;
     }
     system("pause");
     return 0;
}
Я бьюсь неделю над кодом, не могу найти логическую ошибку. Строки местами могу поменять, но сделать так, чтобы все было в правом верхнем треугольнике не знаю как.



___________
Код нужно оформлять по правилам:
тегом [CODE]..[/СODE] (это кнопочка с решёточкой #)
Не забывайте об этом!
Модератор.

Последний раз редактировалось Serge_Bliznykov; 15.11.2011 в 13:17.
vbnmrf вне форума Ответить с цитированием
Старый 15.11.2011, 13:30   #2
Inv1s
Форумчанин
 
Аватар для Inv1s
 
Регистрация: 06.11.2011
Сообщений: 214
По умолчанию

Как я виду ты здесь перебираешь весь массив, а надо перебрать только нижний треугольник, то есть
Код:

for(int i = 1; i < n; i++)
for(int j = 0; j < i+1; j++)
if(a[i][j] < 0) find_slot(i,j);

void  find_slot(int ai,int aj)
{
for(int i = 0; i < n; i++)
for(int j = i+1; i < m; j++)
if(a[i][j] > 0) 
{
int k = a[i][j];
a[i][j] = a[ai][aj];
a[ai][aj] = k;
}
}
Помог, нажми на весы
html, js, php, С++, С#, OpenGl, DirectX, XNA, HLSL
Inv1s вне форума Ответить с цитированием
Старый 20.11.2011, 17:17   #3
vbnmrf
 
Регистрация: 15.11.2011
Сообщений: 8
По умолчанию

#include <iostream>
using namespace std;
int vvod_vivod (int A[5][5])
{
for (int i=0;i<5;i++)
{
for (int j=0;j<5;j++)
{
A[i][j]=rand()%200-100;
cout<<A[i][j]<<" ";
}
cout<<endl;
}
return 0;
}
int find(int ai,int aj,int A[5][5])
{
int k;
for(int i = 0; i < 5; i++)
for(int j = i+1; i < 5; j++)
if(A[i][j] > 0)
{
int k = A[i][j];
A[i][j] = A[ai][aj];
A[ai][aj] = k;
}
return 0;
}
int vivod_2(int A[5][5])
{
for (int i=0;i<5;i++)
{
for (int j=0;j<5;j++)
cout<<A[i][j]<<" ";
cout<<endl;
}
return 0;
}
int main()
{
int a,b,A[5][5];
a=vvod_vivod(A);
for(int i = 1; i < 5; i++)
for(int j = 0; j < i+1; j++)
if(A[i][j] < 0)
find(i,j,A);
cout<<endl;
b=vivod_2(A);
system("pause");
return 0;
}
Переделал программу по твоему совету, вроде все нормально, но после того как открывается консолька, она тут же закрывается, и все это за пару милисекунд... Я искал ошибку битых 5 часов, помогите плз...
vbnmrf вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Левый и правый Ctrl Ewgeny Kolyaev Общие вопросы Delphi 2 02.03.2011 22:37
Выделение динамической памяти под правый треугольник квадратной матрицы Assasin92 Общие вопросы C/C++ 0 30.10.2010 23:14
Переход на верхний катАлог Gapro Свободное общение 6 21.11.2009 16:47
динамически выделить память под верхний треугольник квадратной матрицы juventine Общие вопросы C/C++ 2 12.04.2009 13:06
динамическое выделение памяти под верхний треугольник квадратной матрицы juventine Помощь студентам 2 12.04.2009 13:02