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

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

Войти
Регистрация
Восстановить пароль
 
NikitaQ
5 / 5 / 1
Регистрация: 10.09.2013
Сообщений: 51
#1

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

25.11.2013, 02:26. Просмотров 310. Ответов 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
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)
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.11.2013, 02:26
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Двумерный массив по ссылке (C++):

Как можно вложить двумерный массив в двумерный? - C++
Нужно написать программу перемножения двух матриц размерностью МxМ, элементы которых, матрицы размерностью КxК... Подскажите (желательно с...

Массив: Как скопировать двумерный массив в другой массив? - C++
Как скопировать двумерный массив в другой массив?

Не получается передать массив по ссылке - C++
Хочу передать в функцию массив char, передать хочу по ссылке. Делаю так: void func(char&amp; arr) { ... } Пытаюсь воспользоваться этой...

Массив: преобразорвать двумерный массив в одномерный и отсортировать его методом пузырька - C++
всем привет. народ помогите с прогой, конкретно с функцией sort (65 строка), она должна двухмерный массив перевести построчно в одномерный...

Чем отличаются двумерный символьный массив и массив указателей на строки - C++
Двумерный символьный массив и массив указателей на строки. Собственно чем они отличаются? Заранее спасибо.

Массив: Как можно задать и вывести симметричный двумерный массив? - C++
как можно задать и вывести симметричный массив

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
vua72
415 / 415 / 85
Регистрация: 28.11.2010
Сообщений: 1,183
Завершенные тесты: 1
25.11.2013, 02:44 #2
play[0].team = takingFirstLine(sizeOfMyArray, &game[sizeOfMyArray][sizeOfMyArray], firstLine);
если исходить из тела функции
0
NikitaQ
5 / 5 / 1
Регистрация: 10.09.2013
Сообщений: 51
25.11.2013, 02:48  [ТС] #3
Цитата Сообщение от vua72 Посмотреть сообщение
play[0].team = takingFirstLine(sizeOfMyArray, &game[sizeOfMyArray][sizeOfMyArray], firstLine);
если исходить из тела функции
Хм..когда я ставлю '&' компилятор указывает мне на ошибку в этой строке и просит удалить '&'
0
vua72
415 / 415 / 85
Регистрация: 28.11.2010
Сообщений: 1,183
Завершенные тесты: 1
25.11.2013, 03:53 #4
все правильно, убери * в объявлении функции, * внутри функции и тогда вызов &a[0][0] массив же статический?
0
alsav22
5419 / 4815 / 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);
0
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 ?
0
alsav22
5419 / 4815 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
25.11.2013, 09:48 #7
Цитата Сообщение от NikitaQ Посмотреть сообщение
А если у меня не const int ?
Покажите как массив создаёте.
0
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;
}
2
alsav22
5419 / 4815 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
25.11.2013, 10:07 #9
Цитата Сообщение от NikitaQ Посмотреть сообщение
А если у меня не const int ?
Если не const int, а массив на стеке, то - нестандарт.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.11.2013, 10:07
Привет! Вот еще темы с ответами:

Дан двумерный массив 3х3. Получить одномерный массив из из отрицательных элементов матрицы. - C++
Пожалуйста, помогите решить простым методом задачку, просто не могу понять смысл ее выполнения. Дан двумерный массив 3х3.Получить...

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

Дан двумерный массив, создать другой массив, строками которого будут диагонали первого массива - C++
Дан двумерный массив , создать другой массив ,строками которого будут диагонали первого массива, решить с помощью классов . Класс...

как передать в функцию двухмерный динамический массив по ссылке - C++
как передать в функцию двухмерный динамический массив по ссылке?


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

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

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