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

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

Войти
Регистрация
Восстановить пароль
 
pavelzep
0 / 0 / 0
Регистрация: 26.07.2009
Сообщений: 4
#1

Снова динамические массивы и функции - C++

26.07.2009, 16:30. Просмотров 830. Ответов 9
Метки нет (Все метки)

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
int ** A=new int*[NN+1];            
for (int i=0;i<(NN+1);i++) A[i]=new int[3];
 
void ZZ (char *E, int **A, int *N)     // преобразует строку вида "1,123,124" в элементы массива
                                                    // *E строка
                                                    // **A массив координат
                                                    // *N счетчик строк из main
{
char *str1, *str2, *str3;
int i,j; i=0;j=0;
do
{ str1[i]=E[j]; i++;j++;}
 while  (E[i]!=',');
 j++; i=0;
A[N][0]=atoi(str1);      //косяк тут
do
{ str2[i]=E[j]; j++; i++;}
 while  (E[j]!=',');
 j++; i=0;
A[N][1]=atoi(str2);    //тут
do
{ str3[i]=E[j]; j++;i++;}
 while  (E[j]!='\n');
A[N][2]=atoi(str3);    //и тут вида: cannot convert 'int * to 'int'
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Rififi
2336 / 1051 / 44
Регистрация: 03.05.2009
Сообщений: 2,656
26.07.2009, 16:32     Снова динамические массивы и функции #2
[I]while (E!=',');
у тебя банальное незнание основ языка.
рекомендуется сначала прочитать книгу, потом писать программы.
pavelzep
0 / 0 / 0
Регистрация: 26.07.2009
Сообщений: 4
26.07.2009, 17:34  [ТС]     Снова динамические массивы и функции #3
я не сомневаюсь в этом...да проблемы с этим со знанием языка...
про книгу тоже спрошу какую?
но если A[N][0]=atoi(str1) заменить на С=atoi(str1) то все работает. и при дебагом можно все значения отследить.

Добавлено через 45 минут 6 секунд
Но вопрос все равно остался: как двумерный динамический массив вида
int ** A=new int*[N];
for (int i=0;i<N;i++) A[i]=new int[3]; передать в функцию??
а в самой функции его уже заполнять?
odip
Эксперт С++
7155 / 3295 / 59
Регистрация: 17.06.2009
Сообщений: 14,164
26.07.2009, 17:44     Снова динамические массивы и функции #4
Ну так и передай
C++
1
2
3
4
5
6
7
8
9
10
void func( int a_width, int a_height, int **A ) {
 
int i, j;
for ( i=0; i<a_width; i++ ) {
    for ( j= 0; j<a_height; j++ ) {
        A[i][j]= rand();
    }
}
 
} // func()
Добавлено через 3 минуты 13 секунд
Книга. Бьерн Страуструп. Язык программирования С++.
pavelzep
0 / 0 / 0
Регистрация: 26.07.2009
Сообщений: 4
26.07.2009, 17:55  [ТС]     Снова динамические массивы и функции #5
А если у меня функция для заполнения массива ZZ вызывается из функции XX которая вызывается из main и массив объявлен в main то тогда как?


C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
main ()
{ 
int ** A=new int*[N];
for (int i=0;i<N;i++) A[i]=new int[3]; 
XX (......);
}
 void XX (......)
{
ZZ (......)
}
 void ZZ (......);
{
A[0][0]=5;//например
}
odip
Эксперт С++
7155 / 3295 / 59
Регистрация: 17.06.2009
Сообщений: 14,164
26.07.2009, 18:00     Снова динамические массивы и функции #6
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
void XX( int a_width, int a_height, int **A );
void ZZ( int a_width, int a_height, int **A );
 
int main( void ) {
int **A;
 
X( a_width, a_height, A );
} // main()
 
void XX( int a_width, int a_height, int **A ) {
 
ZZ( a_width, a_height, A );
 
} // XX()
 
void ZZ( int a_width, int a_height, int **A ) {
 
A[0][0]= 5; // случайное число
 
} // ZZ()
Передать как параметр например.
pavelzep
0 / 0 / 0
Регистрация: 26.07.2009
Сообщений: 4
26.07.2009, 18:04  [ТС]     Снова динамические массивы и функции #7
Спасибо... большое
zim22
depict1
276 / 141 / 2
Регистрация: 11.07.2009
Сообщений: 606
26.07.2009, 18:11     Снова динамические массивы и функции #8
Цитата Сообщение от odip Посмотреть сообщение
Почему жестоко ? Просто читать ее следует несколько раз. Сразу все не понять.
потому что вы её советуете новичку. новичок там ничего не поймёт.

Может вам будет интересно: Подборка книг (С++: от новичка до профессионала).
The books are listed in the order you should read them, but The C++ Programming Language is a useful reference to have as you work through the other books.
accept
4819 / 3239 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
27.07.2009, 04:32     Снова динамические массивы и функции #9
в первоначальном коде
C++
1
2
3
4
    char *str1;
...
    do {
        str1[i] = E[j];
str1 никуда не указывает

Цитата Сообщение от pavelzep
но если A[N][0]=atoi(str1) заменить на С=atoi(str1) то все работает
это ничего не значит, потому что может даже работать

C++
1
int *N
C++
1
A[*N][0]
параметры функции - такие же переменные, как и любые локальные переменные
то есть, как их объявил - тем они и являются
если объявил N как указатель, то N и является указателем
а указатель, кроме адреса, не может ничего хранить (адрес - это его данные, так же как для int i = 0; данные - 0)

cannot convert 'int * to 'int'
как раз пытается переменную в которой хранится адрес превратить в число (берёт адрес, как число)
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.07.2009, 07:16     Снова динамические массивы и функции
Еще ссылки по теме:

C++ Шаблонные функции и динамические массивы строк
Динамические массивы C++
C++ Динамические массивы с передачей в функции
Динамические массивы C++
Динамические массивы C++

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

Или воспользуйтесь поиском по форуму:
Skirmisher
44 / 44 / 0
Регистрация: 23.05.2009
Сообщений: 92
27.07.2009, 07:16     Снова динамические массивы и функции #10
Добавлено через 45 минут 56 секунд
Цитата Сообщение от Skirmisher Посмотреть сообщение
Согласен. Столько раз читать пока не выучишь наизусть основы языка!!!
Или обращаться к учебнику, как справочнику после первого прочтения.
Yandex
Объявления
27.07.2009, 07:16     Снова динамические массивы и функции
Ответ Создать тему
Опции темы

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