Форум программистов, компьютерный форум, киберфорум
Наши страницы
C для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.89/9: Рейтинг темы: голосов - 9, средняя оценка - 4.89
IamKarlson
3 / 3 / 0
Регистрация: 07.02.2011
Сообщений: 12
1

Объявить многомерный массив из N*3 и ввести данные в него

20.02.2011, 15:17. Просмотров 1668. Ответов 10
Метки нет (Все метки)

Задача объявить многомерный массив из N*3 и ввести данные в него. Пишу на Си.
Объявляю:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <stdio.h>
#define kolvo 50
void main()
{
int stat[3],number[kolvo],sum[kolvo],balans[kolvo];
 
int *u_number;
int *u_sum;
int *u_balans;
 
 
.... 
 
}
А вот на месте .... самое интересное. у меня бфло несколько вариантов как реализовать. вот последний на котором моя логика уже начала меня посылать.

C
1
2
3
4
5
6
7
u_number=&number;
u_sum=&sum;
u_balans=&balans;
 
stat[0]=u_number;
stat[1]=u_sum;
stat[2]=u_balans;
Ошибок не выдает на этом этапе, только ворнинги:
Код
warning: assignment makes integer from pointer without a cast|
все начинается после:

C
1
2
3
**(stat+i)=0;
*(*(stat+1)+i)=0;
*(*(stat+2)+i)=0;
Ошибки:

Код
error: invalid type argument of 'unary *' (have 'int')|
Я понимаю как работают указатели, но я в упор не могу понять почему не работает этот код. Если моя логика верна (хотя я сильно в этом сомневаюсь), то должно работать правильно. Может какие нибудь ошибки в описании а не в логике?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.02.2011, 15:17
Ответы с готовыми решениями:

Дан массив чисел, необходимо ввести в него и вывести из него числа с помощью указателей
Дан массив чисел, необходимо ввести в него и вывести из него числа с помощью...

Ввести числовые данные в двумерный массив через scanf
Столкнулся с интересным моментом. Нужно ввести числовые данные в двумерный...

Многомерный массив в функции
Всем доброго дня!!!! подскажите пожалуйста каким образом передать двумерный...

Объявить массив mb как массив литерных указателей без указания количества элементов
Помогите решить такую задачу: Объявить массив mb как массив литерных...

Объявить массив rs из 5 строк как двумерный символьный массив
Объявить массив rs из 5 строк как двумерный символьный массив. Инициализировать...

10
taras atavin
4205 / 1768 / 211
Регистрация: 24.11.2009
Сообщений: 27,565
20.02.2011, 15:28 2
Так и не понял, что тебе не понятно.
1
IamKarlson
3 / 3 / 0
Регистрация: 07.02.2011
Сообщений: 12
20.02.2011, 15:30  [ТС] 3
Мне не понятно как заставить это работать. А точнее как мне создать многомерный массив и как с ним работать.
0
no0ker
101 / 88 / 7
Регистрация: 17.12.2010
Сообщений: 416
20.02.2011, 15:33 4
где здесь многомерный массив.

Добавлено через 2 минуты
может быть начать вот с этого?
C++
1
int a[10][10][10][10];
0
silent_1991
Эксперт С++
5011 / 3071 / 271
Регистрация: 11.11.2009
Сообщений: 7,045
Завершенные тесты: 1
20.02.2011, 15:33 5
Надо было stat объявить как
C
1
int *stat[3];
Потом:
C
1
2
3
4
5
6
7
u_number = number;
u_sum = sum;
u_balans = balans;
 
stat[0] = u_number;
stat[1] = u_sum;
stat[2] = u_balans;
А можно было сразу так:
C
1
2
3
stat[0] = number;
stat[1] = sum;
stat[2] = balans;
1
taras atavin
4205 / 1768 / 211
Регистрация: 24.11.2009
Сообщений: 27,565
20.02.2011, 15:34 6
Кстати, на сях формально нет таких массивов. А int a[10][10] - массив массивов.
0
IamKarlson
3 / 3 / 0
Регистрация: 07.02.2011
Сообщений: 12
20.02.2011, 15:47  [ТС] 7
Я переписал. в результате начинает работать, зависает и выкидывает с ошибкой. типа приложение было завершено.
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
#include <stdio.h>
#define kolvo 50
 
 
 
void main()
{
int *stat[3],number[kolvo],sum[kolvo],balans[kolvo];
int i;
int *u_number;
int *u_sum;
int *u_balans;
int flag,temp;
 
u_number=number;
u_sum=sum;
u_balans=balans;
stat[0]=u_number;
stat[1]=u_sum;
stat[2]=u_balans;
i=0;
for(i=0;i<kolvo;++i)
{
**(stat+i)=0;
*(*(stat+1)+i)=0;
*(*(stat+2)+i)=0;
}
for(i=0;i<=kolvo;++i)
{
    printf("bla bla bla \n",i);
    scanf("%d",&temp);
    printf("chto poluchil %d \n",temp);
    *(*(stat+1)+i)=temp;
    printf("banana banana banana  %d \n", *(*(stat+1)+i));
}
system("pause");
return;
}
0
silent_1991
Эксперт С++
5011 / 3071 / 271
Регистрация: 11.11.2009
Сообщений: 7,045
Завершенные тесты: 1
20.02.2011, 16:01 8
Это
C
1
**(stat+i)=0;
Заменить на это
C
1
*(*stat+i)=0;
1
IamKarlson
3 / 3 / 0
Регистрация: 07.02.2011
Сообщений: 12
20.02.2011, 16:07  [ТС] 9
Ооооо. спасибо огромное.
0
accept
4833 / 3255 / 455
Регистрация: 10.12.2008
Сообщений: 10,569
21.02.2011, 10:22 10
C
1
for(i=0;i<=kolvo;++i)
выход за край
1
IamKarlson
3 / 3 / 0
Регистрация: 07.02.2011
Сообщений: 12
21.02.2011, 23:18  [ТС] 11
Спасибо
0
21.02.2011, 23:18
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.02.2011, 23:18

Как создать многомерный массив?
Подскажите, пожалуйста, возможно ли задать многомерный массив в С, если заранее...

Как заполнить значениями многомерный массив
ДобрДобрый вечер,уважаемые форумчяне! Возник такой вопрос, как на чистом Си...

Считать в память многомерный (трехмерный) массив
Всем привет задача такая вообщем есть массив вот примерно такой 3 3 a1 a2...


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

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

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