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

Заполнение матрицы по правилу - C++

Восстановить пароль Регистрация
 
Кукарача
0 / 0 / 0
Регистрация: 14.12.2012
Сообщений: 9
14.12.2012, 02:36     Заполнение матрицы по правилу #1
Привет, делаю лабораторную, нужно заполнить матрицу по заданному правилу:
19 20 21 22 23 24
18 17 16 15 14 13
7 8 9 10 11 12
6 5 4 3 2 1

Размер матрицы ввожу сама, вот мой код:
Код
#include <iostream>

using namespace std;

void MatrixOut(int **MATRIX, int COLOMNS, int ROWS);

int main()
{
   int Colomns, Rows;

   cout << "Input the size of matrix\n";
   cin >> Colomns >> Rows;             

   int **matrix=new int *[Colomns];
   for(int i=0; i<Colomns; i++){
    matrix[i]= new int [Rows];
   }                                 

   matrix[Colomns-1][Rows-1]=1;
   for(int i=Rows-2; i>0; i--){
    for(int u=Colomns-2; u>0; u--){
     matrix[i][u]++;
   } }                                 

   MatrixOut(matrix, Colomns, Rows);  

}

void MatrixOut(int **MATRIX, int COLOMNS, int ROWS){
  for(int a=0; a<COLOMNS; a++){
   for(int b=0; b<ROWS; b++){
    cout << MATRIX[a][b] << "\t";
   }
   cout << endl;
  }
}
Все компилируеться, но при запуске он заполняет матрицу адресами,только matrix[Colomns-1][Rows-1] - единица,как и указала. Что не так в коде?
Комплирую на CodeBlocks.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4920 / 2663 / 243
Регистрация: 29.11.2010
Сообщений: 7,405
14.12.2012, 02:38     Заполнение матрицы по правилу #2
C++
1
2
3
4
for(int i=Rows-2; i>0; i--){
    for(int u=Colomns-2; u>0; u--){
     matrix[i][u]++;
   } }
так вы его тут и не меняете
Кукарача
0 / 0 / 0
Регистрация: 14.12.2012
Сообщений: 9
14.12.2012, 02:46  [ТС]     Заполнение матрицы по правилу #3
последний елемент и должен быть единица, я сказала к тому, что остальные -10161920, 10181921 или типа того.
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4920 / 2663 / 243
Регистрация: 29.11.2010
Сообщений: 7,405
14.12.2012, 02:49     Заполнение матрицы по правилу #4
Кукарача, так до них карающая рука инициализации и не доходит. У вас берет диапазон [1, n-2], а должно [0, n-1]. А еще вы вместо инициализации значениями инкрементируете мусор.
Кукарача
0 / 0 / 0
Регистрация: 14.12.2012
Сообщений: 9
16.12.2012, 04:20  [ТС]     Заполнение матрицы по правилу #5
спасибо, разобралась,хотя и пришлось ввести обратную матрицу, всмысле которая запонялась: 1 2 3
4 5 6
,все заработало))
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4920 / 2663 / 243
Регистрация: 29.11.2010
Сообщений: 7,405
16.12.2012, 05:00     Заполнение матрицы по правилу #6
Кукарача, выложите код, вдруг кому понадобится еще.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.12.2012, 05:39     Заполнение матрицы по правилу
Еще ссылки по теме:

C++ Каждую строку матрицы Z(5,4) преобразовать по правилу
C++ Дана матрица размером МхN. Сформировать из этой матрицы вектор по правилу
C++ Заполнение массива по правилу

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

Или воспользуйтесь поиском по форуму:
Кукарача
0 / 0 / 0
Регистрация: 14.12.2012
Сообщений: 9
16.12.2012, 05:39  [ТС]     Заполнение матрицы по правилу #7
Код
#include <iostream>

using namespace std;

void MatrixOut(int **MATRIX, int COLUMNS, int ROWS);

int main()
{
   int Columns, Rows;

   cout << "Input the size of matrix\n";
   cin >> Columns >> Rows;

   int **matrix=new int *[Rows];
   int **0matrix = new int *[Rows];
   for(int i=0; i<Rows; i++){
    matrix[i]= new int [Columns];
    0matrix[Rows-i-1] = matrix[i];
   }


   for (int y=0; y<Rows; y++) {
    int b = (y) * Columns;
    for (int x=0; x<Columns; x++) {
     0matrix[y][x] = (y%2==1) ? ( b + x )  : ( Columns - x + b - 1);
    }
   }

  MatrixOut (matrix, Columns, Rows);
}


  void MatrixOut(int **MATRIX, int COLUMNS, int ROWS){
  for (int y=0; y<ROWS; y++) {
   for (int x=0; x<COLUMNS; x++) {
    cout << MATRIX[y][x] << "\t";
   }
  cout << endl;
  }
  }
вот
Yandex
Объявления
16.12.2012, 05:39     Заполнение матрицы по правилу
Ответ Создать тему
Опции темы

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