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

Не заполняется вектор

30.04.2021, 14:09. Показов 2532. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
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
#include <iostream>
#include <iomanip>
#include <array>
#include <time.h>
#include <vector>
#include <iterator>
#include <algorithm>
#include <list>
using namespace std;
 
 
struct Item
{
    public:
    int id,
        t1,
        t2;
    bool operator< (Item p) const {
        return min(t1,t2) < min(p.t1,p.t2);
    }
};
 
void printInformation( const Item item[], int amount);
void Sort( const Item item[], int amount);
 
int main()
{
    setlocale (0,"rus");
    srand(unsigned(time(0)));
 
    cout << "Введите количество деталей: ";
    int amount {};
    cin >> amount;
    Item data[amount] {};
 
    for (int i {}; i < amount; i++){
        data[i].t1 = rand() %20 +1;
        data[i].t2 = rand() %20 +1;
        data[i].id = i + 1;
    }
    printInformation(data,amount);
    Sort(data,amount);
 
}
 
void printInformation( const Item item[], int amount)
{
    for (int i = 0; i < amount; i++)
    {
        cout << "\nНомер детали:"                 << setw(3)<< item[i].id;
        cout << "\nВремя обработки на 1 станке: " << setw(3)<< item[i].t1;
        cout << "\nВремя обработки на 2 станке: " << setw(3)<< item[i].t2;
        cout << endl;
    }
}
 
void Sort( const Item item[], int amount)
{
 
    vector <Item> v1 (item[amount].t1);
    for (int i = 0; i < amount; i++) {
        cout << setw(3) << item[i].t1;
    }
    cout << endl;
 
    vector <Item> v2 (item[amount].t1);
    for (int i = 0; i < amount; i++) {
        cout << setw(3) << item[i].t2;
    }
 
    vector <Item> res ();
    for (int i = 0; i < amount; i++){
        if ( v1[i] <= v2[i] )
            v1.push_back(res[i]);
        else
            v2.push_back(res[i]);
    }
 
 
}
Прошу, помогите. Никак не получается заполнить вектор res. Ошибка где-то в 71-77 строчках
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
30.04.2021, 14:09
Ответы с готовыми решениями:

не заполняется вектор
Добрый день! вот этот код вылетает в отладчик на строке 15. z заполнено всякой ерундой, в том числе 10-значными числами непонятными ...

Не могу понять, почему так заполняется вектор
Всем привет, возникла вот такая вот проблема с циклом: //функция который ищет мин и 2 макс элемента в спектре double...

Таблица заполняется на одних компьютерах и не заполняется на других
Всем доброго дня. Столкнулся с довольно странной проблемой. Довольно долго пользуюсь базой данных, в которой показатели за год...

11
 Аватар для Annemesski
2674 / 1336 / 480
Регистрация: 08.11.2016
Сообщений: 3,692
30.04.2021, 14:34
Qrote, зачем Вы пытаетесь создать "сырой" массив в функции main() когда у Вас подключен вектор и в функции Sort Вы используете вектор? Используйте вектор везде.
0
фрилансер
 Аватар для Алексей1153
6462 / 5670 / 1131
Регистрация: 11.10.2019
Сообщений: 15,100
30.04.2021, 14:37
Цитата Сообщение от Qrote Посмотреть сообщение
Никак не получается заполнить вектор res
а в чём выражается это?

Добавлено через 2 минуты
Цитата Сообщение от Qrote Посмотреть сообщение
vector <Item> res ();
скобки надо убрать

и определить оператор <= для Item
0
0 / 0 / 0
Регистрация: 23.04.2021
Сообщений: 27
30.04.2021, 14:54  [ТС]
Cейчас попытался исправить, программа работает, но неправильно. Когда время на первом меньше, чем на втором он выдаёт pr1.png. Когда наоборот, pr2.png .
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
void Sort( const Item item[], int &amount)
{
 
    vector <int> rest1,rest2 (amount);
    for (int i = 0; i < amount; i++){
        if ( item[i].t1 <= item[i].t2 )
           rest1.push_back(item[i].t1);
        else
          rest2.push_back(item[i].t2);
    }
    cout << endl;
 
    for (int i = 0; i < amount; i++) {
        cout << setw(3) << rest1[i];
    }
 
    cout << endl;
 
    for (int i = 0; i < amount; i++) {
        cout << setw(3) << rest2[i];
    }
Миниатюры
Не заполняется вектор   Не заполняется вектор  
0
фрилансер
 Аватар для Алексей1153
6462 / 5670 / 1131
Регистрация: 11.10.2019
Сообщений: 15,100
30.04.2021, 15:00
Цитата Сообщение от Qrote Посмотреть сообщение
vector <int> rest1,rest2 (amount);
задаёшь изначальный размер вектору rest2, а потом в него ещё дополнительно пушаешь, красота )
это всё при том, что в struct Item все поля неинициализированные
0
 Аватар для Kuzia domovenok
4268 / 3327 / 926
Регистрация: 25.03.2012
Сообщений: 12,536
Записей в блоге: 1
30.04.2021, 15:01
а условие задачи мы сами должны придумать?
0
фрилансер
 Аватар для Алексей1153
6462 / 5670 / 1131
Регистрация: 11.10.2019
Сообщений: 15,100
30.04.2021, 15:14
Лучший ответ Сообщение было отмечено Qrote как решение

