3 / 2 / 1
Регистрация: 09.02.2018
Сообщений: 118
1

Структуры и вывод их с определенным условием

05.05.2018, 11:53. Показов 1801. Ответов 6

Author24 — интернет-сервис помощи студентам
Можно ли вывести структуры по заданномму значению с помощьюю if.
Допустим у меня есть 5 структур в которых
-цена 100
-... 100
-... "Название"

Я хочу сделать if цена <= 100 то выводить эту структуру на экран.
Собственно если у меня 5 структур в которых цены, 100 , 150, 200, 90 , 20, то он выведет структуры в которых цены соответственно меньше или равны 100.
Вопрос, можно ли так сделать и как? Спасибо
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
05.05.2018, 11:53
Ответы с готовыми решениями:

Вывод структуры, строка как элемент структуры
Описать структуру с именем TRAIN, содержащую следующие поля: □ название пункта назначения;...

Вывод массива с определенным условием
Есть массив, где две строчки и десять столбцов. Первая строка состоит из чисел, кратных пяти, а...

Разность чисел с определенным условием
Добрый день! Дано: А1=12 B1=10 Есть ли возможность указать некую формулу, чтобы при...

Удаление дублей с определенным условием
Есть такой словарь для перевода. { &quot;%1$d / %2$d&quot; &quot;%1$d из %2$d&quot; } { &quot;%1$d Mbps&quot; ...

6
2848 / 1997 / 986
Регистрация: 21.12.2010
Сообщений: 3,705
Записей в блоге: 10
05.05.2018, 12:38 2
Лучший ответ Сообщение было отмечено Стас029 как решение

Решение

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
#include <algorithm>
#include <iterator>
#include <string>
#include <vector>
 
struct product
{
    int price = 0;
    std::string name;
    friend std::ostream& operator<<(std::ostream& ost, product const& rhs)
    {
        return ost << rhs.price << " - " << rhs.name;
    }
};
 
int main()
{
    std::vector<product> vct{ {121, "name 1"}, { 34, "name 2" }, { 345, "name 3" }, { 23, "name 4" }, { 4, "name 5" }, };
    std::copy_if(vct.begin(), vct.end(), std::ostream_iterator<product>{std::cout, "\n"}, [](auto const& val) {return val.price <= 100; });
}
1
3 / 2 / 1
Регистрация: 09.02.2018
Сообщений: 118
10.05.2018, 16:56  [ТС] 3
Выводится 2 структуры.
Как к этому коду добавить ваш?


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
81
82
83
84
85
86
87
88
89
90
91
92
93
#include <iostream>
using namespace std;
 
struct date //Структура отражающая дату (месяц и год) выхода фильма на экран
{
       char *month;//Месяц выхода фильма
       int year;   //Год выхода фильма
};
struct date2 //Структура отражающая дату (месяц , год и число) начало сеансов
{
       char *mnth;//Месяц 
       int yer;   //Год 
       int day;   //День
};
 
struct film
{
    char *company; //Компания создавшая фильм
    char *country; //Страна в которой снимался фильм
    int chairs;    //Количество мест в зале
    float price;   //Цена за билет
    char *name;    //Название фильма
    date2 built2;
    date built;    //структура в структуре
    int kolv;      //Сколько дней будет фильм в кинотеатре
};
 
void show(film object) //создаем функцию, которая принимает структуру, как параметр
{
    cout << "От компании: " << object.company << endl;
    cout << "Выпущено в стране: " << object.country << endl;
    cout << "Количество мест в зале: " << object.chairs << endl;
    cout << "Стоимость: " << object.price << " руб " << endl;
    cout << "Дата выхода: " << object.built.month << ' ' << object.built.year << endl;
    cout << "Название фильма: " << object.name << endl;
    cout << "Начало сеансов с: " << object.built2.mnth << ' ' << object.built2.yer << ' ' << object.built2.day << endl;
    cout << "В кинотеатре будет: " << object.kolv << "дней" << endl;
}
 
int main()
{
    setlocale (LC_ALL, "rus");
 
    film first;
 
    first.company = "WarnerBrothers";
    first.name = "Digital";
    first.country = "USA";
    first.chairs = 150;
    first.price = 300;
    first.built.month = "Декабрь";
    first.built.year = 2018;
    first.built2.mnth = "Декабрь";
    first.built2.yer = 2018;
    first.built2.day = 12;
    first.kolv = 7;
 
    struct film *pFirst; //это указатель на структуру
    pFirst = &first;
 
    //Обратите внимание, как нужно обращаться к элементу структуры через указатель
    //используем оператор  ->
    cout << "От компании: " << pFirst->company << endl;
    cout << "Выпущено в стране: " << pFirst->country << endl;
    cout << "Количество мест в зале: " << pFirst->chairs << endl;
    cout << "Стоимость: " << pFirst->price << " руб " << endl;
    cout << "Название фильма: " << pFirst->name << endl;
    cout << "Начало сеансов с: " << pFirst->built2.mnth << ' ' << pFirst->built2.yer << ' '<< pFirst->built2.day << endl;
    cout << "В кинотеатре будет: " << pFirst->kolv<< "дней" << endl;
    cout << "Дата выхода: " << pFirst->built.month << ' ' << pFirst->built.year << "\n\n\n";
 
    film second; //создаем и заполняем второй объект структуры
 
    second.company = "Paramount";
    second.name = "Dragon3";
    second.country = "USA";
    second.chairs = 150;
    second.price = 350;
    second.built.month = "Январь";
    second.built.year = 2019;
    second.built2.mnth = "Январь";
    second.built2.yer = 2019;
    second.built2.day = 1;
    second.kolv = 5;
 
    film third = second; //создаем третий объект структуры и присваиваем ему данные объекта second
 
    show(third);
 
    cout << endl << endl;
    system ("pause");
        return 0;
}
0
2848 / 1997 / 986
Регистрация: 21.12.2010
Сообщений: 3,705
Записей в блоге: 10
10.05.2018, 17:38 4
Лучший ответ Сообщение было отмечено Стас029 как решение

Решение

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
#include <iostream>
#include <vector>
#include <algorithm>
#include <iterator>
using namespace std;
 
struct date //Структура отражающая дату (месяц и год) выхода фильма на экран
{
    char *month;//Месяц выхода фильма
    int year;   //Год выхода фильма
};
struct date2 //Структура отражающая дату (месяц , год и число) начало сеансов
{
    char *mnth;//Месяц
    int yer;   //Год
    int day;   //День
};
 
struct film
{
    char *company; //Компания создавшая фильм
    char *country; //Страна в которой снимался фильм
    int chairs;    //Количество мест в зале
    float price;   //Цена за билет
    char *name;    //Название фильма
    date2 built2;
    date built;    //структура в структуре
    int kolv;      //Сколько дней будет фильм в кинотеатре
 
    friend std::ostream& operator<<(std::ostream& ost, film const& object)
    {
        ost << "От компании: " << object.company << endl;
        ost << "Выпущено в стране: " << object.country << endl;
        ost << "Количество мест в зале: " << object.chairs << endl;
        ost << "Стоимость: " << object.price << " руб " << endl;
        ost << "Дата выхода: " << object.built.month << ' ' << object.built.year << endl;
        ost << "Название фильма: " << object.name << endl;
        ost << "Начало сеансов с: " << object.built2.mnth << ' ' << object.built2.yer << ' ' << object.built2.day << endl;
        ost << "В кинотеатре будет: " << object.kolv << "дней" << endl;
        return ost;
    }
 
};
 
int main()
{
    setlocale(LC_ALL, "rus");
 
    std:vector<film> vct
    {
        { "WarnerBrothers", "USA", 150, 30, "Digital", "Декабрь", 2018, 12, "Декабрь", 2018,  7 },
        { "Paramount", "USA", 150, 35, "Dragon3", "Январь", 2019, 1, "Январь", 2019,  5 }
    };
 
    std::copy_if(vct.begin(), vct.end(), std::ostream_iterator<film>{std::cout, "\n"}, [](auto const& val) {return val.price <= 100.f; });
 
}
1
3 / 2 / 1
Регистрация: 09.02.2018
Сообщений: 118
16.05.2018, 16:23  [ТС] 5
Ответ естественно хороший. Жаль я не знаю как работает вектор.
0
2848 / 1997 / 986
Регистрация: 21.12.2010
Сообщений: 3,705
Записей в блоге: 10
16.05.2018, 16:42 6
Лучший ответ Сообщение было отмечено Стас029 как решение

Решение

можно и массив взять
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
int main()
{
    setlocale(LC_ALL, "rus");
 
    int const siz = 2;
    film* arr = new film[siz];
    arr[0] = { "WarnerBrothers", "USA", 150, 30, "Digital", "Декабрь", 2018, 12, "Декабрь", 2018,  7 };
    arr[1] = { "Paramount", "USA", 150, 35, "Dragon3", "Январь", 2019, 1, "Январь", 2019,  5 };
 
    std::copy_if(arr, arr + siz, std::ostream_iterator<film>{std::cout, "\n"}, [](auto const& val) {return val.price <= 100.f; });
 
    delete[] arr;
    arr = nullptr;
}
1
3 / 2 / 1
Регистрация: 09.02.2018
Сообщений: 118
16.05.2018, 16:50  [ТС] 7
Тут структуры будут просто для вида?
для чего нужен siz?
0
16.05.2018, 16:50
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
16.05.2018, 16:50
Помогаю со студенческими работами здесь

Выпадающий список с определенным условием
Подскажите пожалуйста как сделать и возможно ли это в екселе, выпадающий список со следующим...

Автоматическое заполнение поля с определенным условием
Здравствуйте, уважаемые форумчане! Обращаюсь уже не в первый раз. Очень бы хотелось получить...

XSL Фильтр нод с определенным условием
Доброго дня, форумчане! Не так давно пришлось начать изучение замечательного языка XSL. Потому,...

Событие комбобокса Change() с определенным условием.
Всем привет. Ситуация такая. Есть форма, на ней 2 комбобокса. В первый закачено н-ное количество...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru