6 / 6 / 2
Регистрация: 29.03.2012
Сообщений: 101
|
||||||
1 | ||||||
Динамическая верхнетреугольная матрица24.06.2018, 09:48. Показов 5938. Ответов 26
Нужно задать верхнюю треугольную матрицу размера 3х3. Размер строк задаётся динамически.
[0][0] [0][1] [0][2] [1][0] [1][1] [2][0] А должно: [0][0] [0][1] [0][2] [1][1] [1][2] [2][2] Как так сделать? Пробовал создавать все строки размером 3 и потом удалять первые ненужные элементы оператором delete, но компилятор ругается.
0
|
24.06.2018, 09:48 | |
Ответы с готовыми решениями:
26
Динамическая матрица Динамическая матрица С++ динамическая матрица Динамическая матрица |
447 / 333 / 172
Регистрация: 01.07.2015
Сообщений: 1,162
|
|||||||||||
24.06.2018, 10:10 | 2 | ||||||||||
Примерно так
0
|
223 / 188 / 97
Регистрация: 15.04.2018
Сообщений: 718
|
|
24.06.2018, 11:28 | 3 |
ReDoX, меня терзают смутные сомнения, что автор темы перешел с паскаля и хочет делать с индексами то, что он делал там. А чисто "косметика", когда мы сами значения изменяем с 0 на 3 ему не нужна
0
|
6 / 6 / 2
Регистрация: 29.03.2012
Сообщений: 101
|
|
24.06.2018, 12:19 [ТС] | 4 |
Я сам не до конца понимаю, что нужно. Задача звучит так:
Написать функцию, заводящую верхне-треугольную матрицу заданного порядка (он определяется во время вы- полнения программы; хранить в памяти, естественно, нужно только возможно ненулевые элементы, заведомые нули ниже главной диагонали хранить незачем) в соответствии со вторым подходом к двумерным динамическим массивам (возвращает int**).
0
|
223 / 188 / 97
Регистрация: 15.04.2018
Сообщений: 718
|
|
24.06.2018, 12:22 | 5 |
как я понимаю задачу - тут работа именно с представлением (выводом) данных. Так что вариант ReDoX, если он написан правильно, должен работать
0
|
474 / 426 / 290
Регистрация: 10.03.2015
Сообщений: 1,782
|
||||||
24.06.2018, 12:34 | 6 | |||||
А прочитать сначала теорию не?
0
|
6 / 6 / 2
Регистрация: 29.03.2012
Сообщений: 101
|
|
24.06.2018, 12:38 [ТС] | 7 |
Так в задании сказано, что хранить в памяти, естественно, нужно только возможно ненулевые элементы, заведомые нули
ниже главной диагонали хранить незачем.
0
|
474 / 426 / 290
Регистрация: 10.03.2015
Сообщений: 1,782
|
||||||
24.06.2018, 13:13 | 8 | |||||
HelloWorld56, То что представлено в первом посте об этом не упоминает.
Если даже так, то при этом случае получится не верхнетреугольная матрица, а нижне/верхне одновременно, т.к. элементов что там, что там одинаково. (За исключением расположения элементов, само-собой).
0
|
6 / 6 / 2
Регистрация: 29.03.2012
Сообщений: 101
|
|
24.06.2018, 13:37 [ТС] | 9 |
Насчёт вашего последнего кода: если матрица например 2-ого порядка, то элемент [1][1] является пустым, значит матрица не верхнетреугольная. Если матрица верхнетреугольная - пустым должен быть элемент [1][0].
0
|
474 / 426 / 290
Регистрация: 10.03.2015
Сообщений: 1,782
|
|
24.06.2018, 13:50 | 10 |
HelloWorld56, А ты понимаешь что такое матрица? И как она в памяти расположена?
Добавлено через 1 минуту Я тебе привел пример верхне/нижне/уни в посте выше. Это то, что требуется. А твои дополнения по-поводу памяти с динамической матрицей - это уже какая-то лажа. Ты не можешь выделять память под 1 элемент, который будет расположен после несуществующих 2х.
1
|
7437 / 5029 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
|
||||||
24.06.2018, 18:13 | 11 | |||||
SuperKir,
HelloWorld56,
0
|
474 / 426 / 290
Регистрация: 10.03.2015
Сообщений: 1,782
|
|
24.06.2018, 19:01 | 12 |
Yetty, Ну а как же задание
Или теперь Вы, уважаемый, только часть работы делаете, чтобы ее ТС доделал сам?)
0
|
7437 / 5029 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
|
||||||
24.06.2018, 20:40 | 13 | |||||
согласен, условие насчёт памяти в коде Выше не присутствует.
вариант 2 :
0
|
474 / 426 / 290
Регистрация: 10.03.2015
Сообщений: 1,782
|
|
24.06.2018, 21:45 | 14 |
Yetty, Вы снова прислали тот же код, любезный)
Суть проблемы ТС в том, что он не может разобраться, как ему "исключить из памяти" нулевые элементы Что, собственно, я попытался воплотить в #8 посте
0
|
7437 / 5029 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
|
|
24.06.2018, 22:41 | 15 |
Вы опять сначала пишете потом смотрите это другой код. если раньше нулями заполнялись элементы массива, в варианте 2 нули просто распечатываются.
трудно сказать что Вы пытались воплотить. нужно было вместо этого Вы распечатали единички выше побочной диагонали - даже на кусок треугольной это как-то не тянет.
0
|
693 / 303 / 99
Регистрация: 04.07.2014
Сообщений: 846
|
||||||
24.06.2018, 23:41 | 16 | |||||
0
|
474 / 426 / 290
Регистрация: 10.03.2015
Сообщений: 1,782
|
|
25.06.2018, 00:01 | 17 |
Это Вы, видимо, не смотрите. То, что сделали Вы, я сделал (для всех видов) в начале темы. ТСу нужно это:
Вы наотрез отказываетесь цитировать эту часть, уткнувшись зачем-то в функцию. Это не есть "хранить в памяти только ненулевые элементы"
0
|
7437 / 5029 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
|
|
25.06.2018, 00:34 | 18 |
Что значит уткнувшись ? Выражения подбирай. Такое условие задачи:
Когда дойдёт ? Кто сказал что это хранение ? Стандартное объявление массива. Заполнил значениями элементы главной диагонали и элементы выше главной диагонали. Нули просто распечатал (не заполнял ими элементы). Что Вам вообще неясно, о чём идёт речь ?
0
|
474 / 426 / 290
Регистрация: 10.03.2015
Сообщений: 1,782
|
|
25.06.2018, 09:11 | 19 |
Yetty, Уже на ты, отлично)
Уткнувшись, упершись, как хочешь, это обычное выражение. Я уже неоднократно писал, что не в функции дело... Про функцию уже давно всё понятно, никто не спорит, что ее надо было (правда появилось это задание не в заголовке, а в комментах, как, собственно, и то, на что я тебе пытаюсь указать). Вот именно. Это объявление массива n*n. В куче выделилось место под n*n элементов, и хоть заполняй, хоть нет, но это место уже выделено под массив n*n. Опять же, я поэтому и придираюсь) А речь идет по этой части задания: Я же говорю, что весь сырбор у ТС был именно по этой части, т.к. обычное объявление всех треугольных матриц я ему присылал ранее, но ему необходима была конкретно по этой части помощь. На что я уже тебе много раз указывал, но ты наотрез не воспринимаешь это, а упираешься рогом (это поговорка...) в первую часть задания с написанием функции) Сколько еще раз нужно процитировать эту часть, чтобы ты или объяснил, как ты исключаешь из памяти эти элементы, или объяснил, как в твоем коде выполняется эта часть?)
0
|
7437 / 5029 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
|
|
25.06.2018, 11:37 | 20 |
SuperKir, какая разница когда появилось задание ? в первом, втором или третьем посте ТС ? задание появилось ДО Вашего кода. и код этот ему не соответствует.
Это Вы так решили. А по условию: Т.е. в функции нужно организовать ввод верхней части треугольной матрицы (без нулей). В моём коде это и сделано - верхние элементы вводятся нули не вводятся. Про способ объявления массива о чём Вы всё время говорите даже слова нет в условии. Если Вы не знаете кстати, то далеко не все компиляторы автоматически заполняют объявленный массив нулями. их не нужно исключать из памяти - нужно нули не вводить. Вы разобрались кстати что Ваш код выводит единички над побочной диагональю, а нужно над главной. и не единички. а произвольные числа.
0
|
25.06.2018, 11:37 | |
25.06.2018, 11:37 | |
Помогаю со студенческими работами здесь
20
Динамическая матрица Объясните динамическая матрица У меня динамическая матрица ? Двумерная динамическая матрица Динамическая матрица ООП Динамическая матрица. вставка столбца Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |