Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
stealth.Delux
1 / 1 / 0
Регистрация: 30.10.2010
Сообщений: 10
#1

Массив структур - C++

14.12.2010, 22:27. Просмотров 819. Ответов 2
Метки нет (Все метки)

Пожалуйста, помогите с программой. Задание: разработать программу , позволяющую добавлять данные структур с указанными полями в массив. Поля структуры: тип компьютера, год выпуска, цена.
Операция: удалить все компьютеры с заданным годом выпуска.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.12.2010, 22:27
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Массив структур (C++):

Блочная сортировка структур (Отсортировать массив структур по фамилии) - C++
Подскажите алгоритм блочной сортировки структур на языке С++. Мне нужно отсортировать массив структур по фамилии.

Массив структур, сохранение начала каждой из структур - C++
Я создал такую структуру class Lancuch { public: char cos; Lancuch * nastepny; }; Lancuch * poczatek=NULL; cin >>...

Как объявить динамический массив структур, и как выглядит обращение к полям структур по указателю? - C++
Ребята подскажите как объявить динамический массив структур, и как выглядит обращение к полям структур по указателю.

Массив структур в массиве структур - C++
Всем добрый день. Делаю менюшку для управления и терзаю Arduino IDE слегка подвис со следующей задачей. Я хочу определить две...

Ввести массив структур; рассортировать массив в алфавитном порядке - C++
Пришел из армии восстановился в универе и тут сразу курсавай. Помогите Исходные данные(описание структуры): Информация об...

Как передать массив структур в функцию в качестве параметра, чтобы изменения в функции меняли исходный массив? - C++
Допустим есть структура struct Base { int a; int b; int c; }; В основном методе main() объявим массив...

2
Neonjke
18 / 18 / 1
Регистрация: 08.10.2009
Сообщений: 94
15.12.2010, 00:27 #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
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
#include "stdafx.h"
#include <iostream>
#include <string.h>
#include <sstream>
using namespace std;
 
void main(void)
{
    // Создадим наш структурный тип
    struct pc   {
            string type; // Тип ПК - строковая переменная
            unsigned short int year; // Год - беззначный короткий int (ведь у нас отрицательных годов не бывает? нууу, до Н.Э. не было кампов...да и сейчас 2010, а не 2010101010)
            unsigned int price; // Цена - просто беззначный int. Доплачивать за покупку никто не будет, а вот миллиардные цены есть =)
                };
 
    struct pc massive[50]; // Наш массив, рассчитаный на парк из 50 ПК
 
    int n=0; // Наш хранитель кол-ва машиной
    int k=0; // Счетчик, который нам пригодится при удалении
    int i; // Наш монополист на рынке счетчиков!
    int nBuf; // Переменная, в которую мы скопируем n, чтобы узнать: а удаляли мы вообще что нибудь?
    unsigned short int destroy=0; // Сюда положим год, который нам НЕ нужен. Такой же формат как и года в структурном типе.
    
    // О великий Ктулху, скажи мне, сколько компов у тебя в офисе?
    std::cout << "Skolko computerov v nalichii?" << endl;
    std::cin >> n;
    nBuf=n; // Запомним ка это количество в запасную переменную...
    std::cout << endl;
 
    // Начнем забивать наши характеристи по одному
    for (i=0; i<n; i++)
    {
        std::cout << "Kakoy tip u " << i+1 << " computera?" << endl; // Спросим тип
        cin >> massive[i].type;
        std::cout << endl;
 
        std::cout << "Kakoy god vipuska u " << i+1 << " computera?" << endl; //Спросим год выпуска
        while (1) // Проверка на правильность ввода года
        {
            
            std::cin >> massive[i].year; // Введем год
            if (massive[i].year > 1950 && massive[i].year < 2010) // И проверим его, лежит ли циферка в рамках от 1950 до 2010
                break; // Если да - выпригнем из цикла while и продолжим работы
            else
                std::cout << "Neverniy vvod! Povtorite vvod eshe raz:" << endl; // А если не - сообщение об ошибке и вернемся в начало цикла (к повт. вводу соответственно)
        }
 
        std::cout << endl;
 
        std::cout << "Skolko stoit " << i+1 << " computer?" << endl; // Спросим цену
        while (1) // Проверка на правильность ввода бабосов
        {
            std::cin >> massive[i].price; // Введем кол-во денюшек
            if (massive[i].price > 0 && massive[i].price < 999999) // Проверим по той же логике, что и год
                break;
            else
                std::cout << "Neverniy vvod! Povtorite vvod eshe raz:" << endl;
        }
        std::cout << endl;
    }
        
 
 
        std::cout << endl;
 
        //Напечатаем наш списочек
        for (i=0; i<n; i++)
            std::cout << i+1 << ". " << massive[i].type << " " << massive[i].price << "$ " << massive[i].year << endl;
        std::cout << endl;
 
 
 
        std::cout << "Computeri s kakim godom vipuska vi hotite udalit?" << endl; // Теперь спросим самое интересное - какого года кампы на свалку?
        
        
        while (1) // Давайте и этот ввод проверим на всякий пожарный, мало ли, индус за компом
        {
            std::cin >> destroy;
            if (destroy > 1950 && destroy < 2010) // Все та же наша любимая непрошибаемая логика
                break;
            else
                std::cout << "Neverniy vvod! Povtorite vvod eshe raz:" << endl;
        }
 
        // А теперь самое интересное - начнем бегать по массиву и удалять не нужное нам
        for (i=0; i<n; i++)
            if (massive[i].year==destroy) // Если i-ый элемент массива не нужного нам года
            {
                for (k=i; k<nBuf-1; k++) // То в новом цикле, с него и начав (с ненужного элемента) и до конца нашего списка
                    massive[k]=massive[k+1]; // Подставим на его место верхний, на место верхнего тот, который еще выше и т.д. по циклу
 
                n--; // И запомним, что у нас на 1 ПК меньше
                i=-1; // И начнем все с самого начала списка
            }
                
 
        // Выведем наши результаты
        if (nBuf==n) // Вот где наша выручалочка, если ничего не удаляли, значит кол-во ПК все то же...
            std::cout << "Computerov s takim godom vipuska net" << endl;
        else // В другом случае мы удалили <СКОЛЬКО БЫЛО - СКОЛЬКО ОСТАЛОСЬ> ПК
            std::cout << "Computeri s " << destroy << " godom vipuska udaleni. Vsego: " << nBuf-n << " shtuk." << endl;
 
        std::cout << endl;
 
        // Ну и выведем нашу отредактированную матрицу
        for (i=0; i<n; i++)
            std::cout << i+1 << ". " << massive[i].type << " " << massive[i].price << "$ " << massive[i].year << endl;
        
        std::cout << endl;
 
        std::system("pause"); // Шайтан майтан, индус, смотри в экран!!!!
 
}
1
stealth.Delux
1 / 1 / 0
Регистрация: 30.10.2010
Сообщений: 10
15.12.2010, 21:24  [ТС] #3
Neonjke, спасибо большое! Кажется понял.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.12.2010, 21:24
Привет! Вот еще темы с ответами:

Массив структур - C++
Эксперементирую тут с файлами. Что-то полная ерунда получается. ВОт я объявил массив структур, а при заполнении ерунда какая-то...

Массив структур - C++
Создаю программу, которая должна массив чисел преобразовать в массив структур(в структуре 2 элемента - число из массива и количество его...

Массив структур - C++
https://drive.google.com/file/d/0B2YGdPmpJULzYVJJUTl5bmk5VEE/view?usp=sharing

Массив структур - C++
Описать структуру с именем ZNAK, содержащую следующие поля: фамилия, имя; знак зодиака; дата рождения(массив из трех чисел). Написать...


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

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

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