0 / 0 / 0
Регистрация: 24.09.2012
Сообщений: 13
1

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

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

Author24 — интернет-сервис помощи студентам
Столкнулся с проблемой с динамическими массивами, можно ли значения двумерного динамического массива присвоить обыкновенному двумерному массиву? Вот объявляю динамический массив строк,
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
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
11.06.2013, 02:15
Ответы с готовыми решениями:

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

Как присвоить двумерному символьному массиву значение?
Проблема в строке 18. Как будет правильно? #include &lt;cstdio&gt; int main() { char buf; ...

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

Надо присвоить значения массива а массиву b с помощю функции, и указателей
Надо присвоить значения массива а массиву b с помощю функции, и указателей... Я написал, но не...

11
Форумчанин
Эксперт CЭксперт С++
8215 / 5045 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
11.06.2013, 02:22 2
turin, просто так из ** нельзя сделать [][].
А чем в цикле не устраивает обычное присваивание для каждого элемента?
0
0 / 0 / 0
Регистрация: 24.09.2012
Сообщений: 13
11.06.2013, 02:25  [ТС] 3
MrGluck, компилятор ругается! Делал пошаговую отладку, и на том месте где начинается ОБЫЧНОЕ присваивание вылетает из программы....
0
Форумчанин
Эксперт CЭксперт С++
8215 / 5045 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
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
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
Форумчанин
Эксперт CЭксперт С++
8215 / 5045 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
11.06.2013, 02:38 6
turin, да без разницы. Там один элемент типа std::string присваивается другому. Массив массиву не присвоишь.
1
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
:)
Эксперт С++
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
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
Форумчанин
Эксперт CЭксперт С++
8215 / 5045 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
11.06.2013, 14:26 12
-=ЮрА=-, сделаешь из ** [][] или наоборот через обычное присваивание (сразу одно равно другому) - возьму свои слова назад. ТСу ведь именно это нужно.
0
11.06.2013, 14:26
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
11.06.2013, 14:26
Помогаю со студенческими работами здесь

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

Как выбрать из заданного двумерного динамического массива все отрицательные значения и заменить их на положительные?
нужно выбрать из заданного двумерного динамического массива все отрицатильние значения и заменить...

Можно ли присвоить одному массиву структур значение другого массива структур и записать его в файл
Можно ли присвоить одному массиву структур значение другого массива структур и записать его в файл?

Двумерному массиву присвоить одномерный
Здравствуйте! По ходу считывания из файла строка помещается в одномерный массив buffer: while...


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru