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

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

06.03.2018, 19:37. Просмотров 457. Ответов 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, введенного с консоли)
Подскажите пожалуйста, как более грамотно присвоить значения объектам структуры, чтобы каждый объект отвечал за отдельную кассету, или так как я сделал тоже нормально?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
06.03.2018, 19:37
Ответы с готовыми решениями:

Как перегрузить операцию = для присваивания элементам структуры внутри класса значений?
Помогите, если не затруднительно. Столкнулся с проблемой, когда пытался присвоить в конструкторе...

Присвоение значений элементам двумерного вектора
Недавно добрие люди помогли мне со следующим кодом 1 код vector&lt;vector&lt;char&gt;&gt; vv; // ......

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

Присвоение элементам массива значений структуры
Доброго дня. У меня возникла проблема с присвоением элементам массива значений структуры. В чем...

1
Форумчанин
Эксперт CЭксперт С++
8160 / 5008 / 1436
Регистрация: 29.11.2010
Сообщений: 13,458
07.03.2018, 09:01 2
Зачем вам извне передавать объект, который внутри функции будет использован просто для заполнения данных?
Вы также могли создать объект и внутри самой функции.
От глобальных переменных (вектора) лучше избавиться и (первым шагом в сторону улучшения кода) передавать ссылку на объект вектора.
По хорошему за управление кассетами должен отвечать отдельный класс, который как поле содержит вектор. А для разных действий (добавление/удаление) вызывает необходимые методы.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
07.03.2018, 09:01

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

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

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

Ошибка при описании структуры (Объект this не может использоваться до присваивания значений)
Что-то я не понял чего это студии мой конструктор не нравится: struct CountInfo { ...

Ошибка присвоения значений элементам структуры
Пишу на СИ под ARM проц. Не могу понять в чем ошибка. file.h: struct Config { unsigned...


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

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

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