Member 13298704 Ответов: 2

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


Я не получаю правильный вывод

Что я уже пробовал:

void main()
{
int a[5][5],i,j,k,t;
for(i=0;i<4;i++)
{
for(j=0;j<4;j++)
{
cin>>a[i][j];
}
for(k=0;k<25;k++)
{
a[k]=a[i][j];
}
}
for(k=0;k<25;k++)
{
if(a[k]>a[k+1])
{
t=a[k+1];
a[k+1]=a[k];
a[k]=t;
}
}
for(k=0;k<25;k++)
{
cout<<a[k]<<\t;
}
getch();
}

2 Ответов

Рейтинг:
1

CPallini

Инициализация матрицы некорректна (не завершена). Более того, ваша рутина сортировки несовершенна.
Попробуй

#include <iostream>
using namespace std;
int main()
{
  int a[5][5],i,j,k,t;
  int * b = reinterpret_cast<int*>(a);
  for(i=0;i<5;i++)
  {
    for(j=0;j<5;j++)
    {
      cin>>a[i][j];
    }
  }
  for(i=0;i<24;i++)
  {
    for(j=i+1;j<25;j++)
    {
      if(b[i]>b[j])
      {
        t=b[i];
        b[i]=b[j];
        b[j]=t;
      }
    }
  }
  for(k=0;k<25;k++)
  {
    cout<<b[k]<<"\t";
  }
  cin.get();
}


Рейтинг:
1

Patrice T

Прежде всего, сделайте правильный отступ в коде, это поможет чтению.

void main()
{
    int a[5][5],i,j,k,t;
    for(i=0;i<4;i++)
    {
        for(j=0;j<4;j++)
        {
            cin>>a[i][j];
        }
        // this loop is very confusing and lake no sens to me
        for(k=0;k<25;k++)
        {
            a[k]=a[i][j];
        }
    }
    for(k=0;k<25;k++)
    {
        if(a[k]>a[k+1])
        {
            t=a[k+1];
            a[k+1]=a[k];
            a[k]=t;
        }
    }
    for(k=0;k<25;k++)
    {
        cout<<a[k]<<\t;
    }
    getch();
}

Существует инструмент, который позволяет вам видеть, что делает ваш код, его имя отладчик Это также отличный инструмент обучения, потому что он показывает вам реальность, и вы можете увидеть, какие ожидания соответствуют реальности.
Когда вы не понимаете, что делает ваш код или почему он делает то, что делает, ответ таков: отладчик.
Используйте отладчик, чтобы увидеть, что делает ваш код. Просто установите точку останова и посмотрите, как работает ваш код, отладчик позволит вам выполнять строки 1 на 1 и проверять переменные по мере их выполнения.

Отладчик-Википедия, свободная энциклопедия[^]

Освоение отладки в Visual Studio 2010 - руководство для начинающих[^]
Базовая отладка с помощью Visual Studio 2010-YouTube[^]
Отладчик здесь для того, чтобы показать вам, что делает ваш код, и ваша задача-сравнить его с тем, что он должен делать.
В отладчике нет никакой магии, он не находит ошибок, он просто помогает вам. Когда код не делает того, что ожидается, вы близки к ошибке.