...

Jul 10, 2012 11:08

Немного непривычно спрашивать что-то такое, но кажется мне не помешала бы помощь ( Read more... )

Leave a comment

alaric_ July 10 2012, 04:50:54 UTC
Шуточки у тебя :)))
Как говорил кто-то из моих преподавателей, разобраться в чужом коде - занятие по трудоемкости такое же, как и написать свой код, делающий то же самое :)

Ни разу не слышал, чтобы в программировании кто-то занимался вычиткой кода. Берутся тестовые примеры и проверяется - работает на них программа или нет. Если нет, идет процесс отладки. Если у тебя приличная среда, у тебя есть такие полезные инструменты, как точки останова и просмотр значений переменных в процессе. Если приличной среды нет, то значит надо писать логи, в которые сбрасывать ключевые параметры и затем их анализировать.

Не, если проблема локализуется до строчек 10-20, я, конечно, могу посмотреть (хотя с++ - это не моя стихия), но обычно если проблему можно локализовать настолько, ошибку можно найти и самостоятельно, если речь не идет о каких-то плоходокументированных функциях.

Reply

di_vivere July 10 2012, 05:18:54 UTC
\\занятие по трудоемкости такое же, как и написать свой код, делающий то же самое :)

более трудоёмкое занятие. Мне доводилось. Причём, я бы сказал, гораздо более трудоёмкое...

Reply

alaric_ July 10 2012, 05:47:34 UTC
Мне тоже доводилось и регулярно :) Сильно зависит от кода :) Иногда более, иногда менее, в среднем - примерно такое же :)

Reply

di_vivere July 10 2012, 07:00:02 UTC
хорошо, уточню - в случае недокументированного спагетти :) иных вариантов мне как-то не попадалось, увы) обычно если вопрос ставится как "надо дописать" или "надо проверить" - там что-то жутенькое)

Reply

cordaf July 10 2012, 07:52:39 UTC
Все-все, я понял, осознал, оценил и проникся тем, какие вы оба крутые. : ) Вопросы свои задавать или как?

Reply

alaric_ July 10 2012, 09:18:16 UTC
Задавай :)

Reply

cordaf July 10 2012, 09:39:54 UTC
У меня есть двумерный массив signal[N][2], где в первом ряду синусы угла, а во втором - косинусы. Мне нужно жестко задать первые значения обоих рядов. Как сделать указатель на первое значение массива понятно, как сделать указатель на какое-то значение из первого ряда - понятно. Но как мне сделать указатель на первое значение второго ряда, то есть на первый косинус?

Reply

alaric_ July 10 2012, 09:48:44 UTC
Ой. Вот с сишными указателями - это все-таки не ко мне. Я на Си писал последний раз очень давно, и с пониманием тамошних указателей у меня было плохо даже тогда.

А есть какая-то реальная необходимость делать это двумерным массивом, а не двумя одномерными?

Reply

cordaf July 10 2012, 10:44:45 UTC
Все зависит от того, считаем ли мы "мне кажется так красивее" реальной необходимостью. : ))

Можно переписать, конечно, но я хотел разобраться, как сделать правильнее.

Reply

alaric_ July 10 2012, 10:55:40 UTC
Ну, вообще, одномерные массивы работают быстрее, поэтому, как правильнее - это зависит от вопроса, что мы оптимизируем :)

Еще, возможно, можно просто поменять индексы местами :)

Насколько я понимаю, массив signal[N][2] с точки зрения машины, это массив из N элементов, каждый из которых сам является массивом из 2-х элементов. Поэтому через адрес второго подэлемента первого элемента вряд ли можно как-то разумно достучаться до адресов других вторых подэлементов (если я правильно понимаю, для чего тебе вообще указатель).

Reply

di_vivere July 11 2012, 15:20:49 UTC
указатель через указатель без каста ты вряд ли получишь, как и писал Аларик - тебе нужно значение элемента, чтобы получить его подэлементы, а не адрес. Это навскидку, до практики дойду только завтра :)

Проблема в том, что "как правильнее" зависит от огромного числа параметров. Что важнее - скорость работы, удобство чтения кода, расширяемость и так далее. Если условия задачи статичны - т.е. там всегда ровно два значения на элемент - то, как предложил Аларик, можно обойтись двумя одномерными массивами. Работать будет быстрее, читать - и потом изменять - будет легко) я бы так и сделал, честно говоря. А если важна расширяемость, т.е. не просто две цифры, а, может, три, да ещё какие-то операции, то можно написать и структуру-класс отдельный для такого дела, как вариант)

Reply

di_vivere July 11 2012, 16:01:11 UTC
задавать) с завтрашнего утра - хоть напрямую в скайп, он у меня на работе всегда пашет)

Reply

cordaf July 10 2012, 05:19:23 UTC
Ты просто не представляешь, насколько элементарно то, на чем я зависаю.) Десять-двадцать строчек - это вообще максимум того, что у меня тут пока есть. Но поскольку до этого я не программировал - никогда, ничего - то теряюсь намертво, даже приблизительно не понимая, что это, почему произошло и как теперь к нему подойти.

То есть я все расписываю на бумажке, знаю, как мне нужно чтобы оно работало, но дальше ступор. Как писать? Что происходит? Что я делаю не так?

Наверное, ощущения как когда учишься ходить - и что-то не очень оно мне нравится.)

Reply


Leave a comment

Up