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

Постепенно прибавлять единицу к элементам матрицы - C++

Восстановить пароль Регистрация
 
Lel'ka
8 / 8 / 2
Регистрация: 10.07.2012
Сообщений: 38
10.07.2012, 17:22     Постепенно прибавлять единицу к элементам матрицы #1
Помогите ,дорогие Форумчане!
Нужно прибавлять единицу к матрице постепенно
0 0 0
0 0
0
1 0 0
0 0
0
0 1 0
0 0
0
1 1 0
0 0
0
И вывести полученные матрицы
Подскажите как это осуществить на Си/С++?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.07.2012, 17:22     Постепенно прибавлять единицу к элементам матрицы
Посмотрите здесь:

Прибавить к элементам каждого столбца первой матрицы произведения элементов соответствующих строк второй C++
C++ Получить новую матрицу прибавлением к элементам каждого столбца первой матрицы произведения элементов соответствующих строк второй матрицы
Максимальный по модулю элемент матрицы добавить к элементам из заданного интервала [a, b] всех четных столбцов C++
C++ Проложить путь по элементам матрицы
Получить новую матрицу, элементы которой равны элементам исходной матрицы, деленные на наименьший C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Catstail
Модератор
 Аватар для Catstail
21451 / 10236 / 1667
Регистрация: 12.02.2012
Сообщений: 17,111
10.07.2012, 17:42     Постепенно прибавлять единицу к элементам матрицы #2
Я не вижу здесь матрицы... Это треугольный массив, а матрица - это прямоугольная таблица.
Lel'ka
8 / 8 / 2
Регистрация: 10.07.2012
Сообщений: 38
10.07.2012, 17:54  [ТС]     Постепенно прибавлять единицу к элементам матрицы #3
Catstail, Простите, диагональки матрицы почемуто сместились...
ну допустим как тоже самое сделать с квадратной?
Ksan
26 / 26 / 0
Регистрация: 02.11.2010
Сообщений: 370
10.07.2012, 17:55     Постепенно прибавлять единицу к элементам матрицы #4
Lel'ka, что значит "постепенно"?
раз в 49 дней?
Lel'ka
8 / 8 / 2
Регистрация: 10.07.2012
Сообщений: 38
10.07.2012, 18:07  [ТС]     Постепенно прибавлять единицу к элементам матрицы #5
Ksan, ну всмысле прибавили к матрице 1, отложили эту матрицу, потом снова прибавили к новой единицу и так у нас получилось куча матриц
А не сразу сложить и получить другую..

ну на самом деле мне нужно составить матрицу порядка н и всевозможные варианты
0 0 0
0 0 0
0 0 0

0 1 0
0 0 0
0 0 0

до
0 1 1
1 0 1
1 1 0
обязательное условие чтобы на диагонали были 0

и прошу, чтобы мне подсказали как организовать такой цикл

Мне такие матрицы потом нужны будут для проверки еще одного условия..
А пока я не пойму как их создать даже

Цитата Сообщение от Catstail Посмотреть сообщение
Я не вижу здесь матрицы... Это треугольный массив, а матрица - это прямоугольная таблица.
матрица бывает и треугольной(нижней треугольной, верхней треугольной) просто в моей записи опущены нижние элементы
Catstail
Модератор
 Аватар для Catstail
21451 / 10236 / 1667
Регистрация: 12.02.2012
Сообщений: 17,111
10.07.2012, 19:30     Постепенно прибавлять единицу к элементам матрицы #6
"матрица бывает и треугольной(нижней треугольной, верхней треугольной) просто в моей записи опущены нижние элементы"- нет. В математике матрица - это прямоугольная таблица. Треугольные и прочие матрицы записываются с указанием, где сплошные нули.

Вот это пойдет:

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
#include "iostream.h"
 
void Prm(int X[5][5], int n)
{
   int i,j,k,p;
 
   for (i=0; i<5; i++)
       for (j=0; j<5; j++)
            if (i != j)
              {
                 cout << endl << "-----------------------------" << endl;
                 X[i][j]=1;
                 for (k=0; k<5; k++)
                     {
                       cout << endl;
                       for (p=0; p<5; p++)
                           cout << X[k][p] << " ";
                       cout << endl;
                     }
                X[i][j]=0; // если это "забить" - матрица будет постепенно наполнятся единицами
             }
    return;
}
 
 
int main(int argc, char* argv[])
{
 
    int Matr [5][5];
    int i,j;
 
    for (i=0; i<5; i++)
        for (j=0; j<5; j++) Matr [i][j]=0;
 
    Prm(Matr,5);
 
    return 0;
}
Lel'ka
8 / 8 / 2
Регистрация: 10.07.2012
Сообщений: 38
10.07.2012, 20:08  [ТС]     Постепенно прибавлять единицу к элементам матрицы #7
Catstail, Спасибо!! А можно еще сделать чтобы разные вариации были
допустим
0 1 0 1 0 1 0
1 0 1 0 1 0 1
0 1 0 1 0 1 0
1 1 1 0 1 0 1
1 1 1 1 0 1 0
1 1 0 1 0 0 1
1 0 1 0 0 0 0



это, вроде, называется поразрядное сложение
когда к 0 0 0 прибавляем 1 получаем 0 0 1, еще раз прибавляем => 0 1 0
могу неправильно называть, за безграмотность извините
Catstail
Модератор
 Аватар для Catstail
