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

База данных. Помогите доработать сортировку! - C++

Восстановить пароль Регистрация
 
nt1221
1 / 1 / 0
Регистрация: 31.10.2011
Сообщений: 9
31.10.2011, 21:43     База данных. Помогите доработать сортировку! #1
Доброе время суток!)
Нужна помощь!
Создал базу данных. ФИО, число, месяц, год рождения, адресс. Создал массив (10 элементов) данных структурных переменных.
Сделал сортировку по году рождения по возрастанию. Но... Сортировка учитывает незаполненные элементы и заполенные элементы выводит после незаполенных. Это то и нужно устранить. нужно, чтобы функция учитывала только заполенные элементы.
Сама структура:
C++
1
2
3
4
5
6
7
8
 struct data{
       char surname[10];
       char name[10];
       char pat[20];
       int dd,mm,yy;
       char address[50];
       bool full;
       } man[10];
Функция вывода элемента:
C++
1
2
3
4
5
6
7
8
9
10
void out(int a)
{
           cout<<"\nЗапись: "<<a
           <<"\nФ: "<<man[a].surname
           <<"\nИ: "<<man[a].name
           <<"\О: "<<man[a].pat
           <<"\nдата рождения: "<<man[a].dd<<"."<<man[a].mm<<"."
           <<man[a].yy
           <<"\nА: "<<man[a].address<<endl;
}
И в main вывод всех заполненных элементов:
C++
1
2
3
4
for(int i=0;i<10;i++){
            if(man[i].full==true)
            out(i);
            }
Сама функция сортировки:
C++
1
2
3
4
5
6
7
8
9
10
void sortu_year()
{
     for (int i = X-1; i > 0; i--){
         for (int j=0; j < i; j++){
             if (man[j].yy > man[j+1].yy){
                 swap(man[j], man[j+1]);
                 }
                 }
                 }
}
Добавлено через 2 часа 43 минуты
так что, мыслей никаких???
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Holodov
 Аватар для Holodov
5 / 5 / 0
Регистрация: 01.10.2011
Сообщений: 46
31.10.2011, 21:47     База данных. Помогите доработать сортировку! #2
А что если сделать поле обязательным , если пропускают при вводе , выводи ошибку типа "Неправильный формат даты"

Или так

C++
1
2
3
int z = strlen(man);
if(n =! 0) {"Выводишь"}
else "не выводишь"
nt1221
1 / 1 / 0
Регистрация: 31.10.2011
Сообщений: 9
01.11.2011, 00:00  [ТС]     База данных. Помогите доработать сортировку! #3
это в main добавить?
Holodov
 Аватар для Holodov
5 / 5 / 0
Регистрация: 01.10.2011
Сообщений: 46
01.11.2011, 00:09     База данных. Помогите доработать сортировку! #4
В том посте ошибка , точнее опечатка)

надо так)

C++
1
2
3
int z = strlen(man);
if(z =! 0) {"Выводишь"}
else "не выводишь"
Strlen(man); проверяет строку man и возвращает её длину переменной z;
а как реализовать подумай.Можешь в мэйн можешь не в мэйн)

Или же так.
C++
1
2
3
4
if(!(strcmp(man[j], ""))
{
cout<<man[j];    //сравнивает твою строку и пустую , если твоя не пустая выводит её.
}
nt1221
1 / 1 / 0
Регистрация: 31.10.2011
Сообщений: 9
01.11.2011, 00:27  [ТС]     База данных. Помогите доработать сортировку! #5
не работает(
Holodov
 Аватар для Holodov
5 / 5 / 0
Регистрация: 01.10.2011
Сообщений: 46
01.11.2011, 00:37     База данных. Помогите доработать сортировку! #6
А поточнее?

И для 1-ого и для 2-ого способа подключай <string.h>
nt1221
1 / 1 / 0
Регистрация: 31.10.2011
Сообщений: 9
01.11.2011, 12:21  [ТС]     База данных. Помогите доработать сортировку! #7
заменил пузырьковую сортировку на сортировку простыми вставками. В результате не учитываются незаполненные элементы, НО! Обнуляются года рождения(критерий сортировки) вплоть до наибольшего! В чем ошибка??
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
void sortu_year()
{  int temp, j;
    for (int i = 1; i < X; i++) 
    {
        temp = man[i].yy;
        j = i-1;
        while (j >= 0 && man[j].yy > temp)
        {
            man[j+1].yy = man[j].yy; 
            --j;
        }
        man[j+1].yy = temp;
    }
}
Bers
Заблокирован
01.11.2011, 12:43     База данных. Помогите доработать сортировку! #8
Цитата Сообщение от nt1221 Посмотреть сообщение
Но... Сортировка учитывает незаполненные элементы и заполенные элементы выводит после незаполенных.
сортируй только заполненные
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.11.2011, 15:07     База данных. Помогите доработать сортировку!
Еще ссылки по теме:

Помогите решить задачу на Сортировку массива. (очень срочно, нужно на завтра) C++
C++ Удалённая база данных - запрос и вывод данных
Сортировку вставками меняем на Пирамидальную сортировку и на Сортировку подсчётом C++

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

Или воспользуйтесь поиском по форуму:
nt1221
1 / 1 / 0
Регистрация: 31.10.2011
Сообщений: 9
01.11.2011, 15:07  [ТС]     База данных. Помогите доработать сортировку! #9
подскажите, как ркализовать?
Yandex
Объявления
01.11.2011, 15:07     База данных. Помогите доработать сортировку!
Ответ Создать тему
Опции темы

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