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

Изменение значений в контейнере list

08.04.2017, 17:07. Просмотров 1661. Ответов 8

Доброго времени суток.
Начну с задания.
Нужно сделать подобие склада в котором хранятся фрукты, их количество, цена, артикул и тд.
Предоставить возможность изменять название товара, его количество, или цену, удалять товар.
Если изменилось количество товара то должна измениться и цена.
Переменные с разными типами данных создал в классе, после создал контейнер и совместил его с классом(Не помню как это называется).
Хотел попробовать изменить название фрукта, 2 переменные user = то что ищем в контейнере и newuser то на что заменяем.
Но нечего не получилось, выводит те значения которые ложились изначально в контейнер
0
Миниатюры
Изменение значений в контейнере list  
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.04.2017, 17:07
Ответы с готовыми решениями:

std::list - преобразование типов в контейнере
Здравствуйте. Суть проблемы попробую передать в коде class A { }; class B : public A { ...

Запись данных и проверка в контейнере list
Добрый день! Пытаюсь создать просто приложение на c++ в Win32 Application. У меня есть несколько...

Тип значения в контейнере map - контейнер list
Возможно ли использовать следующий код: struct p { int id; }; int main() { ...

Дескриптор HANDLE в контейнере List
Здравствуйте, подскажите, пожалуйста, возможно ли использовать HANDLE из контейнера list? Если да,...

8
70 / 57 / 48
Регистрация: 12.03.2017
Сообщений: 566
08.04.2017, 18:16 2
На скриншоте nлохо видно код , скинь исходники.
0
0 / 0 / 1
Регистрация: 07.02.2017
Сообщений: 40
08.04.2017, 18:20  [ТС] 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
#include <iostream>
#include <list>
#include <iterator>
#include <string>
 
using namespace std;
 
void Start ();
 
class MyClass {
    public:
    string name; int kolvo; double kesh; int artik; string mesto; };
 
 
void main() { setlocale(0,"");
 
    Start();
 
cout << endl; system("pause"); }
 
 
void Start() { 
    list<MyClass>sklad; sklad.push_back({"Яблоко" , 12 , 13.69 , 5361, "Холодильник"}); sklad.push_back({ "Клубника" , 2 , 3.69 , 361, "Холодильник 2" });
    string user;    cin >> user; cout << "->" ; string newuser; cin >> newuser;
    
    for (auto q : sklad) if(q.name == user) q.name = newuser;
    
    
    for (auto q : sklad) cout << q.name << " ";
 
    cout << "\nUser -> " << user << "\tnewuser -> " << newuser; 
}
0
2533 / 1193 / 357
Регистрация: 30.11.2013
Сообщений: 3,817
08.04.2017, 18:30 4
Akalit, писать statement'ы в одну строку первые признаки рака мозга. Перепишите, по-человечески, если собрать показать это людям - и вам помогут
0
0 / 0 / 1
Регистрация: 07.02.2017
Сообщений: 40
08.04.2017, 18:37  [ТС] 5
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
#include <iostream>
#include <list>
#include <iterator>
#include <string>
 
using namespace std;
 
void Start ();
 
class MyClass {
    public:
    string name; 
    int kolvo; 
    double kesh; 
    int artik; 
    string mesto; };
 
 
void main() { setlocale(0,"");
 
    Start();
 
cout << endl; system("pause"); }
 
 
void Start() { 
    list<MyClass>sklad; 
    sklad.push_back({"Яблоко" , 12 , 13.69 , 5361, "Холодильник"}); 
    sklad.push_back({ "Клубника" , 2 , 3.69 , 361, "Холодильник 2" });
    string user;    cin >> user; cout << "->" ; string newuser; cin >> newuser;
    
    for (auto q : sklad) 
        if(q.name == user) 
            q.name = newuser;
    
    
    for (auto q : sklad) 
        cout << q.name << " ";
 
    cout << "\nUser -> " << user << "\tnewuser -> " << newuser; 
}
0
330 / 282 / 78
Регистрация: 02.08.2016
Сообщений: 1,008
08.04.2017, 18:38 6
Цитата Сообщение от rikimaru2013 Посмотреть сообщение
Akalit, писать statement'ы в одну строку первые признаки рака мозга. Перепишите, по-человечески, если собрать показать это людям - и вам помогут
Я в каком-то учебнике видел такой же код, там несколько строк собирались в одну, видимо, чтоб страниц меньше было...
А вообще, этим почему-то болеют многие новички. Неужели людям так сложно включить автоформат в своей любимой IDE? Или юзать clang-format(вроде даже для студии есть плагин)?
0
281 / 235 / 114
Регистрация: 07.09.2016
Сообщений: 587
08.04.2017, 18:44 7
Лучший ответ Сообщение было отмечено Akalit как решение

Решение

C++
1
2
3
 for (auto q : sklad) 
        if(q.name == user) 
            q.name = newuser;
тут q - это значение. локальная переменная. меняется она. нужна ссылка:
for (auto& q : sklad)
C++
1
2
3
4
5
6
7
 for (auto& q : sklad)
 {
        if(q.name == user)
        {
            q.name = newuser;
        }
  }
ну и до кучи: не стесняйтесь ставить фигурные скобки.
1
0 / 0 / 1
Регистрация: 07.02.2017
Сообщений: 40
08.04.2017, 18:48  [ТС] 8
Большое спасибо!
А зачем их ставить ?, ведь и без них всё работает
0
281 / 235 / 114
Регистрация: 07.09.2016
Сообщений: 587
08.04.2017, 18:52 9
это из той же серии, что и запись в одну строку, как у вас было в начале. только более слабо выражено. тоже вроде компилится, но без скобок легко проглядеть ошибку, при которой все вроде компилится, но глючит
например:
C++
1
2
3
4
for (auto& q : sklad) 
        if(q.name == user) 
            q.name = newuser;
            std::cout << "bingo" << std::endl;
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
08.04.2017, 18:52

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

Изменение пути распаковки файлов, находящихся в контейнере, созданном Bat to Exe Converter
Возникла проблема, чтобы при запуске bat конвертированного в exe он запускал другие exe файлы из...

List<T> изменение элемента
Есть List List&lt;string&gt; parseDataList; Мне нужно дописать к каждому элементу определенные данные. ...

Изменение членов элемента List
Можно ли изменять члены элемента списка (List)? что-нибудь аналогичное struct T1 {public int x1;...

Изменение значения в коллекции List<>
Здравствуйте Форумчане. Относительно недавно открыл для себя удивительный мир коллекций C# и вроде...


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

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

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