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

Как создать 100 массивов разными значениями ? - C++

Восстановить пароль Регистрация
 
proger2030
 Аватар для proger2030
11 / 11 / 2
Регистрация: 15.11.2010
Сообщений: 256
25.11.2011, 23:10     Как создать 100 массивов разными значениями ? #1
вот фрагмент кода! Подскажите плс
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
    //while(KolMas < MaxMas)
    //{
                
        for(int i = 0; i < straka; i++)
        {
            for(int j = 0; j < stolbes; j++)
                {
               MasA[i][j] =  rand()%100 + 1;
            }
        
        }
        //KolMas++;
        
    //}
Это только для одного массива а мне их надо 100 ну вообще много. Я могу цикл запустит но у них получается значения одинаковы.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.11.2011, 23:10     Как создать 100 массивов разными значениями ?
Посмотрите здесь:

C++ Как создать n массивов?
Заполнить булевский массив goroda[100] значениями false C++
C++ вычислить значения одной и той-же функции с разными значениями, в несколько потоков
C++ Заполнить массив случайными значениями, лежащими в диапазоне от 50 до 100
Как автоматически создать несколько переменных с разными именами? C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
fasked
Эксперт C++
 Аватар для fasked
4925 / 2505 / 180
Регистрация: 07.10.2009
Сообщений: 4,306
Записей в блоге: 1
25.11.2011, 23:12     Как создать 100 массивов разными значениями ? #2
proger2030, трехмерный массив не пробовали? Говорят, помогает.
proger2030
 Аватар для proger2030
11 / 11 / 2
Регистрация: 15.11.2010
Сообщений: 256
25.11.2011, 23:19  [ТС]     Как создать 100 массивов разными значениями ? #3
Цитата Сообщение от fasked Посмотреть сообщение
proger2030, трехмерный массив не пробовали? Говорят, помогает.
Да ты подожди со своим трехмерным массивом. Дойдет дело до этого посмотрим
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
25.11.2011, 23:27     Как создать 100 массивов разными значениями ? #4
Цитата Сообщение от proger2030 Посмотреть сообщение
Дойдет дело до этого посмотрим
Как посмотрите - возвращайтесь, возобновим разговор.
fasked
25.11.2011, 23:29
  #5

Не по теме:

Цитата Сообщение от proger2030 Посмотреть сообщение
Да ты подожди со своим трехмерным массивом. Дойдет дело до этого посмотрим
Хам

proger2030
 Аватар для proger2030
11 / 11 / 2
Регистрация: 15.11.2010
Сообщений: 256
25.11.2011, 23:37  [ТС]     Как создать 100 массивов разными значениями ? #6
Цитата Сообщение от fasked Посмотреть сообщение

Не по теме:


Хам

Господа реально помогите. я не прошу вас код написать сего лишь подкинь идею хотя бы.
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
25.11.2011, 23:40     Как создать 100 массивов разными значениями ? #7
proger2030, вы читаете, что вам пишут? Используйте трёхмерные массивы (т.е. массивы двухмерных массивов, с логической точки зрения), в самом верхнем цикле перебирая двухмерные массивы, а во вложенных заполняя каждый из них.
co6ak
Кошковед
 Аватар для co6ak
403 / 496 / 29
Регистрация: 12.04.2010
Сообщений: 1,392
25.11.2011, 23:40     Как создать 100 массивов разными значениями ? #8
C++
1
2
3
4
5
6
7
#include <time.h>
 
int main()
{
srand ( time ( NULL ) );
...
}
Bers
Заблокирован
25.11.2011, 23:57     Как создать 100 массивов разными значениями ? #9
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
//структура "матрица"
//Представляет собой обёртку над двухмерным массивом
template<typename TypeT, int _SizeX, int _sizeY>
struct Array2D
{
    Array2D()
    {
        for(int y = 0; y < _sizeY; ++y)
        {
            for(int x = 0; x < _SizeX; ++x)
            {
               Arr[x][y] =  rand()%100 + 1;
            }
        }
    }
    TypeT Arr[_SizeX][_sizeY];
};
 
