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

Двумерный массив по ссылке - C++

Восстановить пароль Регистрация
 
NikitaQ
5 / 5 / 1
Регистрация: 10.09.2013
Сообщений: 51
25.11.2013, 02:26     Двумерный массив по ссылке #1
Скажите, пожалуйста, что я не так делаю?
Есть функция - на вход ей дается двумерный массив, который она должна изменить:
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
string takingFirstLine(int sizeOfMyArray, int *game[sizeOfMyArray][sizeOfMyArray], string firstLine) {
    int index; // Для запоминания номера символа, где пробел (Для substr)
    bool enter=0; // Для считывания имени один раз
    int i,j=0;
    string nameOfFirstTeam;
    
    // Разбираем первую строку
    for (i=0; i<firstLine.length(); i++){
        if (firstLine[i] == ' ') {
            if (enter == 0) {
                nameOfFirstTeam=firstLine.substr(0,i);
                enter=1;
                index=i;
            }
            
            if (i > 0 && i!=index) {
                *game[0][j] = stoi(firstLine.substr(index,i)); 
                index=i;
                j++;
            }
        }
    }
    return nameOfFirstTeam;
}
Затем я вызываю ее:
C++
1
play[0].team = takingFirstLine(sizeOfMyArray, game[sizeOfMyArray][sizeOfMyArray], firstLine);
И мне выскакивает ошибка:
C++
1
2
3
4
5
Undefined symbols for architecture x86_64:
  "takingFirstLine(int, int, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >)", referenced from:
      _main in main.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
vua72
414 / 414 / 85
Регистрация: 28.11.2010
Сообщений: 1,175
Завершенные тесты: 1
25.11.2013, 02:44     Двумерный массив по ссылке #2
play[0].team = takingFirstLine(sizeOfMyArray, &game[sizeOfMyArray][sizeOfMyArray], firstLine);
если исходить из тела функции
NikitaQ
5 / 5 / 1
Регистрация: 10.09.2013
Сообщений: 51
25.11.2013, 02:48  [ТС]     Двумерный массив по ссылке #3
Цитата Сообщение от vua72 Посмотреть сообщение
play[0].team = takingFirstLine(sizeOfMyArray, &game[sizeOfMyArray][sizeOfMyArray], firstLine);
если исходить из тела функции
Хм..когда я ставлю '&' компилятор указывает мне на ошибку в этой строке и просит удалить '&'
vua72
414 / 414 / 85
Регистрация: 28.11.2010
Сообщений: 1,175
Завершенные тесты: 1
25.11.2013, 03:53     Двумерный массив по ссылке #4
все правильно, убери * в объявлении функции, * внутри функции и тогда вызов &a[0][0] массив же статический?
alsav22
5284 / 4803 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
25.11.2013, 08:05     Двумерный массив по ссылке #5
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
const int sizeOfMyArray = 10;
 
string takingFirstLine(int game[][sizeOfMyArray], string firstLine) 
{
    int index; // Для запоминания номера символа, где пробел (Для substr)
    bool enter=0; // Для считывания имени один раз
    int i,j=0;
    string nameOfFirstTeam;
    
    // Разбираем первую строку
    for (i=0; i<firstLine.length(); i++){
        if (firstLine[i] == ' ') {
            if (enter == 0) {
                nameOfFirstTeam=firstLine.substr(0,i);
                enter=1;
                index=i;
            }
            
            if (i > 0 && i!=index) {
                game[0][j] = stoi(firstLine.substr(index,i)); 
                index=i;
                j++;
            }
        }
    }
    return nameOfFirstTeam;
}
C++
1
2
3
int game[sizeOfMyArray][sizeOfMyArray]; 
    
play[0].team = takingFirstLine(game, firstLine);
NikitaQ
5 / 5 / 1
Регистрация: 10.09.2013
Сообщений: 51
25.11.2013, 09:42  [ТС]     Двумерный массив по ссылке #6
Цитата Сообщение от vua72 Посмотреть сообщение
все правильно, убери * в объявлении функции, * внутри функции и тогда вызов &a[0][0] массив же статический?
Статический - это когда длина массива задается чеез константу? У меня не так, я сначала нахожу длину, а потом создаю массив

Добавлено через 39 секунд
Цитата Сообщение от alsav22 Посмотреть сообщение
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
const int sizeOfMyArray = 10;
 
string takingFirstLine(int game[][sizeOfMyArray], string firstLine) 
{
    int index; // Для запоминания номера символа, где пробел (Для substr)
    bool enter=0; // Для считывания имени один раз
    int i,j=0;
    string nameOfFirstTeam;
    
    // Разбираем первую строку
    for (i=0; i<firstLine.length(); i++){
        if (firstLine[i] == ' ') {
            if (enter == 0) {
                nameOfFirstTeam=firstLine.substr(0,i);
                enter=1;
                index=i;
            }
            
            if (i > 0 && i!=index) {
                game[0][j] = stoi(firstLine.substr(index,i)); 
                index=i;
                j++;
            }
        }
    }
    return nameOfFirstTeam;
}
C++
1
2
3
int game[sizeOfMyArray][sizeOfMyArray]; 
    
play[0].team = takingFirstLine(game, firstLine);
А если у меня не const int ?
alsav22
5284 / 4803 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
25.11.2013, 09:48     Двумерный массив по ссылке #7
Цитата Сообщение от NikitaQ Посмотреть сообщение
А если у меня не const int ?
Покажите как массив создаёте.
Hunter13ua
46 / 46 / 5
Регистрация: 25.10.2011
Сообщений: 183
25.11.2013, 09:58     Двумерный массив по ссылке #8
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
#include <iostream>
#include <iomanip>
 
using namespace std;
 
void print (int** _array, int _size)
{
    for(int i = 0; i < _size; i++){
        for(int j = 0; j < _size; j++)
            cout << setw(3) << _array[i][j];
        cout << endl;
    }
}
 
int main()
{
    int size = 0;
    cout << "Input size: ";
    cin >> size;
 
    int** dynamic_array = new int* [size];
    for(int i = 0; i < size; i++)
        dynamic_array[i] = new int [size];
 
    for(int i = 0; i < size; i++)
        for(int j = 0; j < size; j++)
            dynamic_array[i][j] = i+j;
    print(dynamic_array, size);
    return 0;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.11.2013, 10:07     Двумерный массив по ссылке
Еще ссылки по теме:

C++ Двумерный массив
Двумерный массив C++ C++
C++ Двумерный массив
Составить прототип функции: Как правильно передать динамический массив по ссылке C++
Не получается передать массив по ссылке C++

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

Или воспользуйтесь поиском по форуму:
alsav22
5284 / 4803 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
25.11.2013, 10:07     Двумерный массив по ссылке #9
Цитата Сообщение от NikitaQ Посмотреть сообщение
А если у меня не const int ?
Если не const int, а массив на стеке, то - нестандарт.
Yandex
Объявления
25.11.2013, 10:07     Двумерный массив по ссылке
Ответ Создать тему
Опции темы

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