Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.67
Bloodykeeper
This party getting crazy!
78 / 74 / 1
Регистрация: 22.09.2009
Сообщений: 427
#1

Выделить память для трёхмерного массива - C++

07.01.2010, 17:08. Просмотров 1197. Ответов 13
Метки нет (Все метки)

Пожалуйста помогите! нужно решить 4 задания, но у меня совершенно нет времени! срочно нужно ехать к девушке...надеюсь на ваше понимание и свободное время.

1. В одномерном массиве поменять местами элементы с чётными и нечётными индексами.

2. Сформируйте квадратную матрицу по правилу: a[i][j]=3 ghb i=j, a[i][j]=-1 i<>j

3. Дан массив из 6 элементов типа целое без знака. Сформировать указатель на этот массив и обратиться ко второму элементу массива разными способами.

4. Выделить память для трёхмерного массива [6][3][4]. Изменить индексацию массива так, чтобы начальный элемент имел индексы -1,-2,-3.

Заранее спасибо...Надеюсь ктонить поможет...

Добавлено через 23 часа 12 минут
помогите, вопрос всё еще актуален!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.01.2010, 17:08
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Выделить память для трёхмерного массива (C++):

выделить память для массива*[] - C++
привет. чего-то не получается организовать работу массива char *c; это динамический массив строк длиной 10 при конструкторе ...

Выделить память для трехмерного массива и изменить индексы начального элемента массива - C++
Выделить память для трехмерного массива а. Изменить индексы начального элемента массива на . Протестировать программу

Как выделить память для динамического массива? - C++
Как выделить память для динамического массива? typedef TPrimitives *TPrimitive; //... TPrimitives Primitives; Мне нужно выделить...

Как выделить память для двухмерного массива? - C++
Как выделить память для двухмерного массива в С++ a=new int???

Выделить динамическую память для 2-х мерного массива из N-строк - C++
Помогите с задачей Задание: &quot;Выделить динамическую память для 2-х мерного массива из N-строк след.вида:&quot;

Как динамически выделить память для строкового массива? - C++
Собственно сам вопрос.

13
valeriikozlov
Эксперт С++
4670 / 2496 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
07.01.2010, 17:29 #2
1.
C
1
2
3
4
5
6
int temp;
for(int i=0; i<n; i+=2)
{temp=mas[i];
mas[i]=mas[i+1];
mas[i+1]=temp;
}
Добавлено через 2 минуты
2.
C
1
2
3
4
5
6
for(int i=0; i<n; i++)
for(int j=0; j<n; j++)
if(i==j)
mas[i][j]=3;
else
mas[i][j]=-1;
Добавлено через 51 секунду
поверьте, на оставшиеся 2 у Вас уйдет не более 15 минут.
1
Bloodykeeper
This party getting crazy!
78 / 74 / 1
Регистрация: 22.09.2009
Сообщений: 427
10.01.2010, 20:05  [ТС] #3
2 последних вопроса всё ещё актуальны! надеюсь на вашу помощь! заранее спасибо.
0
easybudda
Модератор
Эксперт CЭксперт С++
9683 / 5633 / 956
Регистрация: 25.07.2009
Сообщений: 10,811
10.01.2010, 20:56 #4
07.01.2010, 17:08
Цитата Сообщение от Bloodykeeper Посмотреть сообщение
Пожалуйста помогите! нужно решить 4 задания, но у меня совершенно нет времени! срочно нужно ехать к девушке...надеюсь на ваше понимание и свободное время.
Сегодня, 20:05
Цитата Сообщение от Bloodykeeper Посмотреть сообщение
2 последних вопроса всё ещё актуальны! надеюсь на вашу помощь! заранее спасибо.
На трое суток залип у девушки вместо того, чтобы уроки делать?
0
Bloodykeeper
This party getting crazy!
78 / 74 / 1
Регистрация: 22.09.2009
Сообщений: 427
11.01.2010, 18:40  [ТС] #5
Цитата Сообщение от easybudda Посмотреть сообщение
07.01.2010, 17:08

Сегодня, 20:05

На трое суток залип у девушки вместо того, чтобы уроки делать?

да, именно) и тем не менее прошу вашей помощи...не судите меня строго за мою наглость.

Да и из уроков только программирование осталось, вот эти задачи и ещё одну я почти доделал уже.

Добавлено через 1 час 17 минут
Всё ещё актуально, и нужно срочно!