//создаём 100 штук таких матриц
//каждая матрица будит проинициализирована
//случайными числами
Array2D<int,100,100> SuperArray[100];
 
 
int main()
{
   return 0;
};
Добавлено через 5 минут
Цитата Сообщение от silent_1991 Посмотреть сообщение
proger2030, вы читаете, что вам пишут? Используйте трёхмерные массивы (т.е. массивы двухмерных массивов, с логической точки зрения), в самом верхнем цикле перебирая двухмерные массивы, а во вложенных заполняя каждый из них.
Настоятельно не рекомендую использовать трехмерные массивы.
Более того, крайне не рекомендую использовать двухмерные массивы.

Одномерный массив намного проще для понимания, и гибче в управлении.
Его легче трансформировать во всевозможные состояния.

Если так сильно понадобились многомерные массивы - всегда можно инкапсулировать сложность абстракции внутри нового класса.

Массивы массивов намного гибче и проще в плане всевозможных трансформаций/сортировок и тп.
Не придётся голову ломать над глючной адресной арифметикой многомерных массивов.

Всегда нужно стремится понижать сложность архитектуры. Для этого и существуют классы.
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
26.11.2011, 00:07     Как создать 100 массивов разными значениями ? #10
Bers, как мне кажется, ТСу рановато задумываться о классах. Плюс к тому, кто-то и на Си пишет...
Bers
Заблокирован
26.11.2011, 00:10     Как создать 100 массивов разными значениями ? #11
Цитата Сообщение от silent_1991 Посмотреть сообщение
Bers, как мне кажется, ТСу рановато задумываться о классах. Плюс к тому, кто-то и на Си пишет...
Кто пишет на СИ, тот пускай не публикует приплюснутый код.

На с++ если задумался о многомерных массивах, значит пора задуматься и о классах тоже.
silent_1991
26.11.2011, 00:10
  #12

Не по теме:

Кстати, вы всё это сказали в контексте "не юзайте сырые массивы, юзайте векторы векторов"? Если да, отлично, я только за. Если нет - мне есть что возразить.

proger2030
 Аватар для proger2030
11 / 11 / 2
Регистрация: 15.11.2010
Сообщений: 256
26.11.2011, 00:11  [ТС]     Как создать 100 массивов разными значениями ? #13
я еще не полностью знаком с ООП. Вообще я начинающий. А как решить тогда эту задачу без использование 2D массивов ?
Дано 100 матриц и 100 векторов, умножение каждой матрицы на каждый вектор.
это просто если у тебя 1 матрица 1 вектор)
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
// Умнажаем матрицу на вектор
 
     for(int j = 0 ; j < straka; j++)
     {
          Solution[j] = 0;
 
          for(int i = 0; i < stolbes; i++)
          Solution[j] += MasA[j][i]*VectorB[i];
     }
        
     //Вывод решения
     for(int i = 0; i < straka; i++)
     std::cout << i << ' ' << Solution[i] << std::endl;
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
26.11.2011, 00:12     Как создать 100 массивов разными значениями ? #14

Не по теме:

Цитата Сообщение от Bers Посмотреть сообщение
Кто пишет на СИ, тот пускай не публикует приплюснутый код.
Честное слово, не вижу в первом посте ни одной причины считать код плюсовым. Теги не в счёт (тут плюсовый код и в шарповский тег оформляли, и в голый code).



Добавлено через 33 секунды

Не по теме:

Теперь вижу причину

Bers
Заблокирован
26.11.2011, 00:19     Как создать 100 массивов разными значениями ? #15
Цитата Сообщение от silent_1991 Посмотреть сообщение
Кстати, вы всё это сказали в контексте "не юзайте сырые массивы, юзайте векторы векторов"? Если да, отлично, я только за. Если нет - мне есть что возразить.
Юзать вектора векторов, или стековые вектора стековых векторов. Это не суть.
Цитата Сообщение от silent_1991 Посмотреть сообщение
Честное слово, не вижу в первом посте ни одной причины считать код плюсовым. Теги не в счёт (тут плюсовый код и в шарповский тег оформляли, и в голы code).
Я на тегги как раз таки и смотрю.
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
26.11.2011, 08:24     Как создать 100 массивов разными значениями ? #16
Цитата Сообщение от proger2030 Посмотреть сообщение
Я могу цикл запустит но у них получается значения одинаковы.
Не верю.

