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

Вывести список автомобилей, указанного пользователем цвета и граничной цены

31.05.2017, 17:02. Показов 6834. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Необходимо написать программу, в которой пользователь вводит данные с клавиатуры в массив структур. Пользователь вводит несколько данных об автомобиля (включая страну, цену, цвет и марку). Эту часть кода я написал (оставлю его ниже). Но необходимо сделать так, чтобы программа выводила на экран список автомобилей, указанного пользователем цвета и граничной цены - как сделать это я не знаю. Подскажите как это сделать, дополнив мой код.

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
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
//Написать программу для обработки информации
// о предлагаемых к продаже автомобилей.
// Информация включает следующие данные:
// - страна-производитель.
// - марка автомобиля.
// - цвет корпуса.
// - цена автомобиля
// Программа должна позволять пользователю:
// - Считывать данные с клавиатуры и
// заносить их в массив структур.
// - Считывать данные из массива структур и
// выводить на экран список автомобилей,
// указанного пользователем цвета и граничной цены.
 
 
#include <iostream> // подключаем библиотеку ввода-вывода
#include <iomanip> // подключаем библиотеку для форматирования потоков
#include <string.h> // подключаем библиотеку с функциями работы со строками
#include <windows.h> // подключаем заголовочный файл для установки кодовой страницы
using namespace std; // объявляем пространство имен std
 
struct inv         // элемент массива структур
{                  // для инвентаризации
    char country[30]; // название страны-производителя
    char mark[30]; // марка автомобиля
    char colour[30]; // цвет корпуса
    float cost;    // стоимость автомобиля
};
 
//глобальные переменные
int size = 5;   //размер массива структур
inv invInfo[5]; //массив структур
 
// Прототипы функций
int menu_select(); // функция считывания пункта меню в переменную
void enter(inv *invInfo); // функция ввода элемента структуры
void list(inv *invInfo); // функция вывода структур
void del(inv *invInfo); // функция очистки структуры
 
int main() // главная функция
{
    // локализация
    SetConsoleCP(1251);  // установка кодовой страницы win-cp 1251 в поток ввода
    SetConsoleOutputCP(1251);  // установка кодовой страниц win-cp 1251 в поток вывода
    int choice;  //переменная для выбора пользователя
    bool flag = true;  //поднимаем флаг работы цикла
 
    // цикл выбора пунктов меню:
    while(flag)  //пока поднят флаг
    {
        choice = menu_select(); //считываем пункт меню в переменную
        switch (choice)
        {
            case 1:  //если пользователь ввел 1
                enter(invInfo); //ввод структуры
                break;
            case 2:  //если пользователь ввел 2
                list(invInfo); //вывод всех структур
                break;
            case 3:  //если пользователь ввел 3
                del(invInfo); //отправляем пользователя в функцию очистки
                break;
            case 4:  //если пользователь ввел 4
                flag=false; //опустить флаг цикла(произойдет выход из программы)
                break;
            default://если пользователь ввел пункт которого не сущействует
                cout<<"Отсутствует данный пункт, попробуйте еще раз"<<endl;
 
        }
    }
    return 0;
}
// функция считывания пункта меню в переменную
int menu_select()
{
    int choice;//переменная для сохраненния выбора пользователя
    cout << "Введите Ваш выбор" << endl//приглашение на ввод и показ меню в консоли
         << "1)Ввод элемента структуры."<<endl
         << "2)Вывести на экран все структуры"<<endl
         << "3)Очистить структуру"<<endl
         << "4)Выход"<<endl;
    cin >> choice;//считывание выбора пользователя
    return choice;//возврат выбора из функции
}
// функция ввода элемента структуры
void enter(inv *invInfo)
{
    int index;//переменная для считывания индекса элемента
     cout << "Введите название страны-производителя: ";//приглашаем на ввод индекса
    cin >> invInfo[index].country;//считываем страну-производителя
    while(index < 0 || index > size-1)//проверка попадания в границы массива
    {
        //пока пользователь не введет корректный индекс не завершится цикл
        cout << "Выход за пределы массива!Попробуйте еще раз!" << endl;//сообщаем о неправильном вводе
        cin >> index;//считываем новое значение индекса
    }
    cout << "Введите марку автомобиля: ";//приглашаем на ввод
    cin >> invInfo[index].mark;//считываем марку
    cout << "Введите цвет корпуса автомобиля: ";//приглашаем на ввод
    cin >> invInfo[index].colour;//считываем цвет
    cout << "Введите стоимость автомобиля: ";//приглашаем на ввод
    cin >> invInfo[index].cost;//считываем количество
}
// функция вывода структур
void list(inv *invInfo)
{
    int nonzero = 0; //переменная для хранения количества ненулевых структур
    for(int i = 0; i < size; i++)//для всех структур
    {
        if(invInfo[i].cost)//выводим только не пустые структуры
        {
            nonzero++;//увеличиваем счетчик ненулевых структур
            //форматировка вывода
            cout << "Страна-производитель автомобиля:" << invInfo[i].country << endl;//вывод страну-производитель
            cout << "Марка автомобиля:" << invInfo[i].mark << endl;//вывод марки автомобиля
            cout << "Цвет корпуса автомобиля:" << invInfo[i].colour << endl;//
            cout << "Цена автомобиля :" << invInfo[i].cost << endl;//вывод цены
            cout << endl;
        }
    }
    if(nonzero)
    /*если есть не пустые структуры выводим общее  количество
    структур и пустых структур */
    {
        cout << "Всего структур: " << size << endl;//вывод общего количества структур
        cout << "Пустых: " << size-nonzero << endl;//вывод количества пустых структур
    }
    else
    //если все структуры пустые выводим сообщение
    {
        cout << "Доступно структур:" << size << endl;//выводим количество доступных структур
    }
}
// функция очистки структуры
void del(inv *invInfo)
{
    int index;//переменная для считывания индекса элемента
    cout << "Введите индекс удаляемого элемента: ";//приглашаем на ввод
    cin >> index;//ввод индекса
    while(index < 0 || index > size-1)//проверка попадания в границы массива
    {
        //пока пользователь не введет корректный индекс не завершится цикл
        cout << "Выход за пределы массива!Попробуйте еще раз!" << endl;//сообщаем о неправильном вводе
        cin >> index;//считываем новое значение индекса
    }
    invInfo[index].cost = 0;//очищаем стоимость элемента
    invInfo[index].colour[0] = '\0';
    invInfo[index].mark[0] = '\0';//очищаем количество элементов
    invInfo[index].country[0] = '\0';//очищаем имя элемента
    cout << " Удаление " << index << " элемента прошло успешно. " << endl;//сообщение об успешном удалении
}
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
31.05.2017, 17:02
Ответы с готовыми решениями:

Вывести список файлов из указанного пользователем каталога
Всем привет, такая вот задача. Разработать консольные приложение, которое выводит список файлов из указанного пользователем каталога. В...

Вывести список владельцев автомобилей заданных марки и цвета
Создать файл, содержащий базу данных об автомобилях и их владельцах (марка, цвет, год выпуска, фамилия владельца). Составить программу,...

Вывести список автомобилей, проходящих техосмотр в текущем году, сгруппированных по маркам автомобилей
здравствуйте, помогите, пожалуйста, с такой задачей по Делфи: При постановке на учет в ГАИ автолюбители указывают следующие данные: марка...

6
Заблокирован
31.05.2017, 17:09
Цитата Сообщение от sherlock440 Посмотреть сообщение
C++
1
int size = 5; * //размер массива структур
вообще-то вот так нужно писать или Ваш компилятор это хавает?
C++
1
const int size = 5; * //размер массива структур
0
0 / 0 / 0
Регистрация: 09.03.2017
Сообщений: 21
31.05.2017, 17:12  [ТС]
CodeBlocks - вроде хавает
0
Заблокирован
31.05.2017, 17:13
Цитата Сообщение от sherlock440 Посмотреть сообщение
C++
1
2
cout << "Введите цвет корпуса автомобиля: ";//приглашаем на ввод
cin >> invInfo[index].colour;//считываем цвет
- в чем проблема-то я не понимаю, точно также выведите надпись и данные из массива в цикле.
C++
1
cout << "Цвет корпуса автомобиля: " << invInfo[index].colour;  //выводим цвет
0
Форумчанин
Эксперт CЭксперт С++
 Аватар для MrGluck
8216 / 5047 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
31.05.2017, 17:17
Цитата Сообщение от sherlock440 Посмотреть сообщение
CodeBlocks - вроде хавает
Это IDE, а не компилятор.
Там в стандартном комплекте поставки идёт mingw, порт gcc, который имеет расширение VLA, разрешающее такую запись.
Но лучше использовать const (а лучше constexpr) для указания размера массива. Это по стандарту.
0
зомбяк
 Аватар для TRam_
1585 / 1219 / 345
Регистрация: 14.05.2017
Сообщений: 3,940
31.05.2017, 17:24
Цитата Сообщение от Programmist5 Посмотреть сообщение
вообще-то вот так нужно писать или Ваш компилятор это хавает?
Так там же
C++
1
2
int size = 5; 
inv invInfo[5];
так что компилятор-то отработает правильно, но придётся всегда помнить, что нужно менять длину в 2 местах сразу, что по-индусски. Нужно хотя бы так:
C++
1
2
const int size = 5;   //размер массива структур
inv invInfo[size]; //массив структур
0
Заблокирован
01.06.2017, 07:06
Да-да, точно, я что-то не сразу заметил что там две 5-ки стоят.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
01.06.2017, 07:06
Помогаю со студенческими работами здесь

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

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

Вывести список автомобилей
не могу вывести список всех автомобилей, которые будут не старше того года, который вводится с клавиатуры. PROGRAM MY_FILE; USES CRT; ...

Определить число вхождений указанного пользователем слова в строку текста, введённого пользователем.
Определить число вхождений указанного пользователем слова в строку текста, введённого пользователем на классическом С Скажите в чем я...

Класс: Вывести список автомобилей заданной марки...
Создать классы, спецификации которых приведены ниже. определить конструкторы и методы setТип () getТип () toString (). определить методы в...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru