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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Lel'ka
8 / 8 / 2
Регистрация: 10.07.2012
Сообщений: 38
#1

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

10.07.2012, 17:22. Просмотров 889. Ответов 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
И вывести полученные матрицы
Подскажите как это осуществить на Си/С++?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.07.2012, 17:22
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Постепенно прибавлять единицу к элементам матрицы (C++):

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

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

Все нулевые элементы матрицы заменить на единицу - C++
Условие: Все нулевые элементы заменить на единицу! Во второй строке у меня там изменённый масив но там выводит нули одни! Почему? ...

Обращение к элементам матрицы - C++
Всем привет. Вот моё задание: В данной матрице определить произведение абсолютных значений элементов (ПАЗ) в столбцах с a до b. Я написал...

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

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

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Catstail
Модератор
22547 / 10952 / 1776
Регистрация: 12.02.2012
Сообщений: 18,087
10.07.2012, 17:42 #2
Я не вижу здесь матрицы... Это треугольный массив, а матрица - это прямоугольная таблица.
Lel'ka
8 / 8 / 2
Регистрация: 10.07.2012
Сообщений: 38
10.07.2012, 17:54  [ТС] #3
Catstail, Простите, диагональки матрицы почемуто сместились...
ну допустим как тоже самое сделать с квадратной?
Ksan
27 / 27 / 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
Модератор
22547 / 10952 / 1776
Регистрация: 12.02.2012
Сообщений: 18,087
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
Модератор
22547 / 10952 / 1776
Регистрация: 12.02.2012
Сообщений: 18,087
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
Модератор
22547 / 10952 / 1776
Регистрация: 12.02.2012
Сообщений: 18,087
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
Модератор
22547 / 10952 / 1776
Регистрация: 12.02.2012
Сообщений: 18,087
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
162 / 143 / 12
Регистрация: 10.07.2012
Сообщений: 727
12.07.2012, 09:07 #14
вообще говоря, у этой задачи есть гораздо более красивое и логичное математическое решение...
Catstail
Модератор
22547 / 10952 / 1776
Регистрация: 12.02.2012
Сообщений: 18,087
12.07.2012, 11:02 #15
Заинтриговал... Продемонстрируй!
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.07.2012, 11:02
Привет! Вот еще темы с ответами:

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
12.07.2012, 11:02
Ответ Создать тему
Опции темы

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