Форум программистов, компьютерный форум CyberForum.ru

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

Восстановить пароль Регистрация
 
stealth.Delux
1 / 1 / 0
Регистрация: 30.10.2010
Сообщений: 10
14.12.2010, 22:27     Массив структур #1
Пожалуйста, помогите с программой. Задание: разработать программу , позволяющую добавлять данные структур с указанными полями в массив. Поля структуры: тип компьютера, год выпуска, цена.
Операция: удалить все компьютеры с заданным годом выпуска.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.12.2010, 22:27     Массив структур
Посмотрите здесь:

C++ Массив структур
C++ Массив структур
Массив структур, сохранение начала каждой из структур C++
C++ Массив структур
Массив структур в с++ C++
Ввести массив структур; рассортировать массив в алфавитном порядке C++
Массив структур C++
Массив структур C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
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"); // Шайтан майтан, индус, смотри в экран!!!!
 
}
stealth.Delux
1 / 1 / 0
Регистрация: 30.10.2010
Сообщений: 10
15.12.2010, 21:24  [ТС]     Массив структур #3
Neonjke, спасибо большое! Кажется понял.
Yandex
Объявления
15.12.2010, 21:24     Массив структур
Ответ Создать тему
Опции темы

Текущее время: 09:31. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru