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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 14, средняя оценка - 4.71
turin
0 / 0 / 0
Регистрация: 24.09.2012
Сообщений: 13
#1

Можно ли значения двумерного динамического массива присвоить обыкновенному двумерному массиву? - C++

11.06.2013, 02:15. Просмотров 2170. Ответов 11
Метки нет (Все метки)

Столкнулся с проблемой с динамическими массивами, можно ли значения двумерного динамического массива присвоить обыкновенному двумерному массиву? Вот объявляю динамический массив строк,
C++
1
2
3
4
5
6
7
string **authors=new string*[10];
    string **titlesOfNumbers= new string*[10];
    for (int i = 0; i < 10; i++) 
    {
        authors[i] = new string [10];
        titlesOfNumbers[i] = new string [10];
    }
и как его значения передать обыкновенному массиву
C++
1
2
string Authors[10][10];
    string TitlesOfNumbers[10][10];
.....и вообще возможно ли это сделать??? Помогите с проблемой...
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.06.2013, 02:15
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Можно ли значения двумерного динамического массива присвоить обыкновенному двумерному массиву? (C++):

Присваивание элементов двумерного массива другому двумерному массиву - C++
нужно элементы одного двумерного массива присвоить другому. Вот программа. Но для одномерного массива она работает, если соответственно...

Как присвоить двумерному символьному массиву значение? - C++
Проблема в строке 18. Как будет правильно? #include &lt;cstdio&gt; int main() { char buf; int i,j,N,time,t,k,buftime,m; ...

Не получается присвоить значение двумерному массиву char - C++
объявляю двумерный массив (массив массивов в char для хранения имен файлов) в cpp файле char m_fname ; я хочу инициализировать...

Надо присвоить значения массива а массиву b с помощю функции, и указателей - C++
Надо присвоить значения массива а массиву b с помощю функции, и указателей... Я написал, но не работет... В чём дело? #include...

Можно ли определить размер динамического двумерного массива, количество строк и столбцов? - C++
help

Присвоить значения массиву символов - C++
простейший вопрос, но где-то ошибся... char TestArr; TestArr = { +, +, +, +, +, +, +, +, +, +, +, +, +, +, +, +, +, + } ; //...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
MrGluck
Модератор
Эксперт CЭксперт С++
7239 / 4407 / 642
Регистрация: 29.11.2010
Сообщений: 11,929
11.06.2013, 02:22 #2
turin, просто так из ** нельзя сделать [][].
А чем в цикле не устраивает обычное присваивание для каждого элемента?
0
turin
0 / 0 / 0
Регистрация: 24.09.2012
Сообщений: 13
11.06.2013, 02:25  [ТС] #3
MrGluck, компилятор ругается! Делал пошаговую отладку, и на том месте где начинается ОБЫЧНОЕ присваивание вылетает из программы....
0
MrGluck
Модератор
Эксперт CЭксперт С++
7239 / 4407 / 642
Регистрация: 29.11.2010
Сообщений: 11,929
11.06.2013, 02:30 #4
Что то не так делаете:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
#include <string>
 
int main()
{
    std::string s1[2][2] = { {"abcd", "efg"}, {"hijk", "lmnop"} }, **s2;
    s2 = new std::string*[2];
    for (int i=0; i < 2; i++)
    {
        s2[i] = new std::string[2];
        for (int j=0; j < 2; j++)
            s2[i][j] = s1[i][j];
    }
 
    for (int i=0; i < 2; i++)
    {
        for (int j=0; j < 2; j++)
            std::cout << s2[i][j] << " ";
        delete [] s2[i];
        std::cout << std::endl;
    }
    delete [] s2;
}
0
turin
0 / 0 / 0
Регистрация: 24.09.2012
Сообщений: 13
11.06.2013, 02:37  [ТС] #5
MrGluck, вот тут
C++
1
2
3
s2[i] = new std::string[2];
        for (int j=0; j < 2; j++)
            s2[i][j] = s1[i][j];
как я понимаю значения простого массива присваиваются динамическому...так? Так мне надо наоборот...
0
MrGluck
Модератор
Эксперт CЭксперт С++
7239 / 4407 / 642
Регистрация: 29.11.2010
Сообщений: 11,929
11.06.2013, 02:38 #6
turin, да без разницы. Там один элемент типа std::string присваивается другому. Массив массиву не присвоишь.
1
turin
0 / 0 / 0
Регистрация: 24.09.2012
Сообщений: 13
11.06.2013, 02:39  [ТС] #7
MrGluck, спасибо... буду пробовать
0
-=ЮрА=-
Заблокирован
Автор FAQ
11.06.2013, 11:11 #8
Цитата Сообщение от turin Посмотреть сообщение
можно ли значения двумерного динамического массива присвоить обыкновенному двумерному массиву?
- да можно

