Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 47, средняя оценка - 4.68
ArtSL
8 / 7 / 0
Регистрация: 14.02.2010
Сообщений: 40
#1

Удалить столбец матрицы(а не просто невыводить) - C++

16.02.2010, 20:21. Просмотров 6885. Ответов 28
Метки нет (Все метки)

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

Преобразование матрицы (удалить из матрицы столбец с наибольшей по модулю суммой элементов) - C++
Всем привет, есть программа для ввода матрицы и вывода на экран. Нужно удалить из матрицы столбец с наибольшей по модулю суммой элементов. ...

Удалить столбец из матрицы - C++
Ввести матрицу размером m на n и число k. Удалить k-й столбец из матрицы. Вывести полученную матрицу

Удалить из матрицы строку и столбец - C++
Привет всем ,помогите пожалуйста написать программу : Заранее спасибо всем. Добавлено через 11 часов 45 минут Никто не...

Удалить столбец матрицы с номером K. - C++
Дана матрица размера M × N и целое число K (1 ≤ K ≤ N). Удалить столбец матрицы с номером K.

Удалить строку и столбец матрицы - C++
#include <iostream> using namespace std; void ReadMatr(int **a, int n, int m);//Ввод матрицы с клавиатуры void PrintMatr(int...

Удалить столбец и строку из матрицы - C++
Пытаюсь удалить из матрицы x строку strI и столбец stlbI путем создания "временной матрицы" a, удаления матрицы x, и перезаписывания a в x....

28
kazak
3048 / 2369 / 160
Регистрация: 11.03.2009
Сообщений: 5,436
Завершенные тесты: 1
17.02.2010, 14:45 #16
C++
1
2
for(i=0; i<n; i++)
   cout<< mas[i][m] << "  " ;
0
kravam
быдлокодер
1702 / 889 / 45
Регистрация: 04.06.2008
Сообщений: 5,498
17.02.2010, 14:46 #17
Ну так-то да, я упустил из вида что массив динамический. ТОгда действительно, размерность легко изменяется.
kazak, я поинтеерсуюсь осторожно- не имеешь ли ты ввиду, что ячейки памяти, по которым были записаны значения удалённого столбца никуда не делись? Если ты про это- тогда да, ячейки это действительно никуда не делись и не денутся.
0
kazak
3048 / 2369 / 160
Регистрация: 11.03.2009
Сообщений: 5,436
Завершенные тесты: 1
17.02.2010, 14:48 #18
Цитата Сообщение от kravam Посмотреть сообщение
не имеешь ли ты ввиду, что ячейки памяти, по которым были записаны значения удалённого столбца никуда не делись?
Именно.
0
valeriikozlov
Эксперт С++
4673 / 2499 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
17.02.2010, 14:55 #19
Цитата Сообщение от kazak Посмотреть сообщение
Код C++
1
2
for(i=0; i<n; i++)
cout<< mas[i][m] << " "
Так выведутся значения последнего столбца, но никак не удаленного второго.

Добавлено через 2 минуты
Цитата Сообщение от kazak Посмотреть сообщение
не имеешь ли ты ввиду, что ячейки памяти, по которым были записаны значения удалённого столбца никуда не делись?
Ячейки памяти (именно сами ячейки памяти, а не значения, которые были в них записаны), можно удалять только физическим путем.
0
kazak
3048 / 2369 / 160
Регистрация: 11.03.2009
Сообщений: 5,436
Завершенные тесты: 1
17.02.2010, 15:01 #20
Цитата Сообщение от valeriikozlov Посмотреть сообщение
Так выведутся значения последнего столбца, но никак не удаленного второго.
Да, точно. Но размер массива останется тот же.
0
kravam
быдлокодер
1702 / 889 / 45
Регистрация: 04.06.2008
Сообщений: 5,498
17.02.2010, 15:07 #21
ТАк динамчиеский он потому и динамический, что мы его размер на ходу поменять можем.
Не останется он прежним. Мы же количество столбцов уменьшили, m--
0
valeriikozlov
Эксперт С++
4673 / 2499 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
17.02.2010, 15:21 #22
kazak,
Еще раз к заданию вернемся:
Цитата Сообщение от ArtSL Посмотреть сообщение
Помогите удалить столбец матрицы в которой содержится максимальный элемент.
Так вот вопрос: допустим максимальный элемент во втором столбце. Вы хотите сделать массив у которого отсутствует совсем второй столбец? Круто.
Наверное все-таки результатом должен быть массив у которого есть второй столбец, но значения элементов этого столбца должны быть равны значениям элементов третьего столбца начального массива (и т.д.).

Цитата Сообщение от kazak Посмотреть сообщение
Да, точно. Но размер массива останется тот же.
Про размер массива не спорю, он останется таким же как и был. Но по условию задачи, не сказано что размер массива нужно менять, или что память выделенную под удаляемый столбец нужно освободить.
Еще раз: удалить столбец это значит, что сам столбец остается (если он не последний), а значения элементов этого столбца становятся равными значениям элементов столбца справа (которые были там до удаления) и т.д.

