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

C++

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 14, средняя оценка - 4.86
Frog
0 / 0 / 0
Регистрация: 25.11.2009
Сообщений: 14
#1

Си++ -> структуры -> упорядочивание по возрастанию - C++

25.11.2009, 12:53. Просмотров 1819. Ответов 6
Метки нет (Все метки)

Прошу прощения за создание новой темы, но у меня большая просьба помогите пожалуйста решить задачу на Си++.

Разработайте программу для обработки структурных типов данных. Реализуйте отдельные функции для ввода, вывода, поиска информации по условию, сортировки по признаку:
"База данных ГАИ: гос.номер АВТОМОБИЛЯ, марка, модель, Фамилия И.О. владельца, год выпуска. Упорядочьте по возрастанию года выпуска автомобиля. Выведите список автомобилей указанной марки."

Я написал основную часть программы:

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
#include <iostream.h>
#include <windows.h>
 
// ================ описание типов данных ======================
 
// ------- описание структурного типа данных МАШИНА -----------
struct CAR {
  char Nomer[15];          // гос номер
  char MarkaModel[15];     // Марка Модель
  char Name[15];           // Фамилия И. О.
  int Number;              // год выпуска
};
 
// ------- описание структурного типа данных Гаи ------------
// максимальное количество машин
#define MAX_CAR 30
struct GAI {
  int N;                 // Количество машин
  CAR Car[MAX_CAR];      // Массив машин
};
 
// =============== описание прототипов функций =================
 
// Ввод информации о машине с клавиатуры
CAR InputCar(void);
 
// Вывод информации о машине на экран
void OutputCar(CAR Car);
 
// Ввод информации о гаи с клавиатуры
void InputGai(GAI *Gai);
 
// Вывод информации о гаи на экран
void OutputGai(GAI Gai);
 
 
// =============== основная функция программы ==================
 
int main(int argc, char* argv[])
  {
  SetConsoleCP(1251);
  SetConsoleOutputCP(1251);
 
  GAI Gai;
  InputGai(&Gai);
  OutputGai(Gai);
 
  Sleep(7654);
  return 0;
  }
 
// ============ Ввод информации о машине с клавиатуры ========
CAR InputCar(void)
  {
  CAR car;
  cout << "Введите гос номер ====> ";
  cin >> car.Nomer;
  cout << "Введите Марка Модель ========> ";
  cin >> car.MarkaModel;
  cout << "Введите Фамилия И. О. ===> ";
  cin >> car.Name;
  cout << "Введите год выпуска ===> ";
  cin >> car.Number;
  return car;
  }
 
// ============ Вывод информации о машине на экран ===========
void OutputCar(CAR Car)
  {
  cout.width(8);
  cout.fill('0');
  cout << Car.Nomer << " "
       << Car.MarkaModel << " "
       << Car.Name << " "
       << Car.Number << " \n";
  }
 
// ============ Ввод информации о гаи с клавиатуры ==========
void InputGai(GAI *Gai)
  {
  cout << "Введите Количество машин ===> ";
  cin >> Gai->N;
    for (int i=0;i<Gai->N;i++)
    {
    cout << "Введите информацию о " << (i+1) << "-ой машине\n";
    Gai->Car[i]=InputCar();
    }
  }
 
// ============ Вывод информации о гаи на экран =============
car.Number.sort();
  void OutputGai(GAI Gai)
  {
  for(int i=0;i<Gai.N;i++) OutputCar(Gai.Car[i]);
  }

Но я не знаю, как реализовать вот это "Упорядочьте по возрастанию года выпуска автомобиля. Выведите список автомобилей указанной марки."

