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

Сортировка структур

21.11.2009, 20:35. Показов 1620. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Задание такое:
Разработайте программу для обработки структурных типов данных. Реализуйте отдельные функции для ввода, вывода, поиска информации по некоторому условию, сортировки по некоторому признаку.

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


проблема с функцией 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;
  }
1
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
21.11.2009, 20:35
Ответы с готовыми решениями:

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

Сортировка структур
struct Man{ char name; Название книги char avtor; Автор int day; год издания float kol; ...

Сортировка Структур
Как организовать обмен по типу данных char? Какие есть способы сортировки в таких случаях? #include &lt;stdio.h&gt; #include...

4
 Аватар для Sekt
159 / 156 / 47
Регистрация: 29.04.2009
Сообщений: 636
21.11.2009, 20:40
C++
1
 min=i;
лучше
C++
1
min=0;
в начале функции
0
1 / 1 / 0
Регистрация: 21.11.2009
Сообщений: 3
21.11.2009, 20:47  [ТС]
да вроде i все-таки должно быть.
с нулём, кстати, такой же результат
0
1 / 1 / 0
Регистрация: 21.11.2009
Сообщений: 3
22.11.2009, 16:43  [ТС]
извиняюсь, разобрался сам
там детские ошибки были
0
khramoy
07.11.2012, 15:48
Gsom, привет скинь пожалуйста ссылку на готовую прогу в С++
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
07.11.2012, 15:48
Помогаю со студенческими работами здесь

Сортировка структур
Ведомости про участников конкурса имеют следующую информацию: имя, фамилия, секция, адрес, набранный бал. Стоит задание вывести информацию...

Сортировка структур
Помогите составить программу, пожалуйста! Дана структура &quot;поезд&quot; с полями: Наименование маршрута Время отправления Время...

Сортировка структур
Хочу отсортировать структуру по номеру поезда пузырьковым методом. Написал такой код: station *train = new station; station tmp;...

Сортировка структур
Подскажите с сортировкой. В функции SortSwap отсортировал по среднему значения. Но в самой структуре позиции не меняются. Спасибо. ...

Сортировка структур
Написать программу, выполняющую следующие действия: • ввод с клавиатуры данных в массив, состоящий из восьми элементов типа TRAIN; записи...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru