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

Двумерный массив вектора

17.04.2016, 15:01. Показов 518. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте,
подскажите пожалуйста решить следующую задачу.

Мне надо построить матрицу 233 на 233 и затем вписывать количество людей из одной станции в другую.

Например:
Я нахожу , что со станции 1 едут на станцию 12 150 человек. Как мне сделать так , чтобы потом в матрице 1-12 писалось 150 человек?
И так далее , пройдя все станции.

Спасибо заранее.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
17.04.2016, 15:01
Ответы с готовыми решениями:

Копирование чисел из вектора в двумерный массив
из файла считала в вектор v числа. в файле данные числа хранятся в виде матрицы. и теперь их нужно передать в двумерный массив. вот делаю...

Сделайте, чтобы двумерный вектор обогнал двумерный массив при заполнении случайными числами
Всем привет! Попробовал сравнить время заполнения векторов в векторе и массивов в массиве (динамические) случайными числами, получаемыми...

Как можно вложить двумерный массив в двумерный?
Нужно написать программу перемножения двух матриц размерностью МxМ, элементы которых, матрицы размерностью КxК... Подскажите (желательно с...

3
 Аватар для Fulcrum_013
2083 / 1575 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
17.04.2016, 20:26
Не знаю как у вас организована матрица, но обычно
C++
1
M[1][12]=150;
0
0 / 0 / 0
Регистрация: 16.03.2016
Сообщений: 19
17.04.2016, 20:53  [ТС]
Я вот не могу понять логику. Я сделал следующее :
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
45
for (int busRequest = 0; busRequest < dimenstionPeople; busRequest++)/берем первого человека
    {
        double Min = DBL_MAX;
        double Min2 = DBL_MAX;
        int station = 0;
        int person = 1;
        int station1 = 0;
        int person1 = 1;
        
        for (int busStation = 0; busStation < newStations; busStation++)//станции
        {
 
            distance3 = sqrt(pow((apointCollection2[busStation].x - apointCollection[busRequest].x1), 2) + pow((apointCollection2[busStation].y - apointCollection[busRequest].y1), 2));//нахожу первую минимальную дистанцию к человеку
            if (distance3 < Min)
            {
                Min = distance3;
                station = busStation;
 
            }
            distance2 = sqrt(pow((apointCollection2[busStation].x - apointCollection[busRequest].x2), 2) + pow((apointCollection2[busStation].y - apointCollection[busRequest].y2), 2));//нахожу вторую
            if (distance2 < Min2)
            {
                Min2 = distance2;
                station1 = busStation;
 
            }
        }
 
        
        if (people.find(station) == people.end())// и использую map 
        {
            people.insert(pair<int, int>(station, person));
        }
        else
        {
            people[station]++;
        }
        if (people2.find(station1) == people2.end())
        {
            people2.insert(pair<int, int>(station1, person1));
        }
        else
        {
            people2[station1]++;
        }
У меня выходит 0-145 120 человек и 145-0 100 человек. То есть со станции 0 едут на станцию 145 120 человек и со станции 145 на станцию 0 едут 100 человек.

Но у меня выходит это как порядок. Как мне построить логику , чтобы у меня была как матрица . Грубо говоря, чтобы матрица состояла из 233 на 233 и заполнялась правильно. Нужен двумерный массив вектор, так как заполнять буду динамически.

Сможешь помочь?
Все делал через два одномерных массива.
0
 Аватар для Fulcrum_013
2083 / 1575 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
17.04.2016, 21:29
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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
Template<class Type>
class TMatrix {
private:
    Type *FCells;
    Type **FRows;
    int FWidth;
    int FHeight;
protected:
 
public:
    TMatrix(int aWidth, int aHeight):FCells(nullptr),FRows(nullptr){
                 SetSize(aWidth,aHeight);
        };
    void SetSize(int Width, int Height, bool Discard=false){
            if (Width == NewWidth && Height == NewHeight)
                return;
            if (Discard) {
                delete[]FCells;
                delete[]FRows;
            }
            Type *NewCells = new Type[NewWidth * NewHeight];
            Type **NewRows = new Type*[NewHeight];
            NewRows[0] = NewCells;
            for (int i = 1; i < NewHeight; y++) {
                NewRows[i] = NewRows[i - 1] + NewWidth;
            }
            if (!Discard && Cells) {
             int CopyWidth = min(FWidth, FWidth);
                 int CopySize = sizeof(Type)*min(FHeight, NewHeight);
                 for (int i = 0; i < CopyHeight; i++) {
            memcpy(NewRows[i], Rows[i], CopySize);
             }
           }
           FCells = NewCells;
               FRows = NewRows;
           FWidth = NewWidth;
           FHeight = NewHeight;
        };
    void LoadFromFile(char *FileName){
             FILE* Stream = fopen(FileName, "rb");
             LoadFromStream(Stream);
             fclose(Stream);
        };
    void SaveToFile(char *FileName){
             FILE* Stream = fopen(FileName, "wb");
             SaveToStream(Stream);
             fclose(Stream);
        };
    void LoadFromStream(FILE *Stream){
             fread(&FWidth, sizeof(FWidth), 2, Stream);
             SetSize(FWidth, FHeight, true);
         fread(FCells, sizeof(Type), FWidth*FHeight, Stream);
        };
    void SaveToStream(FILE *Stream){
             fwrite(&FWidth, sizeof(FWidth), 2, Stream);
             fwrite(FCells, sizeof(Type), FWidth*FHeight, Stream);
        };
    inline Type* operator [](int i){return FRows[i];};
    ~TMatrix(){
            delete[]FCells;
            delete[]FRows;
        };
 
    Type* GetRow(int x) {return FRows[x];};
 
    // C++ Builder style properties
/*  __property int Width = {read = FWidth};
    __property int Height = {read = FHeight};
    __property Type* Rows[int i] = {read = GetRow};*/
 
// Other compilers getters
    int GetWidth(){return FWidth;};
    int GetHeight(){return FHeight;};
 
        // MS VC style properties
/*      __declspec(property(get=GetWidth)) int Width;
        __declspec(property(get=GetHeight)) int Height;
        __declspec(property(get=GetRow)) Type* Rows[int i];
*/
};
Держи из загашника. Матрица изменяемого размера. умеет ресайзится, сохраняться в файл, читаться из файла. Реалок в отличии от вектора при каждом ресайзе, но с матрицами по другому по большому счету без толку.
Свойства под нужный компилятор разкомментируешь будет удобнее. Контроль границ внешний.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
17.04.2016, 21:29
Помогаю со студенческими работами здесь

Массив: Как скопировать двумерный массив в другой массив?
Как скопировать двумерный массив в другой массив?

Массив: преобразорвать двумерный массив в одномерный и отсортировать его методом пузырька
всем привет. народ помогите с прогой, конкретно с функцией sort (65 строка), она должна двухмерный массив перевести построчно в одномерный...

Массив: Как можно задать и вывести симметричный двумерный массив?
как можно задать и вывести симметричный массив

Чем отличаются двумерный символьный массив и массив указателей на строки
Двумерный символьный массив и массив указателей на строки. Собственно чем они отличаются? Заранее спасибо.

Дан двумерный массив 3х3. Получить одномерный массив из из отрицательных элементов матрицы.
Пожалуйста, помогите решить простым методом задачку, просто не могу понять смысл ее выполнения. Дан двумерный массив 3х3.Получить...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru