Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.55/11: Рейтинг темы: голосов - 11, средняя оценка - 4.55
12 / 12 / 5
Регистрация: 15.11.2010
Сообщений: 256
1

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

25.11.2011, 23:10. Показов 2234. Ответов 18
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
вот фрагмент кода! Подскажите плс
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 ну вообще много. Я могу цикл запустит но у них получается значения одинаковы.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.11.2011, 23:10
Ответы с готовыми решениями:

Как сформировать несколько массивов с разными значениями
не пойму, почему формирует два одинаковых массива? class Program { static...

Сравнение двух массивов с разными значениями
Ребят, привет! Столкнулся со сложностью: мне необходимо сравнить файлы юзера с файлами на сервере ...

Создать массив размерностью 100 элементов со значениями от 0 до 100
Создать массив размерностью 100 элементов со значениями от 0 до 100. Вычислить количество простых...

Как вставить 2 поля с одинаковыми названиями но с разными значениями?
Проблема состоит в том что есть база данных в ней таблицы People тут общие поля типа Фамилия Имя...

18
Эксперт С++
5043 / 2622 / 241
Регистрация: 07.10.2009
Сообщений: 4,310
Записей в блоге: 1
25.11.2011, 23:12 2
proger2030, трехмерный массив не пробовали? Говорят, помогает.
0
12 / 12 / 5
Регистрация: 15.11.2010
Сообщений: 256
25.11.2011, 23:19  [ТС] 3
Цитата Сообщение от fasked Посмотреть сообщение
proger2030, трехмерный массив не пробовали? Говорят, помогает.
Да ты подожди со своим трехмерным массивом. Дойдет дело до этого посмотрим
0
Эксперт С++
5055 / 3115 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
25.11.2011, 23:27 4
Цитата Сообщение от proger2030 Посмотреть сообщение
Дойдет дело до этого посмотрим
Как посмотрите - возвращайтесь, возобновим разговор.
0
fasked
25.11.2011, 23:29
  #5

Не по теме:

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

0
12 / 12 / 5
Регистрация: 15.11.2010
Сообщений: 256
25.11.2011, 23:37  [ТС] 6
Цитата Сообщение от fasked Посмотреть сообщение

Не по теме:


Хам :-/

Господа реально помогите. я не прошу вас код написать сего лишь подкинь идею хотя бы.
0
Эксперт С++
5055 / 3115 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
25.11.2011, 23:40 7
proger2030, вы читаете, что вам пишут? Используйте трёхмерные массивы (т.е. массивы двухмерных массивов, с логической точки зрения), в самом верхнем цикле перебирая двухмерные массивы, а во вложенных заполняя каждый из них.
0
Кошковед
521 / 509 / 63
Регистрация: 12.04.2010
Сообщений: 1,390
25.11.2011, 23:40 8
C++
1
2
3
4
5
6
7
#include <time.h>
 
int main()
{
srand ( time ( NULL ) );
...
}
0
Заблокирован
25.11.2011, 23:57 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, вы читаете, что вам пишут? Используйте трёхмерные массивы (т.е. массивы двухмерных массивов, с логической точки зрения), в самом верхнем цикле перебирая двухмерные массивы, а во вложенных заполняя каждый из них.
Настоятельно не рекомендую использовать трехмерные массивы.
Более того, крайне не рекомендую использовать двухмерные массивы.

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

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

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

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

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

Не по теме:

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

0
12 / 12 / 5
Регистрация: 15.11.2010
Сообщений: 256
26.11.2011, 00:11  [ТС] 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;
0
Эксперт С++
5055 / 3115 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
26.11.2011, 00:12 14

Не по теме:

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



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

Не по теме:

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

1
Заблокирован
26.11.2011, 00:19 15
Цитата Сообщение от silent_1991 Посмотреть сообщение
Кстати, вы всё это сказали в контексте "не юзайте сырые массивы, юзайте векторы векторов"? Если да, отлично, я только за. Если нет - мне есть что возразить.
Юзать вектора векторов, или стековые вектора стековых векторов. Это не суть.
Цитата Сообщение от silent_1991 Посмотреть сообщение
Честное слово, не вижу в первом посте ни одной причины считать код плюсовым. Теги не в счёт (тут плюсовый код и в шарповский тег оформляли, и в голы code).
Я на тегги как раз таки и смотрю.
0
4226 / 1795 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
26.11.2011, 08:24 16
Цитата Сообщение от proger2030 Посмотреть сообщение
Я могу цикл запустит но у них получается значения одинаковы.
Не верю.

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

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

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

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

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

5 минут легких телодвижений, и можно спокойно работать дальше.
0
4226 / 1795 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
26.11.2011, 14:42 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 вектор, представляемый массивом.
0
Заблокирован
26.11.2011, 14:47 19
taras atavin, не вразумел
0
26.11.2011, 14:47
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
26.11.2011, 14:47
Помогаю со студенческими работами здесь

Как заполнить поля разными значениями не прибегая к написанию нескольких методов
class Worker { string Fam; string ini = new string; string work; ...

Как посчитать количество пар соседних елементов с разными значениями в каждой строке, в коде какая-то ошибка(
using System; using System.Collections.Generic; using System.Linq; using System.Text; using...

Заполнить 100 эл-тов текстового файла значениями последовательности 1 деленное на N, где N=1,..100 (консоль)
Заполнить 100 элементов текстового файла значениями последовательности 1 деленное на N, где...

Сгенерировать N случайных чисел из диапазона от -100 до 100. Вывести их на экран, определить разницу между максимальным и минимальным значениями
Прошу помочь с задачей. Заранее спасибо! Сгенерировать Nслучайных чисел из диапазона от -100 до...


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

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