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

Тема: Структуры, нужно в VS написать - C++

Восстановить пароль Регистрация
 
Forumhelp
1 / 1 / 0
Регистрация: 06.06.2013
Сообщений: 130
11.09.2013, 22:47     Тема: Структуры, нужно в VS написать #1
В радиоателье сохраняются квитанции о сданной в ремонт аппаратуре. Каждая квитанция содержит такую информацию: название группы товаров(телевизоры, радиоприемники и т.д), марка товара, дата приема в ремонт, состояние готовности заказа(сделано, не сделано). Вывести информацию о состояние заказа на поточные сутки для заданной группы товаров. Наименование группы товаров ввести с клавиатуры.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
User409368
191 / 168 / 6
Регистрация: 09.09.2013
Сообщений: 524
11.09.2013, 23:31     Тема: Структуры, нужно в VS написать #2
вот структура
C++
1
2
3
4
5
6
7
struct Kvitok
{
    char name[20];
    char marka[20];
    int day, month, year;
    bool sostoyanie;
};
Forumhelp
1 / 1 / 0
Регистрация: 06.06.2013
Сообщений: 130
11.09.2013, 23:53  [ТС]     Тема: Структуры, нужно в VS написать #3
___, спасибо большое, но я только начал, если вы можете то напишите примерный код программы, был бы оочень признателен)
Alten_fritz
 Аватар для Alten_fritz
0 / 0 / 0
Регистрация: 04.08.2013
Сообщений: 8
12.09.2013, 01:50     Тема: Структуры, нужно в VS написать #4
не совсем понял про поточные сутки ,вот как-то так...
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
#include <iostream>
#include <cstdlib>
#include <ctime>
#include <string>
using namespace std;
 
struct Kvitok
{
    char name[20];
    char marka[20];
    int day, month, year;
    bool sostoyanie;
};
 
int main()
{
    const int n=5;//количество аппаратуры на ремонте 
    Kvitok obj[n];
    for(int i=0; i<n; i++)
    {
        cout<<"Name:";
        gets(obj[i].name);
        cout<<"Marka: ";
        gets(obj[i].marka);
        cout<<"date: ";
        cin>>obj[i].day>>obj[i].month>>obj[i].year;
        cout<<"Sostoyanie: ";
        (cin>>obj[i].sostoyanie).get();
    }
    cout<<"\n";
    char s[20];
    cout<<"Name: ";
    gets(s);
    for(int i=0; i<n; i++)
    {
        if(!strcmp(s,obj[i].name))
        {
            cout<<"Marka: "<<obj[i].marka<<"\n";
            cout<<"date: "<<obj[i].day<<" "<<obj[i].month<<" "<<obj[i].year<<"\n";
            if(obj[i].sostoyanie==0) cout<<"Sostoyanie: ne sdelano\n";
            else cout<<"Sostoyanie: Sdelano\n";
            cout<<"\n";
        }
    }
system ("PAUSE");
 return 0;
 }
Forumhelp
1 / 1 / 0
Регистрация: 06.06.2013
Сообщений: 130
12.09.2013, 02:19  [ТС]     Тема: Структуры, нужно в VS написать #5
Alten_fritz, вау спасибо огромное, буду вникать)
lemegeton
 Аватар для lemegeton
2908 / 1337 / 133
Регистрация: 29.11.2010
Сообщений: 2,720
12.09.2013, 08:44     Тема: Структуры, нужно в VS написать #6
Цитата Сообщение от Forumhelp Посмотреть сообщение
Вывести информацию о состояние заказа на поточные сутки для заданной группы товаров.
Значит, что дату тоже проверять надо.

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
#include <cstring>
#include <iostream>
#include <iomanip>
 
/**
 * Структура даты.
 */ 
struct Date {
  int day;   // день
  int month; // месяц
  int year;  // год
};
 
/**
 * Сравнивает две даты.
 * 
 * @param a первая дата
 * @param b вторая дата
 * @return если a < b, то отрицательное число, 
 *         если a == b, то ноль,
 *         если a > b, то положительное число,
 */
int compare(const Date &a, const Date &b) {
  if (a.year != b.year) {
    return a.year - b.year;
  }
  if (a.month != b.month) {
    return a.month - b.month;
  }
  return a.day - b.day;
}
 
/**
 * Для удобства переопределен оператор вывода даты на экран.
 */
std::ostream &operator<<(std::ostream &stream, const Date &date) {
  return stream << 
    std::setw(2) << std::setfill('0') <<
    date.day << "/" <<
    std::setw(2) << std::setfill('0') <<
    date.month << "/" <<
    date.year;
}
 
/**
 * Структура квитанции.
 */
struct Ticket {
  char group[30]; // группа товара
  char brand[30]; // марка товара
  Date accepted;  // дата приема
  bool done;      // состояние готовности
};
 
/**
 * Для удобства переопределен оператор вывода квитанции на экран.
 */