Помогите пожалуйста, заранее большое спасибо!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.11.2009, 12:53     Си++ -> структуры -> упорядочивание по возрастанию
Посмотрите здесь:
C++ Упорядочивание по возрастанию элементов последовательности. (Из Си в Си++)
Упорядочивание по возрастанию каждого столбца матриц C++
C++ Выполнить упорядочивание каждого столбца матрицы по возрастанию
C++ Сортировка поля структуры по возрастанию
C++ Упорядочить номера маршрутов по возрастанию (структуры)
Структуры "Worker", упорядочить по возрастанию оклада C++
Из двух отсортированных по возрастанию массивов сформировать третий, отсортированный также по возрастанию C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Rififi
2338 / 1053 / 44
Регистрация: 03.05.2009
Сообщений: 2,656
25.11.2009, 13:08     Си++ -> структуры -> упорядочивание по возрастанию #2
Но я не знаю, как реализовать вот это "Упорядочьте по возрастанию года выпуска автомобиля.

C++
1
2
struct year_less : public std::binary_function<CAR, CAR, bool>
{ boost operator()(const CAR& c1, const CAR& c2) const { return c1.Number < c2.Number; } };
CAR cars[100];
std::sort(cars, cars + 100, year_less());
Frog
0 / 0 / 0
Регистрация: 25.11.2009
Сообщений: 14
25.11.2009, 14:07  [ТС]     Си++ -> структуры -> упорядочивание по возрастанию #3
Цитата Сообщение от Rififi Посмотреть сообщение
C++
1
2
struct year_less : public std::binary_function<CAR, CAR, bool>
{ boost operator()(const CAR& c1, const CAR& c2) const { return c1.Number < c2.Number; } };
CAR cars[100];
std::sort(cars, cars + 100, year_less());
И что с этими строками делать? Просто вставил в программу, вылазит ошибка: "Type name expected"
Rififi
2338 / 1053 / 44
Регистрация: 03.05.2009
Сообщений: 2,656
25.11.2009, 14:14     Си++ -> структуры -> упорядочивание по возрастанию #4
http://codepad.org/gUzxsKNZ
Frog
0 / 0 / 0
Регистрация: 25.11.2009
Сообщений: 14
25.11.2009, 14:22  [ТС]     Си++ -> структуры -> упорядочивание по возрастанию #5
Цитата Сообщение от Rififi Посмотреть сообщение
Спасибо, но всё равно вылазит эта ошибка, видимо не хочет фурычить совместно в моей программе (
Rififi
2338 / 1053 / 44
Регистрация: 03.05.2009
Сообщений: 2,656
25.11.2009, 14:27     Си++ -> структуры -> упорядочивание по возрастанию #6
каким компилятором ты пытаешься откомпилировать прогу?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.11.2009, 15:34     Си++ -> структуры -> упорядочивание по возрастанию
Еще ссылки по теме:
Получить массив С(К), упорядоченный по возрастанию, путем слияния массивов A(N) и B(M), упорядоченных по возрастанию (K = N + M) C++
C++ Получить массив С(К). упорядоченный по возрастанию, путем слияния массивов A(N) и В(М). упорядоченных по возрастанию (К = N + М).
Сортировка массива: сначала положительные по возрастанию, потом отрицательные по возрастанию C++
C++ Builder Упорядочивание массива
C++ Упорядочивание массивов

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

Или воспользуйтесь поиском по форуму:
Frog
0 / 0 / 0
Регистрация: 25.11.2009
Сообщений: 14
25.11.2009, 15:34  [ТС]     Си++ -> структуры -> упорядочивание по возрастанию #7
Цитата Сообщение от Rififi Посмотреть сообщение
каким компилятором ты пытаешься откомпилировать прогу?
Builder 6

Добавлено через 56 минут
О! Решил свою проблему благодаря следующей функции:
C++
1
2
3
4
5
6
7
8
9
10
11
12
void sortirovka (GAI *Gai)
{
    CAR e;
        for (int i = 1; i < Gai->N; i++)
        {
                for (int j = i - 1; j >= 0 && Gai->Car[j+1].Number > Gai->Car[j].Number; j--)
                {
                        e = Gai->Car[j+1];
                        Gai->Car[j+1] = Gai->Car[j];
                        Gai->Car[j] = e;
                }
        }
Сортирует по возрастанию. Тему можете удалить, но если кому пригодится, читайте.
Yandex
Объявления
25.11.2009, 15:34     Си++ -> структуры -> упорядочивание по возрастанию
Ответ Создать тему
Опции темы

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