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

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

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

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

26.07.2009, 16:30. Просмотров 836. Ответов 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'
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.07.2009, 16:30
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Снова динамические массивы и функции (C++):

Указатели и массивы. Индексация с помощью указателей. Передача массивов в функции. Динамические массивы (обработка матриц) - C++
Для каждого элемента , bij, i= 1,...,n , j=1,...,n определяется свой многоугольник местонахождением соответствующего элемента aij (см....

Динамические массивы и функции. Динамические массивы. - C++
Дана матрица 6х8 целого типа. Создать одномерный массив, содержащий элементы матрицы, кратные числу, введенному с клавиатуры.

Функции и динамические массивы. - C++
Вечер добрый. Помогите пожалуйста написать 2 программы. плз ( N1 Дан одномерный массив, состоящий из 20 целых чисел. Создать другой...

Динамические массивы и функции - C++
Помогите решить, пожалуйста))) На динамические массивы: 1.1 Выделить память для трехмерного массива а. Изменить индексы...

Динамические массивы с передачей в функции - C++
Здравствуйте, завтра у меня обязательная контрольная работа, без права пересдачи, я переболел ветрянкой и не смог разобраться, времени не...

Шаблонные функции и динамические массивы строк - C++
Всем доброго времени суток. Я уже наверное всех достал вопросами, но опять не могу отловить ошибку сам... Задача: написать шаблонную...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Rififi
2359 / 1054 / 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
Эксперт С++
7157 / 3297 / 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
Эксперт С++
7157 / 3297 / 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
4821 / 3241 / 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'
как раз пытается переменную в которой хранится адрес превратить в число (берёт адрес, как число)
Skirmisher
44 / 44 / 0
Регистрация: 23.05.2009
Сообщений: 92
27.07.2009, 07:16 #10
Добавлено через 45 минут 56 секунд
Цитата Сообщение от Skirmisher Посмотреть сообщение
Согласен. Столько раз читать пока не выучишь наизусть основы языка!!!
Или обращаться к учебнику, как справочнику после первого прочтения.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.07.2009, 07:16
Привет! Вот еще темы с ответами:

Можно передавать и вызывать из функции в DLL динамические массивы? - C++
Мне нужно создать перегруженные функции удаления элемента из динамического массива с заданным ключом!Можно передавать в функцию и вызывать...

Как сделать динамические массивы вместо обычных? Используя функции - C++
Как сделать динамические массивы вместо обычных? Используя функции. Для введения одной матрицы нужна одна функция? т.е. чтобы ввести 2...

и снова массивы (поиск, сортировка) - C++
ребят, пытаюсь написать код который: 1) выводит двумерную массив 2) осуществляет последовательный поиск 3) переводит в одномерный...

Динамические массивы - C++
Подскажите, как найти в одномерном динамическом массиве номер первого элемента, на котором произошла смена знака?(язык Си)


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
27.07.2009, 07:16
Ответ Создать тему
Опции темы

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