![]() |
1. Пользуйтесь тегами кода. - [code] ... [/code]
2. Точно указывайте язык, название и версию компилятора (интерпретатора).
3. Название темы должно быть информативным.
В описании темы указываем язык!!!
![]() |
Rocket |
![]()
Сообщение
#1
|
![]() Знаток ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 306 Пол: Мужской Реальное имя: Евгений Репутация: ![]() ![]() ![]() |
Прогорамма для работы с динамическим массивом размерностью три:
#include<stdlib.h>
#include<stdio.h>
#include<conio.h>
int*** create(int n, int m, int k)
{ int ***m3,i,j;
m3=(int***)malloc(n*sizeof(int**));
for(i=0;i<n;i++)
{
m3[i]=(int**)malloc(m*sizeof(int*));
for (j=0;j<m;j++)
{
m3[i][j]=(int*)malloc(k*sizeof(int));
}
return m3;
}
void kill(int ***m3,int n, int m)
{ int i,j;
for (i=0;i<n;i++)
{ for (j=0;j<m;j++)
free(m3[i][j]);
}
free(m3);
}
void fill(int ***m3,int n, int m, int k)
{ int i,j,y;
for (i=0;i<n;i++)
for (j=0;j<m;j++)
for (y=0;y<k;y++)
m3[i][j][k]=rand()%100;
}
void show(int ***m3,int n,int m, int k)
{ int i,j,y;
for (i=0;i<n;i++)
{
for (j=0;j<m;j++)
{ for (y=0;y<k;y++)
printf("%3d",m3[i][j][y]);
printf("\n");
}
}
}
int main()
{ clrscr();
int ***m3=create(4,3,2);
fill(m3,4,3,2);
show(m3,4,3,2);
kill(m3,4,3);
return 0;
}
Реализованы функции для выделения динамического массива, заполнения, вывода и освобождения памяти. Помогите пожалуйста найти в чём ошибка? |
![]() ![]() |
volvo |
![]()
Сообщение
#2
|
Гость ![]() |
Цитата в чём ошибка? Ошибка - в том, что у тебя в create не хватает одной закрывающей фигурной скобки... Если наконец-то когда-нибудь научитесь писать с нормальными отступами, то сразу будет видно, где именно. Вот тут, например:int*** create(int n, int m, int k) {
int ***m3,i,j;
m3=(int***)malloc(n*sizeof(int**));
for(i=0;i<n;i++) {
m3[i]=(int**)malloc(m*sizeof(int*));
for (j=0;j<m;j++) {
m3[i][j]=(int*)malloc(k*sizeof(int));
}
}
return m3;
}
все скобки на месте, а в твоем исходнике попробуй найти сам, где именно надо ее добавить. |
Rocket |
![]()
Сообщение
#3
|
![]() Знаток ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 306 Пол: Мужской Реальное имя: Евгений Репутация: ![]() ![]() ![]() |
Ошибка - в том, что у тебя в create не хватает одной закрывающей фигурной скобки... Если наконец-то когда-нибудь научитесь писать с нормальными отступами, то сразу будет видно, где именно. Вот тут, например: int*** create(int n, int m, int k) {
int ***m3,i,j;
m3=(int***)malloc(n*sizeof(int**));
for(i=0;i<n;i++) {
m3[i]=(int**)malloc(m*sizeof(int*));
for (j=0;j<m;j++) {
m3[i][j]=(int*)malloc(k*sizeof(int));
}
}
return m3;
}
все скобки на месте, а в твоем исходнике попробуй найти сам, где именно надо ее добавить.Да, точно, нашел, спасибо) Вот только ещё одно: что программа выводит? |
volvo |
![]()
Сообщение
#4
|
Гость ![]() |
Цитата что программа выводит? Как заполнил, так и выводит ![]() У тебя опять ошибка, причем не одна: #include<stdlib.h>
#include<stdio.h>
#include<conio.h>
int*** create(int n, int m, int k) {
int ***m3,i,j;
m3=(int***)malloc(n*sizeof(int**));
for(i=0;i<n;i++) {
m3[i]=(int**)malloc(m*sizeof(int*));
for (j=0;j<m;j++) {
m3[i][j]=(int*)malloc(k*sizeof(int));
}
}
return m3;
}
void kill(int ***m3,int n, int m) {
int i,j;
for (i=0;i<n;i++) {
for (j=0;j<m;j++) free(m3[i][j]);
free(m3[i]); /* Вот этого не было */
}
free(m3);
}
void fill(int ***m3,int n, int m, int k) {
int i,j,y;
for (i=0;i<n;i++)
for (j=0;j<m;j++)
for (y=0;y<k;y++)
m3[i][j][y]=rand()%100; /* <--- Здесь у тебя было [i][j][k] */
}
void show(int ***m3,int n,int m, int k) {
int i,j,y;
for (i=0;i<n;i++) {
printf("dimension 3\n"); /* А это я добавил, чтоб было понятнее */
for (j=0;j<m;j++) {
for (y=0;y<k;y++) printf("%3d",m3[i][j][y]);
printf("\n");
}
}
}
int main(void)
{
clrscr();
static int ***m3;
m3 = create(4,3,2);
fill(m3,4,3,2);
show(m3,4,3,2);
kill(m3,4,3);
return 0;
}
|
Rocket |
![]()
Сообщение
#5
|
![]() Знаток ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 306 Пол: Мужской Реальное имя: Евгений Репутация: ![]() ![]() ![]() |
Большое спасибо за помощь=)
Сообщение отредактировано: volvo - 14.01.2009 10:10 |
![]() ![]() |
![]() |
Текстовая версия | 18.07.2025 21:33 |