Добавлено через 2 минуты
Цитата Сообщение от kravam Посмотреть сообщение
ТАк динамчиеский он потому и динамический, что мы его размер на ходу поменять можем.
Не останется он прежним. Мы же количество столбцов уменьшили, m--
Не совсем так. Выделенная память останется такой же (при применении m--). Мы даже после (m--) можем спокойно использовать элементы столбца [m]
0
kazak
3048 / 2369 / 160
Регистрация: 11.03.2009
Сообщений: 5,436
Завершенные тесты: 1
17.02.2010, 15:31 #23
Цитата Сообщение от ArtSL Посмотреть сообщение
главное не просто не выводить, а именно удалить и указать номер удаленного столбца.
Я трактую это как "преобразовать массив a[n][m] в массив a[n][m-1], исключив из исходного заданный столбец", а уточнение главное не просто не выводить как раз и указывает на то, что нужно изменить размер массива.
0
valeriikozlov
Эксперт С++
4673 / 2499 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
17.02.2010, 15:46 #24
Цитата Сообщение от kazak Посмотреть сообщение
Я трактую это как "преобразовать массив a[n][m] в массив a[n][m-1], исключив из исходного заданный столбец", а уточнение главное не просто не выводить как раз и указывает на то, что нужно изменить размер массива.
Все-таки истинную трактовку я бы оставил бы автору этой темы.
0
kravam
быдлокодер
1702 / 889 / 45
Регистрация: 04.06.2008
Сообщений: 5,498
17.02.2010, 16:22 #25
Цитата Сообщение от valeriikozlov Посмотреть сообщение
Не совсем так. Выделенная память останется такой же (при применении m--). Мы даже после (m--) можем спокойно использовать элементы столбца [m]
Ну останется она той же самой или нет, судить не берусь, а то, что мы можем обращаться к элементу массива по номеру, который больше его размерности, это да. Сам не раз совершал такую ошибку, хе-хе.
0
valeriikozlov
Эксперт С++
4673 / 2499 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
17.02.2010, 16:32 #26
Цитата Сообщение от kravam Посмотреть сообщение
Ну останется она той же самой или нет, судить не берусь, а то, что мы можем обращаться к элементу массива по номеру, который больше его размерности, это да. Сам не раз совершал такую ошибку, хе-хе.
Почему ошибку? Это совсем не ошибка. Есди память выделена, она никуда не денется, делаем с ней все что нам нужно. Вот пример для одномерного динамического массива:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
using namespace std;
 
int main()
{
    int *mas, n;
    n=5;
    mas=new int[n];
    mas[n-1]=123;
    cout<<mas[n-1]<<endl;
    n--;
    n--;
    mas[4]=456;
    cout<<mas[4]<<endl;
    n++;
    n++;
    cout<<mas[n-1]<<endl;           
 
        return 0;
}
0
ArtSL
8 / 7 / 0
Регистрация: 14.02.2010
Сообщений: 40
17.02.2010, 16:35  [ТС] #27
Всем спасибо за помощь! Задачу я сначала написал так: убил строку в матрице A, потом скопировал ее в матрицу Б без "удаленного" стоблца. Показал преподу, он грит обратно в матрицу А скопируй массив и выведи матрцу размерности Б, и задача выполнена. В варианте заданий толстой линией написано "удалить". Ну препод сказал - сделано.

P.S. Но, вот интересно если досканально выполнять задачу, можно ли взять и физически удалить столбец..... =)
0
kravam
быдлокодер
1702 / 889 / 45
Регистрация: 04.06.2008
Сообщений: 5,498
17.02.2010, 16:53 #28
Ну вы понимаете, это очень простой пример. А я всё ж таки настоятельно рекомендовал бы взять за правило: если объявлен массив int mass [4], то mas [5] лучше не писать. Ну или уж быть готовым к последствиям.
...По скромному опыту. Тоже как-то вот всю ночь просидел и у меня ключевая переменная после вызвов некоторых моих функций принимала значение, которое ни в коем слчае не должна была принимать. Я думал- мистика. Оказалось, нет, оказалось что я ошибся в определениях вышеупомянутых функций и просто-напросто ошибочно обращался по к такому вот несуществующему элементу массива. И как-то его изменял.

И надо же было такому случиться, что компилятор выделил память под эту мою переменную именно в этой ячейке памяти! Я изменял её, а сам ни сном ни духом. Только работая с отладчиком OllyDbg и обнаружил эту ошибку. Так что очень и очень аккууратно надо быть с этим делом. Это называется "прописать память".

Добавлено через 2 минуты
Цитата Сообщение от ArtSL Посмотреть сообщение
P.S. Но, вот интересно если досканально выполнять задачу, можно ли взять и физически удалить столбец..... =)
Ну это уже из разряда приколов. Посмотри-как вот эту тему.
Что и куда девается...
0
valeriikozlov
Эксперт С++
4673 / 2499 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
17.02.2010, 16:56 #29
Цитата Сообщение от kravam Посмотреть сообщение
если объявлен массив int mass [4], то mas [5] лучше не писать.
Абсолютно правильно. Но это уже другой случай.
0
17.02.2010, 16:56
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.02.2010, 16:56
Привет! Вот еще темы с ответами:

Удалить столбец матрицы с номером K - C++
Дана матрица размера M × N и целое число K (1 ≤ K ≤ N ). Удалить столбец матрицы с номером K. #include &quot;stdafx.h&quot; #include...

Удалить столбец матрицы с номером K. - C++
Дана матрица размера M × N и целое число K (1 ≤ K ≤ M). Удалить столбец матрицы с номером K.:wall: Добавлено через 21 минуту ...

Удалить k-й столбец матрицы из одномерного массива - C++
Друзья, доброго времени суток! Снова есть задача: Матрица размещена в одномерном массиве по строкам. Удалить k-й столбец матрицы из...

Удалить столбец, содержащий максимальный элемент матрицы - C++
Дана матрица размера M × N. Удалить столбец, содержащий максимальный элемент матрицы


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

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

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