Цитата Сообщение от MrGluck Посмотреть сообщение
ам один элемент типа std::string присваивается другому. Массив массиву не присвоишь.
- я бы не был столь категоричен
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
#include <string>
#include <iostream>
using namespace std;
 
int main()
{
    int i, j;
    string ** s_dynamic;
    string s_static[3][2] = 
    {
        {"11", "12"},
        {"21", "22"},
        {"31", "32"}
    };
 
    s_dynamic = new string *[3];
    for(i = 0; i < 3; i++)
        s_dynamic[i] = s_static[i];
 
    for(i = 0; i < 3; i++)
    {
        for(j = 0; j < 2; j++)
            cout<<s_dynamic[i][j]<<" ";
        cout<<endl;
    }
    cin.get();
    return 0;
}
http://codepad.org/X6gIAvSt
Output:
11 12
21 22
31 32
0
Миниатюры
Можно ли значения двумерного динамического массива присвоить обыкновенному двумерному массиву?  
Tulosba
:)
Эксперт С++
4396 / 3239 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
11.06.2013, 11:17 #9
s_dynamic[i] обычный указатель. Никакого присваивания массивов тут нет.
0
-=ЮрА=-
Заблокирован
Автор FAQ
11.06.2013, 11:23 #10
Цитата Сообщение от turin Посмотреть сообщение
Так мне надо наоборот...
- наоборот аналогично заюзай статик поинтер (указатель)
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
#include <string>
#include <iostream>
using namespace std;
 
int main()
{
    int i, j;
    string ** s_dynamic;
    string *s_static[3];
 
    s_dynamic = new string *[3];
    for(i = 0; i < 3; i++)
    {
        s_dynamic[i] = new string[2];
        for(j = 0; j < 2; j++)
        {
            s_dynamic[i][j] = '1' + i;
            s_dynamic[i][j]+= '1' + j;
            cout<<s_dynamic[i][j]<<" ";
        }
        cout<<endl;
    }
 
    for(i = 0; i < 3; i++)
        s_static[i] = s_dynamic[i];
 
    for(i = 0; i < 3; i++)
    {
        for(j = 0; j < 2; j++)
            cout<<s_static[i][j]<<" ";
        cout<<endl;
    }
    cin.get();
    return 0;
}
http://codepad.org/NgojIrKH
0
-=ЮрА=-
Заблокирован
Автор FAQ
11.06.2013, 11:35 #11
ЗЫ string не очень удачный пример, суть в том чтобы скопировать память из одного блока в другой, блоком в данном случае выступает каждая строка
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
#include <string>
#include <iostream>
using namespace std;
 
int main()
{
    int i, j;
    double ** s_dynamic;
    double s_static[3][2];
 
    s_dynamic = new double *[3];
    for(i = 0; i < 3; i++)
    {
        s_dynamic[i] = new double[2];
        for(j = 0; j < 2; j++)
        {
            s_dynamic[i][j] = (1 + i)*10 + (1 + j);
            cout<<s_dynamic[i][j]<<" ";
        }
        cout<<endl;
    }
 
    for(i = 0; i < 3; i++)
        memcpy(s_static[i], s_dynamic[i], 2*sizeof(double));
 
    for(i = 0; i < 3; i++)
    {
        for(j = 0; j < 2; j++)
            cout<<s_static[i][j]<<" ";
        cout<<endl;
    }
    cin.get();
    return 0;
}
http://codepad.org/He1RmStF
Output:
11 12
21 22
31 32
11 12
21 22
31 32
0
Миниатюры
Можно ли значения двумерного динамического массива присвоить обыкновенному двумерному массиву?  
MrGluck
Модератор
Эксперт CЭксперт С++
7239 / 4407 / 642
Регистрация: 29.11.2010
Сообщений: 11,929
11.06.2013, 14:26 #12
-=ЮрА=-, сделаешь из ** [][] или наоборот через обычное присваивание (сразу одно равно другому) - возьму свои слова назад. ТСу ведь именно это нужно.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.06.2013, 14:26
Привет! Вот еще темы с ответами:

Матрицы (обращение к двумерному массиву) - C++
Народ, решил на досуге для собственного использования создать класс матрица( пока пробный). Разумеется захотелось обращаться как к...

Реализация механизма обращения к двумерному массиву - C++
Приветствую участников форума. Есть у нас класс с указателем какого-то типа. Мы выделяем память под массив размера N. При этом мы можем,...

Нужен урок по одномерном и двумерному динамическому массиву - C++
Нужен урок по одномерном и двумерному динамическому массиву

Присвоить значение полям динамического массива структуры - C++
Здравствуйте, у меня возник такой вопрос: А как можно присвоить значение полям динамиского масива структуры... у меня не получилось,...


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

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

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