Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Lel'ka
8 / 8 / 2
Регистрация: 10.07.2012
Сообщений: 38
#1

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

10.07.2012, 17:22. Просмотров 944. Ответов 16
Метки нет (Все метки)

Помогите ,дорогие Форумчане!
Нужно прибавлять единицу к матрице постепенно
0 0 0
0 0
0
1 0 0
0 0
0
0 1 0
0 0
0
1 1 0
0 0
0
И вывести полученные матрицы
Подскажите как это осуществить на Си/С++?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.07.2012, 17:22
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Постепенно прибавлять единицу к элементам матрицы (C++):

Если в заданной строке матрицы содержится ее максимальный отрицательный элемент, то ко всем элементам матрицы
Дана целая A. Если в заданной строке матрицы содержится ее максимальный...

Получить новую матрицу прибавлением к элементам каждого столбца первой матрицы произведения элементов соответствующих строк второй матрицы
Даны две действительные квадратные матрицы порядка n. Получить новую матрицу...

Все нулевые элементы матрицы заменить на единицу
Условие: Все нулевые элементы заменить на единицу! Во второй строке у меня там...

Обращение к элементам матрицы
Всем привет. Вот моё задание: В данной матрице определить произведение...

Проложить путь по элементам матрицы
Кто знает как решить эту задачу?

Подскажите как рекурсивно пройти по элементам матрицы
подскажите пжл как рекурсивно траверснуть матрицу fun(int mat, int col, int...

16
Catstail
Модератор
23540 / 11650 / 2036
Регистрация: 12.02.2012
Сообщений: 18,992
10.07.2012, 17:42 #2
Я не вижу здесь матрицы... Это треугольный массив, а матрица - это прямоугольная таблица.
0
Lel'ka
8 / 8 / 2
Регистрация: 10.07.2012
Сообщений: 38
10.07.2012, 17:54  [ТС] #3
Catstail, Простите, диагональки матрицы почемуто сместились...
ну допустим как тоже самое сделать с квадратной?
0
Ksan
27 / 27 / 4
Регистрация: 02.11.2010
Сообщений: 370
10.07.2012, 17:55 #4
Lel'ka, что значит "постепенно"?
раз в 49 дней?
0
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 Посмотреть сообщение
Я не вижу здесь матрицы... Это треугольный массив, а матрица - это прямоугольная таблица.
матрица бывает и треугольной(нижней треугольной, верхней треугольной) просто в моей записи опущены нижние элементы
0
Catstail
Модератор
23540 / 11650 / 2036
Регистрация: 12.02.2012
Сообщений: 18,992
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;
}
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
могу неправильно называть, за безграмотность извините
0
Catstail
Модератор
23540 / 11650 / 2036
Регистрация: 12.02.2012
Сообщений: 18,992
10.07.2012, 20:20 #8
Не понял закономерности... Приведи пример на матрице 5*5
0
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 и так далее


Так более понятно?
0
Catstail
Модератор
23540 / 11650 / 2036
Регистрация: 12.02.2012
Сообщений: 18,992
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;
}
1
Lel'ka
8 / 8 / 2
Регистрация: 10.07.2012
Сообщений: 38
10.07.2012, 22:23  [ТС] #11
Catstail, Спасибо!

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

К элементам заданой матрицы прибавить ее наименший по модулю элемент
Получить новую матрицу F(7,6) путем сложения всех елементов заданой матрици...

Записать на место отрицательных элементов матрицы нули ,а на место положительных единицу
Дана квадратная матрица A. Записать на место отрицательных элементов матрицы...

Записать на место отрицательных элементов матрицы нули, а на место положительных единицу
Дана квадратная матрица A. Записать на место отрицательных элементов матрицы...

Найти суммы положительных элементов строк матрицы и присвоить их элементам побочной диагонали
помогите пожалуйста, не могу решить! Дан массив A. Найти суммы положительных...


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

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru