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

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

17.04.2016, 15:01. Показов 502. Ответов 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
Ответ Создать тему
Новые блоги и статьи
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизита табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать контроль заполнения реквизита "ПричинаСписания". . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Программное заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru