Шуточки у тебя :))) Как говорил кто-то из моих преподавателей, разобраться в чужом коде - занятие по трудоемкости такое же, как и написать свой код, делающий то же самое :)
Ни разу не слышал, чтобы в программировании кто-то занимался вычиткой кода. Берутся тестовые примеры и проверяется - работает на них программа или нет. Если нет, идет процесс отладки. Если у тебя приличная среда, у тебя есть такие полезные инструменты, как точки останова и просмотр значений переменных в процессе. Если приличной среды нет, то значит надо писать логи, в которые сбрасывать ключевые параметры и затем их анализировать.
Не, если проблема локализуется до строчек 10-20, я, конечно, могу посмотреть (хотя с++ - это не моя стихия), но обычно если проблему можно локализовать настолько, ошибку можно найти и самостоятельно, если речь не идет о каких-то плоходокументированных функциях.
хорошо, уточню - в случае недокументированного спагетти :) иных вариантов мне как-то не попадалось, увы) обычно если вопрос ставится как "надо дописать" или "надо проверить" - там что-то жутенькое)
У меня есть двумерный массив signal[N][2], где в первом ряду синусы угла, а во втором - косинусы. Мне нужно жестко задать первые значения обоих рядов. Как сделать указатель на первое значение массива понятно, как сделать указатель на какое-то значение из первого ряда - понятно. Но как мне сделать указатель на первое значение второго ряда, то есть на первый косинус?
Ой. Вот с сишными указателями - это все-таки не ко мне. Я на Си писал последний раз очень давно, и с пониманием тамошних указателей у меня было плохо даже тогда.
А есть какая-то реальная необходимость делать это двумерным массивом, а не двумя одномерными?
Ну, вообще, одномерные массивы работают быстрее, поэтому, как правильнее - это зависит от вопроса, что мы оптимизируем :)
Еще, возможно, можно просто поменять индексы местами :)
Насколько я понимаю, массив signal[N][2] с точки зрения машины, это массив из N элементов, каждый из которых сам является массивом из 2-х элементов. Поэтому через адрес второго подэлемента первого элемента вряд ли можно как-то разумно достучаться до адресов других вторых подэлементов (если я правильно понимаю, для чего тебе вообще указатель).
указатель через указатель без каста ты вряд ли получишь, как и писал Аларик - тебе нужно значение элемента, чтобы получить его подэлементы, а не адрес. Это навскидку, до практики дойду только завтра :)
Проблема в том, что "как правильнее" зависит от огромного числа параметров. Что важнее - скорость работы, удобство чтения кода, расширяемость и так далее. Если условия задачи статичны - т.е. там всегда ровно два значения на элемент - то, как предложил Аларик, можно обойтись двумя одномерными массивами. Работать будет быстрее, читать - и потом изменять - будет легко) я бы так и сделал, честно говоря. А если важна расширяемость, т.е. не просто две цифры, а, может, три, да ещё какие-то операции, то можно написать и структуру-класс отдельный для такого дела, как вариант)
Ты просто не представляешь, насколько элементарно то, на чем я зависаю.) Десять-двадцать строчек - это вообще максимум того, что у меня тут пока есть. Но поскольку до этого я не программировал - никогда, ничего - то теряюсь намертво, даже приблизительно не понимая, что это, почему произошло и как теперь к нему подойти.
То есть я все расписываю на бумажке, знаю, как мне нужно чтобы оно работало, но дальше ступор. Как писать? Что происходит? Что я делаю не так?
Наверное, ощущения как когда учишься ходить - и что-то не очень оно мне нравится.)
Как говорил кто-то из моих преподавателей, разобраться в чужом коде - занятие по трудоемкости такое же, как и написать свой код, делающий то же самое :)
Ни разу не слышал, чтобы в программировании кто-то занимался вычиткой кода. Берутся тестовые примеры и проверяется - работает на них программа или нет. Если нет, идет процесс отладки. Если у тебя приличная среда, у тебя есть такие полезные инструменты, как точки останова и просмотр значений переменных в процессе. Если приличной среды нет, то значит надо писать логи, в которые сбрасывать ключевые параметры и затем их анализировать.
Не, если проблема локализуется до строчек 10-20, я, конечно, могу посмотреть (хотя с++ - это не моя стихия), но обычно если проблему можно локализовать настолько, ошибку можно найти и самостоятельно, если речь не идет о каких-то плоходокументированных функциях.
Reply
более трудоёмкое занятие. Мне доводилось. Причём, я бы сказал, гораздо более трудоёмкое...
Reply
Reply
Reply
Reply
Reply
Reply
А есть какая-то реальная необходимость делать это двумерным массивом, а не двумя одномерными?
Reply
Можно переписать, конечно, но я хотел разобраться, как сделать правильнее.
Reply
Еще, возможно, можно просто поменять индексы местами :)
Насколько я понимаю, массив signal[N][2] с точки зрения машины, это массив из N элементов, каждый из которых сам является массивом из 2-х элементов. Поэтому через адрес второго подэлемента первого элемента вряд ли можно как-то разумно достучаться до адресов других вторых подэлементов (если я правильно понимаю, для чего тебе вообще указатель).
Reply
Проблема в том, что "как правильнее" зависит от огромного числа параметров. Что важнее - скорость работы, удобство чтения кода, расширяемость и так далее. Если условия задачи статичны - т.е. там всегда ровно два значения на элемент - то, как предложил Аларик, можно обойтись двумя одномерными массивами. Работать будет быстрее, читать - и потом изменять - будет легко) я бы так и сделал, честно говоря. А если важна расширяемость, т.е. не просто две цифры, а, может, три, да ещё какие-то операции, то можно написать и структуру-класс отдельный для такого дела, как вариант)
Reply
Reply
То есть я все расписываю на бумажке, знаю, как мне нужно чтобы оно работало, но дальше ступор. Как писать? Что происходит? Что я делаю не так?
Наверное, ощущения как когда учишься ходить - и что-то не очень оно мне нравится.)
Reply
Leave a comment