Вопрос № 116450: Здравствуйте. Я не совсем хорошо ещё разбираюсь в С++, поэтому прошу помощи... У меня задание прстое - дан массив и надо к каждому члену обратиться через указатель. В одномерном это просто, а вот как это сделать в двумерном??? Подскажите плз. Тут же ...Вопрос № 116465: Здравствуйте!
Что означает запись: int ***X[2][3][4]; и почему она возможна в Си?
Как использовать такое "чудо"?...Вопрос № 116475: Уважаемые господа, пытаюсь освоить Microsoft Visual C++ 2008, дайте пожалуйста ссылки на на примеры программ и учебники, прошу обратить ваше внимание что среда разработки для меня абсолютно не знакома, посему хотелось бы иметь примеры именно для МV C...
Вопрос №
116.450
Здравствуйте. Я не совсем хорошо ещё разбираюсь в С++, поэтому прошу помощи... У меня задание прстое - дан массив и надо к каждому члену обратиться через указатель. В одномерном это просто, а вот как это сделать в двумерном??? Подскажите плз. Тут же пример с одномерным.
Приложение:
Отправлен: 30.12.2007, 23:00
Вопрос задал: Яроц А.С. (статус: Посетитель)
Всего ответов: 2 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Maksim Trofimov
Здравствуйте, Яроц А.С.!
Наиболее часто реализуемым способом размещения многомерного массива является смежное представление (подобно одномерному).
Вот пример на С++:
#include <iostream>
int main(void)
{
int i, j;
const unsigned arr_size = 32;
int arr1[arr_size];
int arr2[arr_size][10];
Ответ отправил: Maksim Trofimov (статус: 2-ой класс)
Ответ отправлен: 31.12.2007, 05:52
Отвечает: Попов А.С.
Здравствуйте, Яроц А.С.!
x + (номер строки)*(кол-во столбцов) + (номер элемента в строке)
например:
n - кол-во столбцов
m - кол-во строк
int x[n][m];
for (i=0; i<n; ++i)
for (j=0; j<m; ++j)
*(x + i*m + j)=rand()%10;
Ответ отправил: Попов А.С. (статус: 3-ий класс)
Ответ отправлен: 31.12.2007, 06:55
Вопрос № 116.465
Здравствуйте!
Что означает запись: int ***X[2][3][4]; и почему она возможна в Си?
Как использовать такое "чудо"?
Отправлен: 31.12.2007, 02:05
Вопрос задал: X-men (статус: 2-ой класс)
Всего ответов: 2 Мини-форум вопроса >>> (сообщений: 3)
Отвечает: Maksim Trofimov
Здравствуйте, X-men!
#include <stdio.h>
int main(void)
{
int i, j, k;
// это чудо есть трехмерный массив указателей на указатели на указатели на тип int
int ***x[2][3][4];
// ...и чтобы им можно было пользоваться нужно, конечно, выделить память сначала
// для int*** , потом для int** ,и наконец для int*
for(i = 0; i < 2; i++)
for(j = 0; j < 3; j++)
for(k = 0; k < 4; k++)
x[i][j][k] = (int ***)malloc(sizeof(int **));
// ну а теперь заполним и выведем массив
for(i = 0; i < 2; i++) {
for(j = 0; j < 3; j++) {
for(k = 0; k < 4; k++) {
***x[i][j][k] = i+j+k;
printf("%d ", ***x[i][j][k]);
}
puts("");
}
puts("");
}
return 0;
}
Ответ отправил: Maksim Trofimov (статус: 2-ой класс)
Ответ отправлен: 31.12.2007, 08:42 Оценка за ответ: 5 Комментарий оценки: Спасибо за пример программы! Хотя и не понятно, для чего такое нужно.
Отвечает: kool
Здравствуйте, X-men!
А то и означает что написано
int ***X[2][3][4];
Трехмерный массив типа int ***
Этот тип представляет собой
указатель на указатель кот. сам
указывает на указатель.
Использование зависит от того чего вы хотите
но я таких конструкций не встречал
Удачи!
--------- I am.
Ответ отправил: kool (статус: Практикант)
Ответ отправлен: 31.12.2007, 10:53 Оценка за ответ: 3
Вопрос № 116.475
Уважаемые господа, пытаюсь освоить Microsoft Visual C++ 2008, дайте пожалуйста ссылки на на примеры программ и учебники, прошу обратить ваше внимание что среда разработки для меня абсолютно не знакома, посему хотелось бы иметь примеры именно для МV C++ 2008 а не 2003 например, с коим я уже повозился и после несоответствий в интерфейсе примеров дело застопорилось, заранее спасибо.
Отправлен: 31.12.2007, 05:22
Вопрос задал: Spooked (статус: Посетитель)
Всего ответов: 2 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Maksim Trofimov
Здравствуйте, Spooked!
К вашему сожелению, среда слишком новая и поэтому в интернете много информации пока найти нельзя, как и купить книгу. В VC 2008 не так много нового и измененного... Вы можете почитать книги по 2005.
Ответ отправил: Maksim Trofimov (статус: 2-ой класс)
Ответ отправлен: 31.12.2007, 08:56
Отвечает: kool
Здравствуйте, Spooked!
Может у вас были не те примеры
Посмотрите
firststeps.ru
Хороший сайт
А еще лучше купить небольшой справичник,
чтобы был всегда под рукой
Удачи!
--------- I am.
Ответ отправил: kool (статус: Практикант)
Ответ отправлен: 31.12.2007, 10:53