std::ostream &operator<<(std::ostream &stream, const Ticket &ticket) {
  return stream << 
    "Group: " << ticket.group << ", " <<
    "brand: " << ticket.brand << ", " <<
    "accepted: " << ticket.accepted << ", " <<
    "status: " << (ticket.done ? "done" : "in progress");
}
 
 
int main(int, char **)  {
  // квитанции
  Ticket tickets[] = {
    {"tvset", "Philips LH72", {12, 9, 2013}, true},
    {"radio", "Morana HZ-7", {12, 9, 2013}, true},
    {"tvset", "LG HDTV2", {12, 9, 2013}, false},
    {"tvset", "Raduga 3", {15, 9, 2013}, true},
    {"radio", "Mark IV", {12, 9, 2013}, true},
  };
 
  // количество квитанций
  int numberOfTickets = sizeof(tickets) / sizeof(tickets[0]);
 
  // вывод всех имеющихся квитанций
  for (int i = 0; i < numberOfTickets; ++i) {
    std::cout << tickets[i] << std::endl;
  }
 
  // дата запроса
  Date requestDate = {12, 9, 2013};
  // запрашиваемая группа товаров
  char requestedGroup[30];
 
  // ввод запрашиваемой группы товаров
  std::cout << "Enter group: ";
  std::cin >> requestedGroup;
 
  // вывод данных запроса
  std::cout << "Request date: " << requestDate << ", "
    "request group: " << requestedGroup << std::endl;
 
  // вывод квитанций с совпадающей датой и группой
  for (int i = 0; i < numberOfTickets; ++i) {
    Ticket &ticket = tickets[i]; // текущая квитанция
    // если совпадает дата
    if (compare(ticket.accepted, requestDate) == 0 &&
      // и группа
      strcmp(ticket.group, requestedGroup) == 0) {
      // квитанция выводится на экран
      std::cout << ticket << std::endl;
    }
  }
 
  return 0;
}
Forumhelp
1 / 1 / 0
Регистрация: 06.06.2013
Сообщений: 130
18.09.2013, 22:20  [ТС]     Тема: Структуры, нужно в VS написать #7
lemegeton, можете более детально объяснить вот этот кусок)
C++
1
2
3
4
5
6
7
std::ostream &operator<<(std::ostream &stream, const Date &date) {
  return stream << 
    std::setw(2) << std::setfill('0') <<
    date.day << "/" <<
    std::setw(2) << std::setfill('0') <<
    date.month << "/" <<
    date.year;
Forumhelp
1 / 1 / 0
Регистрация: 06.06.2013
Сообщений: 130
20.09.2013, 00:59  [ТС]     Тема: Структуры, нужно в VS написать #8
кто может более детально объяснить вот этот кусок)
C++
1
2
3
4
5
6
7
std::ostream &operator<<(std::ostream &stream, const Date &date) {
  return stream << 
    std::setw(2) << std::setfill('0') <<
    date.day << "/" <<
    std::setw(2) << std::setfill('0') <<
    date.month << "/" <<
    date.year;
User409368
191 / 168 / 6
Регистрация: 09.09.2013
Сообщений: 524
20.09.2013, 12:29     Тема: Структуры, нужно в VS написать #9
Цитата Сообщение от Forumhelp Посмотреть сообщение
кто может более детально объяснить вот этот кусок)
operator<< это перегруженный оператор вывода для класса Date

std::ostream &operator<<(std::ostream &stream, const Date &date)
это можно рассматривать как функцию. первый аргумент ссылка на std::ostream (как cout),
а второй ссылка на тип Date. эта функция возвращает ссылку на std::ostream

вот программа которая ее использует. написал двумя способа для вывода Date чтобы лучше понять


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
struct Date {
  int day;   // день
  int month; // месяц
  int year;  // год
 
};
 
std::ostream &operator<<(std::ostream &stream, const Date &date) {
  return stream <<
    std::setw(2) << std::setfill('0') <<
    date.day << "/" <<
    std::setw(2) << std::setfill('0') <<
    date.month << "/" <<
    date.year;
}
 
 
int main()
{
    Date d;
 
    d.day = 20;
    d.month = 9;
    d.year = 2013;
 
    cout << d << endl;
    operator<<(cout, d) << endl;
 
    _getch();
    return 0;
}
Forumhelp
1 / 1 / 0
Регистрация: 06.06.2013
Сообщений: 130
23.09.2013, 20:45  [ТС]     Тема: Структуры, нужно в VS написать #10
_, если переписать перегруженный оператор вывода для класса Date вторым способом
int main()
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
{
    Date d;
 
    d.day = 20;
    d.month = 9;
    d.year = 2013;
 
    cout << d << endl;
    operator<<(cout, d) << endl;
 
    _getch();
    return 0;
}

то его нужно описывать в main и для даты так же?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.09.2013, 08:14     Тема: Структуры, нужно в VS написать
Еще ссылки по теме:

Нужно написать код (Циклические структуры) C++
Тема: Структуры. Условие: сделать массив структур, который содержит следующею информацию C++
C++ тема структуры(классы)

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

Или воспользуйтесь поиском по форуму:
User409368
191 / 168 / 6
Регистрация: 09.09.2013
Сообщений: 524
24.09.2013, 08:14     Тема: Структуры, нужно в VS написать #11
Forumhelp ,не понял.

вот есть перегруженный оператор вывода для класса Date:

C++
1
2
3
4
5
6
7
8
std::ostream &operator<<(std::ostream &stream, const Date &date) {
  return stream <<
    std::setw(2) << std::setfill('0') <<
    date.day << "/" <<
    std::setw(2) << std::setfill('0') <<
    date.month << "/" <<
    date.year;
}
и его можно по-разному использовать в main:
C++
1
2
cout << d << endl;
operator<<(cout, d) << endl;
1-ый способ выглядит более естественно, а 2-ой именно как вызов функции
Yandex
Объявления
24.09.2013, 08:14     Тема: Структуры, нужно в VS написать
Ответ Создать тему
Опции темы

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