21451 / 10236 / 1667
Регистрация: 12.02.2012
Сообщений: 17,111
10.07.2012, 20:20     Постепенно прибавлять единицу к элементам матрицы #8
Не понял закономерности... Приведи пример на матрице 5*5
Lel'ka
8 / 8 / 2
Регистрация: 10.07.2012
Сообщений: 38
10.07.2012, 20:36  [ТС]     Постепенно прибавлять единицу к элементам матрицы #9
Catstail, вот, пожалуйста

0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0

0 1 0 0 0
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0

0 0 1 0 0
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0

0 1 1 0 0
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0

0 0 0 1 0
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
....
0 1 1 1 0
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0

0 0 0 0 1
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
.......
0 1 1 1 1
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0

0 0 0 0 0
1 0 0 0 0
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
.......
0 1 1 1 1
1 0 0 0 0
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0

0 0 0 0 0
0 0 1 0 0
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
......
0 1 1 1 1
1 0 1 0 0
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0 и так далее


Так более понятно?
Catstail
Модератор
 Аватар для Catstail
21451 / 10236 / 1667
Регистрация: 12.02.2012
Сообщений: 17,111
10.07.2012, 21:30     Постепенно прибавлять единицу к элементам матрицы #10
Да. Немного подожди.

Добавлено через 44 минуты
Вот. Если не напутал. Но имей в виду матриц будет много - для 5*5 их будет 1048576
(если не ошибаюсь).


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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
#include "iostream.h"
#include "math.h"
 
void Prm(int X[5][5], int n)
{
    int i,j,k,p,m,mm;
 
    mm=0;
 
    while (1)
   {
     i=0;
     j=1;
     m=mm;
 
     while (1)
     {
        if (m == 0) break;
           p=m % 2;
           m=m/2;
           X[i][j]=p;
           j++;
           if (j > 5) 
           {
               i++;
               j=0;
           }
 
           if (i == j)  j++;
                   
      }
 
      cout << endl << "-----------------------------" << endl;
 
      for (k=0; k<5; k++)
      {
        cout << endl;
        for (p=0; p<5; p++)
             cout << X[k][p] << " ";
        cout << endl;
      }
 
      mm++;
 
      if (mm > pow(2,(n*n-n))-1) break;
 
    }
 
    return;
 
}
 
 
int main(int argc, char* argv[])
{
 
    int Matr [5][5];
    int i,j;
 
    for (i=0; i<5; i++)
    for (j=0; j<5; j++) Matr [i][j]=0;
 
    Prm(Matr,5);
 
    return 0;
}
Lel'ka
8 / 8 / 2
Регистрация: 10.07.2012
Сообщений: 38
10.07.2012, 22:23  [ТС]     Постепенно прибавлять единицу к элементам матрицы #11
Catstail, Спасибо!

Добавлено через 40 минут
Catstail, а можно еще вопрос?
А если тоже самое сделать для верхней треугольной матрицы, то быстрее же будет..
А остальные элементы для нижней выстроить симметрично относительно диагонали
Catstail
Модератор
 Аватар для Catstail
21451 / 10236 / 1667
Регистрация: 12.02.2012
Сообщений: 17,111
11.07.2012, 11:28     Постепенно прибавлять единицу к элементам матрицы #12
Не факт, что быстрее... Хотя миллион вдвое больше, чем 500 тыс.
Lel'ka
8 / 8 / 2
Регистрация: 10.07.2012
Сообщений: 38
11.07.2012, 12:56  [ТС]     Постепенно прибавлять единицу к элементам матрицы #13
Catstail, Спасибо)) просто идея возникнула)) а так это программа работает, но 12 минут компилирует)
salam
157 / 138 / 11
Регистрация: 10.07.2012
Сообщений: 709
12.07.2012, 09:07     Постепенно прибавлять единицу к элементам матрицы #14
вообще говоря, у этой задачи есть гораздо более красивое и логичное математическое решение...
Catstail
Модератор
 Аватар для Catstail
21451 / 10236 / 1667
Регистрация: 12.02.2012
Сообщений: 17,111
12.07.2012, 11:02     Постепенно прибавлять единицу к элементам матрицы #15
Заинтриговал... Продемонстрируй!
salam
157 / 138 / 11
Регистрация: 10.07.2012
Сообщений: 709
12.07.2012, 11:08     Постепенно прибавлять единицу к элементам матрицы #16
суть в том, чтобы не расставлять циклически нули и единицы, а иметь несколько чисел (по количеству строк\столбцов), выполнять побитовое сложение и не париться вовсе... собственно, математика только в том, чтобы исключить попадание единиц на диагональ... это довольно занимательный вопрос. хотя, с практической точки зрения, мое решение вряд ли лучше Вашего...
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.07.2012, 11:39     Постепенно прибавлять единицу к элементам матрицы
Еще ссылки по теме:

C++ Записать на место отрицательных элементов матрицы нули ,а на место положительных единицу
Обращение к элементам матрицы C++

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

Или воспользуйтесь поиском по форуму:
Catstail
Модератор
 Аватар для Catstail
21451 / 10236 / 1667
Регистрация: 12.02.2012
Сообщений: 17,111
12.07.2012, 11:39     Постепенно прибавлять единицу к элементам матрицы #17
А я не циклически расставлял... Я прибавлял 1 к двоичному разложению.
Yandex
Объявления
12.07.2012, 11:39     Постепенно прибавлять единицу к элементам матрицы
Ответ Создать тему
Опции темы

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