Добавлено через 5 минут
Цитата Сообщение от Bers Посмотреть сообщение
Настоятельно не рекомендую использовать трехмерные массивы.
Более того, крайне не рекомендую использовать двухмерные массивы.
Одномерный массив намного проще для понимания, и гибче в управлении.
Не имеет значения, какой массив абстрактно проще. Абстрактно проще всех скаляр, но практически бесполезнее. Массив должен иметь ту размерность, которая соответствует семантике задачи и ни какую другую. Если задача сформулирована так, что нужен тысячимерный, значит массив должен быть тысячимерным и никаким другим.

Добавлено через 3 минуты
Цитата Сообщение от proger2030 Посмотреть сообщение
я еще не полностью знаком с ООП. Вообще я начинающий. А как решить тогда эту задачу без использование 2D массивов ?
Дано 100 матриц и 100 векторов, умножение каждой матрицы на каждый вектор.
это просто если у тебя 1 матрица 1 вектор)
Значит нужны и двумерные массивы, и одномереные. Как сделать но сотне - другой вопрос. Можно сделать массив структур, а в него свалить и двумерные, и одномреные массивы. А можно двумерные сделать элементами трёхмерного, а одномреные - двумерного. Используй синонимичность многомерного массива и массива массивов, хоть её си и не понимают: трёхмерный считай массивом думерных, каждый из них - именно двумерным, а не массивом массивов, а двумерный, что для векторов - массивом одномерных.

Добавлено через 16 минут
Кстати, и двумерный, и трехмерный массивы можно линерализовать, но работать с ними будет сложнее на столько, что только имея опыт работы с шестимерными массивами можно браться за линерализацию двумерных, а за линерализацию трёхмерных - точно не знаю, думаю, что только с опытом ручного теста десятимерных.

Добавлено через 3 минуты
И, наоборот, повышение размерности выше того, что требует задача, тоже ведёт к усложнению. Был у меня один четырёхмерный массив в задаче, требовавшей двумерного. Я с ним не справился, при том, что перед этим вполне осилил шестимерный.
Bers
Заблокирован
26.11.2011, 12:29     Как создать 100 массивов разными значениями ? #17
taras atavin, все намного проще. Не так важно, абстракцию какой сложности нужно обработать. Важно, что если абстракция по сложности превысила понимание её своим умишком, и не умещается целиков в котелке - значит пришло время слегка подшаманить, и разбить её на кучку более мелких, простых абстракций.

Так автор, уже понял как работать с двухмерным массивом, но трехмерный массив для него оказался слишком сложен, и он спотыкнулся на нем. Не вопрос - за 5 минут создаётся новая абстракция на базе понятного двухмерного массива, а массив таких абстракций и будим искомым 3х-мерным, только восприниматься он будит вообще как одномерный массив. Итого: моментальное падение сложности абстракции с трех-мерного массива, до одномерного.

5 минут легких телодвижений, и можно спокойно работать дальше.
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
26.11.2011, 14:42     Как создать 100 массивов разными значениями ? #18
Bers, я где нибудь сказал, что в этой задаче нужна трёхмерность в явном виде? Но декларации вида
C++
1
double *matrix;
допустимы только при наличии опыта успешной работы с
Pascal
1
var a:array[1..n1,1..n2,1..n3,1..n4,1..n5,1..n6] of real;
, или
PureBasic
1
dim a(n1,n2,n3,n4,n5,n6)
.

Добавлено через 12 минут
И с массивом то он знаком. Массив, кроме константного, - множество переменных под общим именем и с индивидуальными индексами. Но с другой стороны массив - обычная переменная, ничем принципиально не отличающаяся от скаляра. С одномерным массивом знаком - не имеет значения, каков тип элементов, иначе называемый базовым типом. В данном случае базовый тип - тип массива. Итого имеем три абстракции:
1 массив из ста элементов,
2 матрица, представляемая массивом,
3 вектор, представляемый массивом.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.11.2011, 14:47     Как создать 100 массивов разными значениями ?
Еще ссылки по теме:

Как создать 2-ое дерево со значениями 1-го? Не могу разобраться с указателями C++
C++ Как создать динамический трехмерный массив и заполнить его случайными значениями?
C++ Заменить значения всех элементов побочной диагонали матрицы значениями, равными 100

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

Или воспользуйтесь поиском по форуму:
Bers
Заблокирован
26.11.2011, 14:47     Как создать 100 массивов разными значениями ? #19
taras atavin, не вразумел
Yandex
Объявления
26.11.2011, 14:47     Как создать 100 массивов разными значениями ?
Ответ Создать тему
Опции темы

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