| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > Помогите с массивами |
| Автор: OverloaD 7.11.2005, 16:49 | ||
| Требуется в Си переписать значения одной матрицы в другую такого же размера и типа. Память под обе матрицы выделена. Для этого я написал такой цикл: for(N=0;N<size;N++) { for(M=0;M<size;M++) { for(N2=0;N2<size;N2++) { for(M2=0;M2<size;M2++) { Matrix[N][M]=Matrix2[N2][M2]; } } } } наверняка это можно сделать качественнее и быстрее, но с моими знаниями мне это не под силу. Компилируется программа нормально, но когда доходит до этого самого цикла(уже в самом диалоговом окне) вылазит окошко с предложением отправить отчёт об ошибке (ну вы поняли Matrix[N][M]=Matrix2[N2][M2]; так вот, подскажите пожалуйста как эту ошибку устранить, полный текст программы ниже. Заранее большущее спасибо!
|
| Автор: Neitron 7.11.2005, 16:52 | ||
Извини))) Но ты даааааааааааааааааааааллллллллллл=))))))
Вот так делай. |
| Автор: srd 7.11.2005, 16:57 |
| Строго говоря, ни в Си, ни в Си++ многомерного массива не существует. Его можно эмулировать с помощью массива указателей на массивы (как у тебя в примере), но это неудобно и дорого. Лучше для эмуляции двумерного массива размера X*Y использовать обычный одномерный массив длинной X*Y, где элемент [i][j] определяется как m[i * X + j]. Тогда вместо того, чтобы циклы гонять, можно было обойтись одним memset(). |
| Автор: OverloaD 7.11.2005, 17:52 |
| вместо того чтоб писать мне какой я дурак, могли бы ответить по вопросу, я же написал что наверняка можно сделать это легче, но я же не знаю к примеру что такое memset() и мне надо сделать эту задачу на уровне МОИХ знаний, поэтому или помогите или не пишите ничего |
| Автор: srd 7.11.2005, 17:59 |
| Сорри, очепятка вышла. Не memset(), а memcpy() |
| Автор: OverloaD 7.11.2005, 18:02 |
| ну я не знаю и что такое memcpy(), может всё-таки помогёте??? |
| Автор: Dark Elf 7.11.2005, 18:18 | ||||
memcpy() используется для копирования одного участка памяти в другой. Вот тебе кусок примера из MSDN (оставил то что связано с memcpy())
|
| Автор: OverloaD 7.11.2005, 18:27 |
| спасибо за помощь, вопрос исчерпан |
| Автор: OverloaD 7.11.2005, 18:48 |
| 2Neitron, снк, я сначала не заметил что ты исправленй вариант написал, думал просто написал, что я дурак и всё |