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

Сортировка структур - C++

Восстановить пароль Регистрация
 
Gsom
1 / 1 / 0
Регистрация: 21.11.2009
Сообщений: 3
21.11.2009, 20:35     Сортировка структур #1
Задание такое:
Разработайте программу для обработки структурных типов данных. Реализуйте отдельные функции для ввода, вывода, поиска информации по некоторому условию, сортировки по некоторому признаку.

Книжный МАГАЗИН: автор КНИГИ, название, год издания, цена, количество экземпляров. Упорядочьте книги по убыванию год издания. Выведите список книг указанного автора.


проблема с функцией sort, т.е. при выборе варианта "Сортировка" книги выводятся в исходном порядке.
подскажите, где ошибка? заранее, спасибо

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
#include <iostream.h>
#include <windows.h>
 
struct Book {
  char Author[100];
  char Title[100];
  int Year;
  int Price;
  int Number;
};
 
#define MAX_BOOK 100
struct Shop {
  char Name[50];            // Название магазина
  int N;                    // Количество книг
  Book book1[MAX_BOOK];     // Массив книг
};
 
// Вывод книг по автору
void outpa (Shop Shop1)
{
bool prov=false;
char s[20];
cout << "Введите фамилию автора"<<endl;
cin >> s;
//cout<<"Список книг данного автора :"<<endl;
  for (int i=0; i<Shop1.N; i++)
    if (strcmp (s,Shop1.book1[i].Author)==0)
    { cout<<Shop1.book1[i].Title<<endl;
      prov=true; }
  if (prov==false) cout << "В магазине нет книг данного автора"<< endl;
}
 
// Cортировка книг по году издания
void sort (Shop *Shop1)
{
int min;
book1 buf;
for (int i=0; i<=Shop1.N; i++)
   {
   min=i;
   for (int j=i+1; j<=Shop1.N; j++)
   if (Shop1.book1[j].Year>Shop1.book1[min].Year) min=j;
   buf=Shop1.book1[i];
   Shop1.book1[i]=Shop1.book1[min];
   Shop1.book1[min]=buf;
    }
return;
}
 
// Ввод информации о книге с клавиатуры
Book InputBook (void)
  {
  Book book1;
  cout << "Введите автора: ";
  cin >> book1.Author;
  cout << "Введите название: ";
  cin >> book1.Title;
  cout << "Введите год издания: ";
  cin >> book1.Year;
  cout << "Введите цену: ";
  cin >> book1.Price;
  cout << "Введите количество книг: ";
  cin >> book1.Number;
  return book1;
  }
 
// Вывод информации о книге на экран
void OutputBook(Book book1)
  {
  cout << book1.Author << " ";
  cout << book1.Title << " ";
  cout << book1.Year << " ";
  cout << book1.Price<< " ";
  cout << book1.Number<< " " <<endl;
  }
 
// Ввод информации о магазине с клавиатуры
void InputShop(Shop *Shop1)
  {
  cout << "Введите название магазина:  ";
  cin >> Shop1->Name;
  cout << "Введите количество книг, не превышающее "<< MAX_BOOK << ": ";
  cin >> Shop1->N;
  cout << endl;
  for (int i=0; i<Shop1->N; i++)
    {
    cout << "Введите информацию о " << (i+1) << "-ой книге"<<endl;
    Shop1->book1[i]=InputBook();
    cout << endl;
    }
  }
 
// Вывод информации о магазине на экран
void OutputShop(Shop Shop1)
  {
  cout << "Список книг в магазине " << Shop1.Name << "\n";
  for(int i=0; i<Shop1.N; i++) OutputBook(Shop1.book1[i]);
  }
 
 
// Основная функция
  int main()
  {
  SetConsoleCP(1251);
  SetConsoleOutputCP(1251);
  int choose;
  Shop Shop1;
  InputShop(&Shop1);
 
  label:
  cout<<"Введите:"<<endl<<"1 - для вывода книг по фамилии автора"<<endl<<"2 - для сортировки книг по году издания"<<endl;
  cout<<"3 - для выхода из программы"<<endl;
  cin >> choose;
 
 
 switch (choose)
 {
 case 1:
 outpa(Shop1);
 break;
 
 case 2:
 sort(Shop1);
 OutputShop(Shop1);
 break;
 
 case 3:
 break;
 break;
 
 default:
 cout<<"Неверный ввод."<<endl;
 goto label;
 break;
 }
 
  system ("pause");
  return 0;
  }
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.11.2009, 20:35     Сортировка структур
Посмотрите здесь:

Сортировка структур C++
Сортировка структур с++ C++
C++ Сортировка структур
C++ Сортировка структур
Сортировка структур C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Sekt
 Аватар для Sekt
156 / 155 / 10
Регистрация: 29.04.2009
Сообщений: 637
21.11.2009, 20:40     Сортировка структур #2
C++
1
 min=i;
лучше
C++
1
min=0;
в начале функции
Gsom
1 / 1 / 0
Регистрация: 21.11.2009
Сообщений: 3
21.11.2009, 20:47  [ТС]     Сортировка структур #3
да вроде i все-таки должно быть.
с нулём, кстати, такой же результат
Gsom
1 / 1 / 0
Регистрация: 21.11.2009
Сообщений: 3
22.11.2009, 16:43  [ТС]     Сортировка структур #4
извиняюсь, разобрался сам
там детские ошибки были
khramoy
Сообщений: n/a
07.11.2012, 15:48     Сортировка структур #5
Gsom, привет скинь пожалуйста ссылку на готовую прогу в С++
Yandex
Объявления
07.11.2012, 15:48     Сортировка структур
Ответ Создать тему
Опции темы

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