Решение

Qrote,
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
#include <iostream>
#include <iomanip>
#include <time.h>
#include <vector>
#include <algorithm>
 
using std::cout;
using std::cin;
 
struct Item
{
    int id{};
    int t1{};
    int t2{};
    bool operator< (const Item& p) const
    {
        return std::min(t1,t2) < std::min(p.t1,p.t2);
    }
};
 
void printInformation(const std::vector<Item>& data)
{
    for (auto& i:data)
    {
        cout << "\nНомер детали:"                 << std::setw(3)<< i.id;
        cout << "\nВремя обработки на 1 станке: " << std::setw(3)<< i.t1;
        cout << "\nВремя обработки на 2 станке: " << std::setw(3)<< i.t2;
        cout << '\n';
    }
}
 
void Sort(std::vector<Item>& data)
{
    std::sort(data.begin(), data.end());
}
 
int main()
{
    setlocale (0,"rus");
    std::srand(unsigned(time(0)));
 
    cout << "Введите количество деталей: ";
    int amount {};
    cin >> amount;
    std::vector<Item> data(amount);
 
    int new_id=1;
    for (auto& i:data)
    {
        i.t1 = std::rand() %20 +1;
        i.t2 = std::rand() %20 +1;
        i.id = new_id;
        new_id++;
    }
    
    printInformation(data);
    cout << "------------------"<<'\n';
    Sort(data);
    printInformation(data);
}
1
0 / 0 / 0
Регистрация: 23.04.2021
Сообщений: 27
30.04.2021, 15:18  [ТС]
Каждая из n деталей должна пройти обработку последовательно на каждом из 2 станков. Известно время tij, i=1..m, j=1..n, необходимое для обработки каждой детали на каждом станке. Определить порядок обработки деталей, при котором время завершения обработки всех деталей минимально. Указать время начала обработки каждой детали на каждом станке.
Вот условие
0
фрилансер
 Аватар для Алексей1153
6462 / 5670 / 1131
Регистрация: 11.10.2019
Сообщений: 15,100
30.04.2021, 15:33
Qrote, согласно ТЗ моя сортировка неправильная, конечно же. Я даже сходу и не соображу, как надо )

Добавлено через 5 минут
можно попробовать вариант - отсортировать по убыванию величины t1-std::abs(t1-t2)

то есть, первыми пойдут детали с наибольшими t1, но среди них приоритетнее будут те, у которых разница t1 и t2 минимальная (в итоге будут примерно чередоваться отсортированные t1,t2,t1,t2,t1,t2.... , обеспечивая тем самым небольшой простой станков)
0
0 / 0 / 0
Регистрация: 23.04.2021
Сообщений: 27
30.04.2021, 15:33  [ТС]
Алексей1153, cпасибо, хотя бы программа запускается))
А насчёт сортировки, я её брал отсюда https://e-maxx.ru/algo/johnson_problem_2.

Я хотел сначала отсортировать по возрастанию время обработки на 1 и 2 станках и соответственно разместить их по двум векторам. А потом совместить их как на сайте, сначала на 1 станке, потом в обратном на втором.
0
фрилансер
 Аватар для Алексей1153
6462 / 5670 / 1131
Регистрация: 11.10.2019
Сообщений: 15,100
30.04.2021, 15:38
Лучший ответ Сообщение было отмечено Qrote как решение

Решение

Qrote, попробуй так
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
struct Item
{
    int id{};
    int t1{};
    int t2{};
 
    int GetCompValue()const
    {
        return t1-std::abs(t1-t2);
    }
 
    bool operator< (const Item& p) const
    {
        return GetCompValue()>p.GetCompValue();
    }
};
0
0 / 0 / 0
Регистрация: 23.04.2021
Сообщений: 27
30.04.2021, 15:52  [ТС]
Алексей1153, вроде проверил, правильно. В любом случае, огромнейшее спасибо!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
30.04.2021, 15:52
Помогаю со студенческими работами здесь

Не заполняется массив (только при выводе заполняется)
Создаю массив, пробовал и с двумерным, есть массив объектов класса, что имеет поля прямоугольник и его цвет. Нужно заполнить его и...

Матрицу [3][4] из матрицы сформировать вектор первые элементы это первый ряд и тд вектор отсортировать вектор по >
вектор создал только не могу отсортировать вектор выводит непонятные числа Вот код: #include &lt;stdio.h&gt; #include...

Дан вектор А. Получить новый вектор,состоящий из квадратов отрицательных компонентов. Упорядочить вектор в порядке возрастания значений
Помогите составить блок-схему и программу к ней на паскале abc.Пожалуйста! Очень срочно....Условие задачи: дан вектор А. Получить новый...

Класс "вектор" с конструкторами, позволяющими создать нулевой вектор и вектор с произвольным числом элементов
Привет! Задача следующая. Нужно реализовать класс &quot;вектор&quot; с конструкторами, которые позволяют создать нулевой вектор и вектор с...

Задана числовая матрица A и булев вектор B. Сформировать числовой вектор C по правилу
Всем привет. Задали лабу написать на ассемблере, задача изичная, на плюсах в два счёта написал, на ассемблере никак не соображу. ...


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru