Форум программистов, компьютерный форум CyberForum.ru

Как заполнить квадратную матрицу числами по порядку? - C++

Восстановить пароль Регистрация
 
Vogde
0 / 0 / 0
Регистрация: 03.01.2013
Сообщений: 75
17.04.2013, 15:41     Как заполнить квадратную матрицу числами по порядку? #1
Осталась надежда только на вас!
Не могу понять как сделать чтобы матрица заполнялась в цикле определенным порядком чисел,
куда не смотрел везде генерируются случайный порядок.
Подскажите как написать код, чтобы матрица выглядела так:
1 2 3 4 5
5 4 3 2 1
1 2 3 4 5
5 4 3 2 1
1 2 3 4 5
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.04.2013, 15:41     Как заполнить квадратную матрицу числами по порядку?
Посмотрите здесь:

Заполнить матрицу 9x9 случайными числами. Отобразить матрицу симметрично относительно главной диагонали C++
Как заполнить матрицу 6*9 случайными действительными числами и вывести на экран? C++
C++ Заполнить матрицу случайными числами. Развернуть матрицу на 90(градусов) против часовой стрелки
Заполнить квадратную матрицу размером N x N по спирали C++
Заполнить матрицу случайными числами. Вернуть матрицу на 90o по часовой стрелке C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Bringoff
СуперМодулятор
 Аватар для Bringoff
132 / 131 / 15
Регистрация: 03.11.2012
Сообщений: 974
17.04.2013, 15:54     Как заполнить квадратную матрицу числами по порядку? #2
C++
1
2
3
4
5
6
7
8
9
10
11
int index = 1;
bool b= true;
for (int i = 0; i < 5 ; i++)
{
  for (int j = 0; j < 5; j++)
    {
       matrix[i, j] = index;
       if (b)  index++; else index--;
    }
b = not b;
}
Как-то так. Надеюсь, алгоритм ясен.
Vogde
0 / 0 / 0
Регистрация: 03.01.2013
Сообщений: 75
17.04.2013, 16:02  [ТС]     Как заполнить квадратную матрицу числами по порядку? #3
Izobara, Извини я с матрицами не имел дело вообще. Не совсем все понятно Если можно напиши полный код программы
Afflicted
Обитатель форума
199 / 182 / 8
Регистрация: 28.10.2012
Сообщений: 538
17.04.2013, 16:03     Как заполнить квадратную матрицу числами по порядку? #4
Как вариант:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include <algorithm>
#include <iostream>
using namespace std;
 
bool func1 (int i,int j) { return (i<j); }
bool func2 (int i,int j) { return (i>j); }
 
int main()
{
    int arr[5][5] =
    {
        1,2,3,4,5,
        2,3,4,1,5,
        1,5,2,3,4,
        5,2,4,3,1,
        1,2,3,5,4
    };
 
    for (int i = 0; i < 5; ++i)
        sort(arr[i], arr[i]+5, (!(i%2) ? func1 : func2));
 
    for (int i = 0; i < 5; ++i)
    {
        for (int j = 0; j < 5; ++j)
            cout << arr[i][j] << " ";
 
        cout << endl;
    }
    
    system("pause");
}
Bringoff
СуперМодулятор
 Аватар для Bringoff
132 / 131 / 15
Регистрация: 03.11.2012
Сообщений: 974
17.04.2013, 16:10     Как заполнить квадратную матрицу числами по порядку? #5
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#include <iostream>
using namespace std;
 
int main()
{
    int index = 1;
    int matrix[5][5];
    bool b= true;
    for (int i = 0; i < 5 ; i++)
    {
     for (int j = 0; j < 5; j++)
     {
       matrix[i][j] = index;
       if (b)  index++; else index--;
     }
    if (b)  index--; else index++;
    b = not b;
    }
    for (int i = 0; i < 5 ; i++)
    {
     for (int j = 0; j < 5; j++)
     {
        cout<<matrix[i][j];
     }
   cout<<endl;
    }
    return 0;
}
Afflicted
Обитатель форума
199 / 182 / 8
Регистрация: 28.10.2012
Сообщений: 538
17.04.2013, 16:13     Как заполнить квадратную матрицу числами по порядку? #6
Izobara, во-первых, это приведет к правильному заполнению только первых двух строк массива, потому что после первого прохождения цикла истинная b станет ложной и не будет меняться после.
Во-вторых, что такое "b = not b"
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11836 / 6815 / 770
Регистрация: 27.09.2012
Сообщений: 16,899
Записей в блоге: 2
Завершенные тесты: 1
17.04.2013, 16:19     Как заполнить квадратную матрицу числами по порядку? #7
Как вариант:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
#include <iomanip>
#include <cmath>
int main(){
    const int width=8;
    const int height=15;
    int matrix[width][height];
    for(int i=0;i<height;++i)
        for(int j=0,mult=i&1?1:0;j<width;++j)
            matrix[j][i]=abs(mult*(width-1)-j)+1;
    for(int i=0;i<height;++i){
        for(int j=0;j<width;++j)
            std::cout<<std::setw(4)<<matrix[j][i];
        std::cout<<std::endl;
    }
}
Bringoff
СуперМодулятор
 Аватар для Bringoff
132 / 131 / 15
Регистрация: 03.11.2012
Сообщений: 974
17.04.2013, 16:20     Как заполнить квадратную матрицу числами по порядку? #8
Цитата Сообщение от Afflicted Посмотреть сообщение
во-первых, это приведет к правильному заполнению только первых двух строк массива, потому что после первого прохождения цикла истинная b станет ложной и не будет меняться после.
Меняться будет. Она не менялась бы, если бы я написал:
C++
1
if (b) {  index--; b = not b;} else index++;
А так изменение у меня за пределами условия.
Во-вторых, что такое "b = not b"
Изменение значения на противоположное.
Если не проверяли код, то не надо расглагольствовать. Я перед отправкой компилировал и запускал - все ок.
итернал
4 / 4 / 0
Регистрация: 17.09.2012
Сообщений: 284
17.04.2013, 16:36     Как заполнить квадратную матрицу числами по порядку? #9
вот так ище можно
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#include <iostream>
using namespace std;
void main()
{
    int n,k;
    int *mas;
    cout<<"Please enter size matrix n*k"<<endl;
    cout<<"enter n = ";
    cin>>n;
    cout<<"enter k = ";
    cin>> k;
    mas=new int[n*k];
    int b=0;
    for (int i=0;i<n;i++)
    {
        for (int j=0;j<k;j++)
        {
            if (i%2==0)
            {
                b++;
                *(mas+i*n+j)=b;
            }
            else            
            {
                *(mas+i*n+j)=b;
                b--;
            }
        }
    }
    for(i=0;i<n;i++)
    {
        for(int j=0;j<k;j++)
        {
            cout<<*(mas+i*n+j);
        }
        cout <<endl;
    }
    delete [] mas;
    scanf ("%i");
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.04.2013, 16:47     Как заполнить квадратную матрицу числами по порядку?
Еще ссылки по теме:

C++ Заполнить квадратную матрицу 10 на 10 змейкой
Заполнить квадратную матрицу змейкой C++
C++ Заполнить квадратную матрицу натуральными числами по спирали

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Vogde
0 / 0 / 0
Регистрация: 03.01.2013
Сообщений: 75
17.04.2013, 16:47  [ТС]     Как заполнить квадратную матрицу числами по порядку? #10
Croessmah, Спасибо большое, все работает код именно тот который нужен
Yandex
Объявления
17.04.2013, 16:47     Как заполнить квадратную матрицу числами по порядку?
Ответ Создать тему
Опции темы

Текущее время: 06:19. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru