| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > Многомерный массив |
| Автор: VIvan 25.4.2006, 12:48 | ||
| В матрице размерностью nxm удалить строку, содержащую минимальный элемент. Подскажите пожалуйста как можно видоизменить функцию output, чтобы выводилась матрица с уже удаленной строкой...
|
| Автор: Никто 25.4.2006, 13:14 |
| int* temp; int* it; temp=b[0][0]; for(i=0;i<n;i++) for(j=0;j<m;j++) if(temp>b[i][j]) {temp=b[i][j]; it=i;} for(j=0;j<m;j++) b[it][j]=0; По моему так. |
| Автор: VIvan 25.4.2006, 15:22 |
| НИКТО, Rockie СПАСИБО БОЛЬШОЕ ! |
| Автор: VIvan 6.5.2006, 09:10 |
Необходимо именно удалить строку. На тот случай если с массивом будут осуществлять какие-то дальнейшие преобразования... И сделать это без применения continue и brake |
| Автор: MAKCim 6.5.2006, 10:29 | ||||
у тебя статический массив, потому ты и не можешь именно удалить строку пользуйся динамическими массивами
удалить строку - создать новый массив с кол-вом строк N-1, записать в него элементы из старого массива (кроме элементов удаляемой строки), удалить старый массив (free(b)), значением b сделать адрес нового участка памяти |
| Автор: VIvan 6.5.2006, 10:31 |
| Я с динамикой еще вообще не работал (не представляю как можно это сделать), а нельзя как-нибудь скопировать все в новый массив кроме определенной строки, в статическом массиве ??? |
| Автор: VIvan 6.5.2006, 10:55 | ||
Выводит только ноль и все. Подскажите пожалуйста где ошибка |
| Автор: CPlusPlusFAN 6.5.2006, 11:41 |
Ошибки: 1) 45 строка (лишний цикл) 2) 53 строка (занеси в else после 50 строки, чтобы выводило всю матрицу, кроме 1 строки, а не 1 значение за границей массива) Рекомендации: 1) в 4 и 5 строках замени макросы на константы 2) лишние фигурные скобки (41 и 44 строки) |
| Автор: Rockie 6.5.2006, 11:53 | ||||
imho у него двумерный массив |
| Автор: CPlusPlusFAN 6.5.2006, 11:56 |
| Вот ещё, добавь откр. фигурную скобку между for(i=0;i<n;i++) и for(j=0;j<m;j++) при исключении ненужной строки (46 и 47 строки) и закр. после printf("\n"); (54 строка) Добавлено @ 11:59 А что мешает обращаться к нему так: b[N*i+j]? |
| Автор: Rockie 6.5.2006, 12:34 |
ничего. кроме того что у него в задании указан вывод матрицы. и лично я логичней вижу двумерный массив в виде mas[row][col], но это мое imho =) в любом случае если ты так создаешь массив, следовало сообщить парню что ему следует переделать все остальные функции. Добавлено @ 12:38 то есть если MAKCim создает. |
| Автор: VIvan 6.5.2006, 13:40 | ||
1. 45 строка исправил 2. Лишние скобки убрал 3. 53 строка, как это сделать. У меня вообще ничего там не выводится. 4. Скобки поставил На данный момент программа ваыдает только нули Массив к сожалению должен быть только двумерным и статическим |
| Автор: Rockie 6.5.2006, 14:33 |
| к сожелению строку из него не удалить. полный текст задания |
| Автор: VIvan 6.5.2006, 14:50 |
| Полный текcт: В матрице размерностью nxm удалить строку, содержащую минимальный элемент. Программа обязательно должна быть написана с использованием функций и должна включать как минимум две функции: формирование матрицы и ее вывод на экран. Максимальная размерность матрицы должна быть такой, чтобы матрица целиком умещалась на экране. При вводе проверять, чтобы размерность не превышала максимальную и была больше нуля. Не использовать continue и brake Помогите пожалуйста... Хоть через динамические хоть как-нибудь |
| Автор: bsa 6.5.2006, 16:51 | ||
|
| Автор: Josh 6.5.2006, 18:35 |
| У меня похожая задачка. Транспонировать матрицу надо... |
| Автор: MAKCim 6.5.2006, 20:10 | ||
где связь между ними? |
| Автор: bsa 6.5.2006, 21:18 |
| Josh, решение - проще некуда! Даже пример приводить не хочу! |
| Автор: Rockie 6.5.2006, 22:46 | ||
Josh, http://www.ispu.ru/library/math/sem1/pyartli1/node45.html
|
| Автор: Josh 24.8.2006, 18:23 | ||||||
| Сейчас вот разбираюсь с программкой bsa и вот эти три момента никак не могу понять: [/quote]
кому не трудно, разьясните что к чему. Буду очень благодарен |
| Автор: MAKCim 24.8.2006, 20:58 | ||||
|
| Автор: Josh 25.8.2006, 05:00 |
| Повторю свой последний топик... |
| Автор: Oleg_Ci 25.8.2006, 15:09 | ||||||||
выделяем память (под масив) такой-то ширины (matrix[0]) такой-то высоты (matrix[1] - 1), для того чтоб скопировать первоначальный массив туда, но без одной строки, поэтому на одну строку меньше. Умножение ширины на высоту и на "разменость"
|