|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
07.02.2012, 20:57 | #1 |
Пользователь
Регистрация: 04.11.2011
Сообщений: 45
|
Массив указателей, динамическое выделение памяти
Поменять местами первую строчку матрицы и первую строчку с нулевым элементом
собственно написал код: Код:
Подскажите пожалуйста как можно исправить! Спасибо! |
07.02.2012, 21:00 | #2 |
Пользователь
Регистрация: 04.11.2011
Сообщений: 45
|
если что - swap специально закоментил)
а вторую матрицу - просто убрал пока что, чтобы восстановить работоспособность кода в целом |
07.02.2012, 23:26 | #3 |
Пользователь
Регистрация: 04.11.2011
Сообщений: 45
|
Код:
Последний раз редактировалось Андрей!; 07.02.2012 в 23:34. |
08.02.2012, 01:37 | #4 | |
Форумчанин
Регистрация: 01.07.2011
Сообщений: 423
|
Цитата:
Я смотрю на код вашей функции find_0 и понять не могу, что эта за переменная amp, и как вообще может работать такая конструкция for(i=0;i<m&&flag;i++) ??? Сложность кода - это источник ошибок. Насколько я понял, вам надо найти строку в матрице, которая содержит нулевой элемент. Так и напишите функцию, которая ищет нулевой элемент в строке, то есть в одномерном массиве, а не передавайте всю матрицу в функцию.
Со мной можно встретиться на www.clipper.borda.ru
|
|
08.02.2012, 01:40 | #5 | |
Пользователь
Регистрация: 04.11.2011
Сообщений: 45
|
Цитата:
просто мне нужно заставить её работать именно таким способом (по заданию) а я болел эту тему, вот и не могу понять |
|
08.02.2012, 02:03 | #6 | |
Форумчанин
Регистрация: 01.07.2011
Сообщений: 423
|
Цитата:
Как я уже вам сказал, вам надо написать функцию более простую, которая в строке, который представляет из себя одномерный массив, ищет элемент с заданным значением. Объявление функции будет выглядеть просто: bool any_of( int *a, int n, int value ); То есть вам надо устроить один цикл внутри тела этой функции, и если в строке элемент с заданным значением найден, возвращать true, в противном случае - false. То есть вас на самом деле должен волновать не сам конкретный элемент, значение которого равно 0, а сам факт, что в строке есть по крайней мере один элемент с нулевым значением. Я вам напишу эту функцию, а вы попробуйте самостоятельно ее использовать в своей программе. Код:
Со мной можно встретиться на www.clipper.borda.ru
Последний раз редактировалось Сыроежка; 08.02.2012 в 02:14. |
|
08.02.2012, 03:07 | #7 | |
Пользователь
Регистрация: 04.11.2011
Сообщений: 45
|
Цитата:
сейчас скажу что за переменная |
|
08.02.2012, 03:09 | #8 |
Пользователь
Регистрация: 04.11.2011
Сообщений: 45
|
Код:
я просто не понимаю почему не работает программа когда строчек больше чем столбцов Последний раз редактировалось ACE Valery; 13.02.2012 в 18:01. |
08.02.2012, 04:52 | #9 | ||
Форумчанин
Регистрация: 01.07.2011
Сообщений: 423
|
Цитата:
Данную вашу функцию можно написать также проще и понятнее. Виесто значения void, которое не несет никакой информации пользователю функции, лучше возвращать индекс найденной строки или -1, как это делается у вас. Тогда функция будет выглядеть следующим образом Код:
Цитата:
Передавать же в функцию надо две строки и размер строки. То есть функция будет выглядеть следующим образом: Код:
В основном коде при ее вызове вы просто передаете первую строку, как arr[0], и найденную строку, как arr[x], где x - это найденный индекс строки. То есть код вызова будет выглядеть следующим образом Код:
И при выделении памяти у вас ошибка. То есть данное предложение a=(double**)malloc(i_A+sizeof(doubl e)); не корректно. Вы на самом деле должны выделить память под массив указателей на double. И кроме того в выражении для аргумента должна быть не сумма, а произведение количества строк, то есть i_A на размер выделяемого объекта. Поэтому должно быть a = ( double ** )malloc( i_A * sizeof( double *) ); Так что это была у вас серьезная ошибка в программе.
Со мной можно встретиться на www.clipper.borda.ru
Последний раз редактировалось Stilet; 08.02.2012 в 22:40. |
||
08.02.2012, 20:35 | #10 |
Пользователь
Регистрация: 04.11.2011
Сообщений: 45
|
Слушай, я исправил ошибку (глупая на самом деле)
Программа ок компилируется, но также работает некорректно, если в исходные данные ввести строк больше чем столбцов Вот код: Код:
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Динамическое выделение памяти , realloc. | _-Re@l-_ | Общие вопросы C/C++ | 8 | 03.11.2011 10:20 |
Выделение памяти под массив указателей | Анка291 | Общие вопросы C/C++ | 9 | 25.02.2011 00:03 |
Динамическое выделение памяти, как лучше? | Пепел Феникса | Общие вопросы по программированию, компьютерный форум | 10 | 11.03.2010 09:44 |
Динамическое выделение памяти под массив объектов со специализированным конструктором | capta1n | Общие вопросы C/C++ | 6 | 07.03.2010 16:01 |
Динамическое выделение памяти | FW-TOT | Общие вопросы C/C++ | 2 | 19.12.2008 00:42 |