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

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

10.07.2012, 17:22. Просмотров 1420. Ответов 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
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
10.07.2012, 17:22
Ответы с готовыми решениями:

Как поразрядно прибавить единицу к элементам матрицы?
Подскажите дорогие Форумчане! Это должно примерно так выглядеть 0 0 0 0 0 0 1 0 0 ...

Присвоить элементам матрицы, находящимся выше главной диагонали значение на единицу больше
Доброй ночи/утра всем! Я новичок в питоне. У меня такая тривиальная задача: Дана квадратная...

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

Прибавить к элементам массива A единицу и записать результат в массив B
Всем привет. Есть такое задание: "Дан массив А типа byte. Прибавить к элементам массива A единицу...

16
Модератор
Эксперт Python
26780 / 13995 / 2677
Регистрация: 12.02.2012
Сообщений: 22,940
Записей в блоге: 2
10.07.2012, 17:42 2
Я не вижу здесь матрицы... Это треугольный массив, а матрица - это прямоугольная таблица.
0
8 / 8 / 2
Регистрация: 10.07.2012
Сообщений: 38
10.07.2012, 17:54  [ТС] 3
Catstail, Простите, диагональки матрицы почемуто сместились...
ну допустим как тоже самое сделать с квадратной?
0
27 / 27 / 4
Регистрация: 02.11.2010
Сообщений: 370
10.07.2012, 17:55 4
Lel'ka, что значит "постепенно"?
раз в 49 дней?
0
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
Модератор
Эксперт Python
26780 / 13995 / 2677
Регистрация: 12.02.2012
Сообщений: 22,940
Записей в блоге: 2
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
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
Модератор
Эксперт Python
26780 / 13995 / 2677
Регистрация: 12.02.2012
Сообщений: 22,940
Записей в блоге: 2
10.07.2012, 20:20 8
Не понял закономерности... Приведи пример на матрице 5*5
0
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
Модератор
Эксперт Python
26780 / 13995 / 2677
Регистрация: 12.02.2012
Сообщений: 22,940
Записей в блоге: 2
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
8 / 8 / 2
Регистрация: 10.07.2012
Сообщений: 38
10.07.2012, 22:23  [ТС] 11
Catstail, Спасибо!

Добавлено через 40 минут
Catstail, а можно еще вопрос?
А если тоже самое сделать для верхней треугольной матрицы, то быстрее же будет..
А остальные элементы для нижней выстроить симметрично относительно диагонали
0
Модератор
Эксперт Python
26780 / 13995 / 2677
Регистрация: 12.02.2012
Сообщений: 22,940
Записей в блоге: 2
11.07.2012, 11:28 12
Не факт, что быстрее... Хотя миллион вдвое больше, чем 500 тыс.
0
8 / 8 / 2
Регистрация: 10.07.2012
Сообщений: 38
11.07.2012, 12:56  [ТС] 13
Catstail, Спасибо)) просто идея возникнула)) а так это программа работает, но 12 минут компилирует)
0
193 / 173 / 30
Регистрация: 10.07.2012
Сообщений: 799
12.07.2012, 09:07 14
вообще говоря, у этой задачи есть гораздо более красивое и логичное математическое решение...
0
Модератор
Эксперт Python
26780 / 13995 / 2677
Регистрация: 12.02.2012
Сообщений: 22,940
Записей в блоге: 2
12.07.2012, 11:02 15
Заинтриговал... Продемонстрируй!
0
193 / 173 / 30
Регистрация: 10.07.2012
Сообщений: 799
12.07.2012, 11:08 16
суть в том, чтобы не расставлять циклически нули и единицы, а иметь несколько чисел (по количеству строк\столбцов), выполнять побитовое сложение и не париться вовсе... собственно, математика только в том, чтобы исключить попадание единиц на диагональ... это довольно занимательный вопрос. хотя, с практической точки зрения, мое решение вряд ли лучше Вашего...
0
Модератор
Эксперт Python
26780 / 13995 / 2677
Регистрация: 12.02.2012
Сообщений: 22,940
Записей в блоге: 2
12.07.2012, 11:39 17
А я не циклически расставлял... Я прибавлял 1 к двоичному разложению.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
12.07.2012, 11:39

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

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

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

Матрицы. Вычислить элементов матрицы Y по известным элементам вектора X
program soft ; uses crt ; var b:array of real; x: array of real; a: array of real; i,j,m :...

К значению четных элементов массива прибавьте единицу, от значения нечетных отнимите единицу
Помогите пожалуйста решить. Не могу сама додуматься. Создайте одномерный массив из 15 элементов....


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

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

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