Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
PariahMe
0 / 0 / 1
Регистрация: 06.03.2018
Сообщений: 4
#1

Использование вектора для присваивания значений элементам структуры - C++

06.03.2018, 19:37. Просмотров 108. Ответов 1
Метки нет (Все метки)

Здравствуйте, форумчане. Сразу отмечу, что я новичек, так что, возможно, мой вопрос покажется вам слегка туповатым, но все же:
Имеется структура:
"Видеокассета":
-​ название фильма;
-​ режиссер;
-​ продолжительность;
-​ цена.

Над этой структурой нужно провести операции: удалить все элементы с ценой выше заданной, добавить 3 элемента в конец файла.

До операций я еще не дошел, копаюсь в первой стадии. Решил присвоить значения объектам структуры через векторы, и вот что "накодил":
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
#include "stdafx.h"
#include <iostream>
#include <string>
#include <vector>
 
using std::cin;
using std::cout;
using std::endl;
using std::string;
using std::getline;
using std::vector;
 
int n;
struct cassettes // сама структура "кассеты"
{
    string name;
    string director;
    float time;
    float cost;
}; vector <cassettes> films;
 
void film(cassettes object) // процедура присваивания
{
    n = 0;
    cout << "Введите количество кассет: ";
    cin >> n;
    for (int i = 0; i < n; i++)
    {
        cin.ignore(256, '\n');
        films.push_back(object);
        cout << "Введите название фильма :";
        getline(cin, films[i].name);
        cout << "Введите имя режиссера данного фильма: ";
        getline(cin, films[i].director);
        cout << "Введите продолжительность фильма: ";
        cin >> films[i].time;
        cout << "Введите цену фильма :";
        cin >> films[i].cost;
        
    }
}
 
 
int main()
{
    setlocale(LC_ALL, "Rus");
    cassettes tmp;
    film(tmp);
    return 0;
}
Проблема моя, собственно, заключается в том, что я инициализировал единственный объект структуры (cassettes tmp) и все данные о кассетах получаются занесенными туда.
Инициализировать большее количество объектов я не могу, ведь неизвестно сколько будет кассет(зависит от значения переменной n, введенного с консоли)
Подскажите пожалуйста, как более грамотно присвоить значения объектам структуры, чтобы каждый объект отвечал за отдельную кассету, или так как я сделал тоже нормально?
http://www.cyberforum.ru/cpp-beginners/thread1971197.html
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.03.2018, 19:37
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Использование вектора для присваивания значений элементам структуры (C++):

Присвоение значений элементам двумерного вектора
Недавно добрие люди помогли мне со следующим кодом 1 код ...

Присвоение значений элементам вложенной структуры
Необходимо присвоить значение элементам массива структур struct message {...

Ошибка с итераторами для целочисленного вектора и вектора структуры
Пытаюсь разобраться с векторами. Для динамической работы с памятью вещь, вроде,...

Использование #define для доступа к элементам класса
Добрый день. Имеется класс вида: class Test { int key; int smth; } ...

Использование вектора для работы с матрицей
Здравствуйте! Предположим, что задание состоит в том, чтобы определить в...

1
MrGluck
Модератор
Эксперт CЭксперт С++
7981 / 4862 / 1423
Регистрация: 29.11.2010
Сообщений: 13,237
07.03.2018, 09:01 #2
Зачем вам извне передавать объект, который внутри функции будет использован просто для заполнения данных?
Вы также могли создать объект и внутри самой функции.
От глобальных переменных (вектора) лучше избавиться и (первым шагом в сторону улучшения кода) передавать ссылку на объект вектора.
По хорошему за управление кассетами должен отвечать отдельный класс, который как поле содержит вектор. А для разных действий (добавление/удаление) вызывает необходимые методы.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.03.2018, 09:01
Привет! Вот еще темы с решениями:

Использование placement-new в перегруженном операторе присваивания
Всем хей. Допустим, у меня определён конструктор копирования для класса T....

Обращение к элементам вектора
как обратиться к N=43 строке вектора нумерация с 0 vector&lt;int&gt; myVector;

Обращение к элементам вектора
Вопрос вот в чем. Есть следующий код: #include &lt;vector&gt; #include &lt;iostream&gt;...

Время доступа к элементам вектора.
Суть проблемы в том, что я не могу объяснить такое расхождение во времени...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru