Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/6: Рейтинг темы: голосов - 6, средняя оценка - 4.50
0 / 0 / 0
Регистрация: 17.04.2011
Сообщений: 13
1

Из динамических массивов в обычные

17.04.2011, 22:32. Показов 1071. Ответов 17
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
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
36
37
38
39
40
41
42
43
44
#include <iostream.h>
 
void trans_pointer()
{
    int n,m,i,j;
        int **X,**Y;
        cout << "Enter m"<<endl;
        cin >> m;
        cout << "Enter n"<<endl;
        cin >> n;
    X = new int * [m];
    for(i=0;i<m;i++)
        X[i] = new int[n];
        cout << "Enter matrix X"<<endl;
        for(i=0;i<m;i++)
                for(j=0;j<n;j++)
                        cin >> X[i][j];
    Y = new int * [n];
    for(j=0;j<n;j++)
        Y[j] = new int[m];
        for(i=0;i<m;i++)
                for(j=0;j<n;j++)
                        Y[j][i] = X[i][j];
        cout << "Matrix Y:"<<endl;
        for(i=0;i<n;i++)
        {
                for(j=0;j<m;j++)
                        cout << Y[i][j] << " ";
                cout <<endl;
        }
    for(i=0;i<m;i++)
        delete X[i];
    delete X;
    for(j=0;j<n;j++)
        delete Y[j];
    delete Y;
}
 
int main()
{
    cout <<endl<< "Using pointers"<<endl;
    trans_pointer();
    return 0;
}
В общем программа полностью валидна, но в ней используется динамическое создание массивов. Как мне переделать, чтобы обойтись от них. Просто мы их ещё не проходили...Помогите плиз...
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.04.2011, 22:32
Ответы с готовыми решениями:

Динамических массивов
Всем доброго дня!!!Если есть минутка, помогите сделать эти задания!буду очень благодарен!! 1....

Удаление динамических массивов
Здравствуйте, вобщем проблема в этом куске кода: int *makeDigits(int n) { int *digits = new...

Адреса динамических массивов
Как считать конкретное количество элементов из динамического массива чар в строку string? Используя...

Обработка динамических массивов
Для размещения массивов следует использовать динамическую память. Задание В матрице удалить...

17
108 / 108 / 23
Регистрация: 21.03.2010
Сообщений: 445
18.04.2011, 07:14 2
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 <iostream>
 
using namespace std;
 
void trans_pointer()
{
        int n,m,i,j;
        int X[150][150],Y[150][150];
        cout << "Enter m"<<endl;
        cin >> m;
        cout << "Enter n"<<endl;
        cin >> n;
        cout << "Enter matrix X"<<endl;
        for(i=0;i<m;i++)
                for(j=0;j<n;j++)
                        cin >> X[i][j];
        for(i=0;i<m;i++)
                for(j=0;j<n;j++)
                        Y[j][i] = X[i][j];
        cout << "Matrix Y:"<<endl;
        for(i=0;i<n;i++)
        {
                for(j=0;j<m;j++)
                        cout << Y[i][j] << " ";
                cout <<endl;
        }
}
 
int main()
{
        cout <<endl<< "Using pointers"<<endl;
        trans_pointer();
        return 0;
}
1
4226 / 1795 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
18.04.2011, 07:17 3
Hy6oBu4ka, CEBEP, а что такое обычные массивы? Массивы бывают: константные, статические и динамические, но ни как не обычные. Констнатными массивами называются массивы, элменты которых - константы, статическими массивами называются массивы, элементы которых - пременные, но их количества - константы, динамическими массивами называются массивы, количества элментов которпых - переменные. При чём здесь обычность и необычность? Разве по поводу массивов вообще есть какой то обычай?
0
silent_1991
18.04.2011, 07:23
  #4

Не по теме:

Цитата Сообщение от taras atavin Посмотреть сообщение
Разве по поводу массивов вообще есть какой то обычай?
Есть обычай материться, когда
C++
1
2
3
int n;
std::cin >> n;
int mas[n];
не работает, а динамическое выделение памяти ещё не проходили, но это вряд-ли относится к делу :D

0
taras atavin
18.04.2011, 07:26
  #5

Не по теме:

Цитата Сообщение от silent_1991 Посмотреть сообщение
Есть обычай материться, когда
C++
1
2
3
int n;
std::cin >> n;
int mas[n];
не работает, а динамическое выделение памяти ещё не проходили, но это вряд-ли относится к делу :D
Не знаю, как тебе, мне с такого кода смешно.

0
silent_1991
18.04.2011, 07:27
  #6

Не по теме:

Цитата Сообщение от taras atavin Посмотреть сообщение
мне с такого кода смешно
Чего я, собственно, и добивался :D
Юмор вы, видимо, понимаете, а вот сарказм не очень...

0
108 / 108 / 23
Регистрация: 21.03.2010
Сообщений: 445
18.04.2011, 07:29 7
Цитата Сообщение от taras atavin Посмотреть сообщение
Hy6oBu4ka, CEBEP, а что такое обычные массивы? Массивы бывают: константные, статические и динамические, но ни как не обычные. Констнатными массивами называются массивы, элменты которых - константы, статическими массивами называются массивы, элементы которых - пременные, но их количества - константы, динамическими массивами называются массивы, количества элментов которпых - переменные. При чём здесь обычность и необычность? Разве по поводу массивов вообще есть какой то обычай?
taras atavin
ты хотел чтобы все сказали "вау, как много ты знаешь!"? обычные - те к которым топикстартер привык, те которые он проходил, изучал и использовал. Очевидно, что это статические массивы. И такое определение вполне однозначно. Не менее однозначно чем ваше
Цитата Сообщение от taras atavin Посмотреть сообщение
но их количества - константы
хотя многие знают что константы и константные выражения - разные вещи.
0
4226 / 1795 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
18.04.2011, 07:32 8
Цитата Сообщение от CEBEP Посмотреть сообщение
обычные - те к которым топикстартер привык
А может он к динамическим и привык? Или к константым? Я вот массивы начал имеено с динамических и за месяц к ним привык.

Добавлено через 1 минуту
Цитата Сообщение от CEBEP Посмотреть сообщение
хотя многие знают что константы и константные выражения - разные вещи.
Даже при исспользовании такого выражения колчичеством элементов будет значение константного выражения, которое есть константа.
0
108 / 108 / 23
Регистрация: 21.03.2010
Сообщений: 445
18.04.2011, 07:32 9
мб, мб.... а мб это пьяный Страуструп выучил русский и пришел нас потролить... мб, мб...
0
taras atavin
18.04.2011, 07:34
  #10

Не по теме:

тогда уж на Hy6oBu4ka работает гуглопереводчик.

0
0 / 0 / 0
Регистрация: 17.04.2011
Сообщений: 13
18.04.2011, 21:05  [ТС] 11
Спасибо, что помогли !
Показала код преподавателю, он сказал, нужно чтобы программа использовала указатели.
Как их использовать ? Я думала можно использовать только конструкции N[строка][столбец]
обьясните пожалуйста
0
prazuber
18.04.2011, 21:09
  #12

Не по теме:

Предполагаю, что нужно было слушать преподавателя.

0
108 / 108 / 23
Регистрация: 21.03.2010
Сообщений: 445
18.04.2011, 21:12 13
сам Саломон бы не понял, что он имел введу. попробуйте показать ему первый код. если не понравится, попробуйте в том который Y[150][150] заменить везде Y[i][j] на *(Y + 150 * j + i) и X[i][j] на *(X + 150 * i + j), и таким образом везде кроме объявления масива.

Добавлено через 35 секунд
имхо это таки Страуструп. и когда он учился лекций по с++ ещё не было((
1
0 / 0 / 0
Регистрация: 17.04.2011
Сообщений: 13
18.04.2011, 21:55  [ТС] 14
Стоп стоп... Откуда 150 ? Размерность должна быть введена с клавиатуры.
Так что так непрокатит

Добавлено через 2 минуты
Цитата Сообщение от CEBEP Посмотреть сообщение
сам Саломон бы не понял, что он имел введу. попробуйте показать ему первый код. если не понравится, попробуйте в том который Y[150][150] заменить везде Y[i][j] на *(Y + 150 * j + i) и X[i][j] на *(X + 150 * i + j), и таким образом везде кроме объявления масива.

Добавлено через 35 секунд
имхо это таки Страуструп. и когда он учился лекций по с++ ещё не было((
Бьёрн сам ходячия лекция =)
0
2 / 2 / 1
Регистрация: 12.02.2011
Сообщений: 49
18.04.2011, 22:14 15
Как же ты введешь размер массива после копиляции, компилятор сперва "смотрит" размер массива и тип элементов, затем выделяет память из расчета= количество элементов умножить на количество байт на используемый тип элемента, и только затем запускает программу . Если нет хотя бы одного из множителей компилятор не может вычислить размер памяти и жутко ругается.
Если необходимо создавать размер массива программно, то только через оператор new .
0
108 / 108 / 23
Регистрация: 21.03.2010
Сообщений: 445
18.04.2011, 23:30 16
тык матрица размечена, плевать что мы заняли её малую часть. алгоритм засрётся только если число строк или столбцов будет указано больше 150 и препод не поленится во время теста ввести эти сотни чисел, ведь даже если строка будет длиннее 150 это не гарантирует ошибку при малом колличестве столбцов, как и наоборот. память выделяется вся в одном месте и равна 150 * 150 * sizeof(int) байт
1
0 / 0 / 0
Регистрация: 17.04.2011
Сообщений: 13
18.04.2011, 23:41  [ТС] 17
Цитата Сообщение от CEBEP Посмотреть сообщение
тык матрица размечена, плевать что мы заняли её малую часть. алгоритм засрётся только если число строк или столбцов будет указано больше 150 и препод не поленится во время теста ввести эти сотни чисел, ведь даже если строка будет длиннее 150 это не гарантирует ошибку при малом колличестве столбцов, как и наоборот. память выделяется вся в одном месте и равна 150 * 150 * sizeof(int) байт
А помоги написать полный код, буду бесконечно благодарна...
0
108 / 108 / 23
Регистрация: 21.03.2010
Сообщений: 445
19.04.2011, 00:33 18
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 <iostream>
 
using namespace std;
 
void trans_pointer()
{
        int n,m,i,j;
        int X[150][150],Y[150][150];
        cout << "Enter m"<<endl;
        cin >> m;
        cout << "Enter n"<<endl;
        cin >> n;
        cout << "Enter matrix X"<<endl;
        for(i=0;i<m;i++)
                for(j=0;j<n;j++)
                        cin >> *(*( X + i ) + j);
        for(i=0;i<m;i++)
                for(j=0;j<n;j++)
                         *(*( Y + j ) + i) =  *(*( X + i ) + j);
        cout << "Matrix Y:"<< endl;
        for(i=0;i<n;i++)
        {
                for(j=0;j<m;j++)
                        cout << *(*( Y + i ) + j) << " ";
                cout << endl;
        }
}
 
int main()
{
        cout <<endl<< "Using pointers"<<endl;
        trans_pointer();
        return 0;
}
всё, если ещё что-то нужно - пиши в аську. от темы отписываюсь. . .
0
19.04.2011, 00:33
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
19.04.2011, 00:33
Помогаю со студенческими работами здесь

Использование динамических массивов
Помогите, пожалуйста. Надо выполнить задание, используя динамические массивы В массиве с четным...

Обработка динамических массивов с++
Из одномерного целочисленного массива вывести те элементы, которые являются делителями для...

Использование динамических массивов
Прошу вашей помощи в решении след задачи (не нужно мне, чтоб вы решали, а хотя б подсказали как все...

Создание динамических массивов
Здравствуйте. Подтолкните в верном направлении. В начале пользователь задаёт количество массивов,...


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

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