Добавлено через 20 часов 22 минуты
Мне всё ещё нужна помощь! Да...я что-то туплю, но как можно сделать ввод элементов одномерного массива с клавиатуры?)
0
ThisIsMyName
8 / 8 / 0
Регистрация: 17.11.2009
Сообщений: 36
11.01.2010, 18:52 #6
Цитата Сообщение от Bloodykeeper Посмотреть сообщение
Мне всё ещё нужна помощь! Да...я что-то туплю, но как можно сделать ввод элементов одномерного массива с клавиатуры?)
C
1
2
3
4
5
printf("vvedite N:");
scanf("%d",&n);
printf("vvedite massiv:");
for (i=0;i<n;i++)
scanf("%d",&a[i]);
1
Bloodykeeper
This party getting crazy!
78 / 74 / 1
Регистрация: 22.09.2009
Сообщений: 427
11.01.2010, 19:09  [ТС] #7
Вообще уже память едет)) пора проц менять наверное =) остальные вопросы всё ещё нужны мне! Вот первая задача, набрасал пока, вот так надо? помогите исправить ошибки если что.

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <stdio.h>
main()
int n, mas[]; int temp,i;
printf("vvedite razmer: ")
scanf("%d",&n);
printf("vvedite massiv:");
for (i=0;i<n;i++)
scanf("%d",&mas[i]);
for(int i=0; i<n; i+=2)
{temp=mas[i];
mas[i]=mas[i+1];
mas[i+1]=temp;
pritf("massiv: %d", i);
}
Добавлено через 11 минут
да и ещё, во второй задаче нужно динамический массив создавать, или можно подругому? совсем уже всё позабывал...(
0
easybudda
Модератор
Эксперт CЭксперт С++
9683 / 5633 / 956
Регистрация: 25.07.2009
Сообщений: 10,811
11.01.2010, 19:18 #8
Цитата Сообщение от Bloodykeeper Посмотреть сообщение
3. Дан массив из 6 элементов типа целое без знака. Сформировать указатель на этот массив и обратиться ко второму элементу массива разными способами.
C
1
2
3
4
5
unsigned arr[6];
/* если второй элемент - это тот, что с индексом 1, тогда так: */
unsigned *u;
u = arr;
printf("%d %d %d %d", arr[1], *(arr + 1), u[1], *(u + 1));
0
Bloodykeeper
This party getting crazy!
78 / 74 / 1
Регистрация: 22.09.2009
Сообщений: 427
11.01.2010, 19:22  [ТС] #9
easybudda, это один из способов? или там несколько, я думаю что один...верно?
0
easybudda
Модератор
Эксперт CЭксперт С++
9683 / 5633 / 956
Регистрация: 25.07.2009
Сообщений: 10,811
11.01.2010, 19:25 #10
Bloodykeeper, это как-раз четыре способа получить одно и то же случайное число...
1
Bloodykeeper
This party getting crazy!
78 / 74 / 1
Регистрация: 22.09.2009
Сообщений: 427
11.01.2010, 19:47  [ТС] #11
easybudda, спасибо большое! не можешь мне помочь ещё с первыми двумя задачами, полностью сделать их, у меня визуал студио пропала, пользуюсь wxDev но мне не нравится как ошибки описывает она, и мало что понятно, выручайте! =)

Добавлено через 17 минут
блин, не полностью сделать, а доделать) тупанул, не то написал, надо ведь и свои мозги включать потихонечку.
0
accept
4823 / 3244 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
11.01.2010, 23:19 #12
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
#include <stdio.h>
#include <stdlib.h>
 
int main(void) /* C89 ANSI */
{
    int *p4, **p3, ***p6;
    int i, j, k;
    
    /*
    p4 = (int *) malloc(4 * sizeof *p4);
    
    p3 = (int **) malloc(3 * sizeof *p3);
    
    p6 = (int ***) malloc(6 * sizeof *p6);
    */
    
    /* все выделения памяти нужно проверять на NULL */
    
    p6 = (int ***) malloc(6 * sizeof *p6);
    
    for (i = 0; i < 6; i++) {
        
        p3 = (int **) malloc(3 * sizeof *p3);
        
        p6[i] = p3;
        
        for (j = 0; j < 3; j++) {
            
            p4 = (int *) malloc(4 * sizeof *p4);
            
            p6[i][j] = p4;
            
            for (k = 0; k < 4; k++) {
                if (i == 0 && j == 0 && k == 0) {
                    p6[0][0][0] = 10;
                    continue;
                }    
                p6[i][j][k] = k+1;
            }    
        
        }        
    
    }
    /* все выделения памяти нужно проверять на NULL */
        
    printf(
        "%d %d %d %d" "\n",
        p6[0][0][0],
        p6[0][0][1],
        p6[0][0][2],
        p6[0][0][3]
    );
    
    printf(
        "%d %d %d %d" "\n",
        p6[0][1][0],
        p6[0][1][1],
        p6[0][1][2],
        p6[0][1][3]
    );
        
    **p6 += 3;
    *p6 += 2;
    p6++;
    
    printf("%d" "\n", p6[-1][-2][-3]);
    
    p6--;
    *p6 -= 2;
    **p6 -= 3;
    
    for (i = 0; i < 6; i++) {
        for (j = 0; j < 3; j++)
            free(p6[i][j]);
        free(p6[i]);
    }
    free(p6);
        
    exit(EXIT_SUCCESS);
}
Добавлено через 53 секунды
Код
[guest@station src]$ ./test
10 2 3 4
1 2 3 4
10
[guest@station src]$
1
Bloodykeeper
This party getting crazy!
78 / 74 / 1
Регистрация: 22.09.2009
Сообщений: 427
13.01.2010, 15:23  [ТС] #13
спасибо! если у кого-нибудь есть немножко времени, пожалуйста, помогите мне соединить первые 2 задачи и проверить работоспособность, а то я в чертежах погряз по уши сейчас...(

Добавлено через 7 часов 54 минуты
Помощь ещё нужна!

Добавлено через 15 часов 47 минут
Помогите с 2мя первыми задачами! ничего не выходит(
0
accept
4823 / 3244 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
13.01.2010, 21:59 #14
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#include <stdio.h>
#include <stdlib.h>
 
/* меняет четные и нечётные элементы массива местами */
int main(void) /* C89 ANSI */
{
    int n[] = { 0, 1, 2, 3, 4 };
    int i, size;
    
    size = sizeof n / sizeof n[0];
    
    for (i = 0; i < size; i += 2)
        if (i+1 < size) {
            int t;
            
            t = n[i];
            n[i] = n[i+1];
            n[i+1] = t;
        }    
    
    for (i = 0; i < size; i++)
        printf(" %d", n[i]);
    putchar('\n');
    
    exit(EXIT_SUCCESS);
}
Добавлено через 26 минут
объединение
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
#include <stdio.h>
#include <stdlib.h>
 
void EvenOdd(void); 
void FillMatrix(void);
 
/* меняет четные и нечётные элементы массива местами
   заполняет квадратную матрицу ij = 3, i!=j = -1 */
int main(void) /* C89 ANSI */
{
    printf("swap even and odd" "\n");
    EvenOdd();
    
    printf("fill a matrix ij = 3, i!=j = -1" "\n");
    FillMatrix();
    
    exit(EXIT_SUCCESS);
}
 
/* EvenOdd:  меняет четные и нечётные элементы массива местами */
void EvenOdd(void)
{
    int n[] = { 0, 1, 2, 3, 4 };
    int i, size;
    
    size = sizeof n / sizeof n[0];
    
    for (i = 0; i < size; i++)
        printf(" %d", n[i]);
    putchar('\n');
    
    for (i = 0; i < size; i += 2)
        if (i+1 < size) {
            int t;
            
            t = n[i];
            n[i] = n[i+1];
            n[i+1] = t;
        }    
    
    for (i = 0; i < size; i++)
        printf(" %d", n[i]);
    putchar('\n');
}
 
/* FillMatrix:  заполняет квадратную матрицу ij = 3, i!=j = -1 */
void FillMatrix(void)
{
    int n[4][4];
    int i, j;
    
    for (i = 0; i < 4; i++)
        for (j = 0; j < 4; j++)
            n[i][j] = (i == j) ? 3 : -1;
    
    for (i = 0; i < 4; i++) {
        for (j = 0; j < 4; j++)
            printf(" %d", n[i][j]);
        putchar('\n');
    }
}
1
13.01.2010, 21:59
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.01.2010, 21:59
Привет! Вот еще темы с ответами:

Невозможно выделить память для массива постоянного нулевого размера - C++
/* Дан массив из N элементов (вещественные числа). Вычислить: 1) произведение элементов массива с нечетными номерами; 2) сумму...

Как выделить память для двумерного массива указателей в куче? - C++
Есть массив вида: unsigned char *ddtКак выделить память для такого массива в куче? Должен получиться двумерный массив указателей. Сами...

Невозможно выделить память для массива постоянного нулевого размера - C++
unsigned const __int16 scrx = GetSystemMetrics(SM_CXSCREEN); char sstring; Что не так в этих двух строках? в scrx гарантированно...

Массивы : невозможно выделить память для массива постоянного нулевого размера - C++
Помогите или направьте. 1&gt;3.cpp(10): error C2057: требуется константное выражение 1&gt;3.cpp(10): error C2466: невозможно выделить...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru