Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
6 / 6 / 0
Регистрация: 28.12.2010
Сообщений: 113
1

Сделать сортировку по дате издания

07.05.2011, 18:23. Просмотров 484. Ответов 2
Метки нет (Все метки)

всем приятного впемени суток! есть программка которая каряво работает( записывает данные непонятно..
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
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <iostream>
#include <conio.h>
#include <windows.h>
 
int menu();
void add_book();
void create(struct lib *i, struct lib **first, struct lib **last);
void list();
void display(struct lib *info);
void kolonki();
 
struct lib{
        char name[15];
        char book[15];
        char izdat[15];
        int pages;
        int year;
        char city[20];
        struct lib *next; //ссылка на следующую запись
        struct lib *pred;   //ссылка на предыдущую запись
    };
 
    struct lib *first; //первая запись
    struct lib *last;  //последняя запись
 
    char s_year[5];
    int c_year;
    char s_pages[6];
    int c_pages;
 
    int main(){
        SetConsoleCP(1251);
        SetConsoleOutputCP(1251);
 
        first = last = NULL;
        for(;;){
            switch(menu()){
            case 1: 
                add_book();
                break;
            case 2: 
                kolonki();
                list();
                break;
            case 0:
                exit(0);
        }   
        }
    }
 
    int menu(){
        char s[5];
        int c;
        printf("\n1. Добавить книгу \n");
        printf("2. Просмотреть список \n");    
        printf("0. Выход\n\n");
 
        do{
            printf("\nВаш выбор ");
        gets(s);
        c = atoi(s);
        }while(c<0 || c>2);
        return c;
    }
 
    void add_book(){
        struct lib *info;
 
    for(;;){
        info = (struct lib*)malloc(sizeof(struct lib));
 
        printf("\nВведите фамилию автора : ");
        gets(info -> name);
        printf("Введите название книги : ");
        gets(info -> book);
        printf("Введите издательство : ");
        gets(info -> izdat);
 
        printf("Введите количество страниц : ");
        scanf("%i ", &info->pages);
        
        printf("Введите год издания : ");
        scanf("%i ", &info->year);  
        
        printf("Введите город издания : ");
        gets(info -> city);
        printf("\n");
        
        create(info, &first, &last);
    
        return;     
    }   
}
 
void list(){
    struct lib *info;
 
    info = first;
    
    while(info){
 
    display(info);
 
        info = info->next;
    }
    printf("\n");
    
}
 
void create(struct lib *i, struct lib **first, struct lib **last){
    struct lib *old, *p;
    p = *first;
    if(!*last){
        i->next = NULL;
        *last = i;
        *first = i;
        return;
    }
    old = NULL;
    while(p){
        if(strcmp(p->name, i->name)<0){
            old = p;
            p = p->next;
        }
        else {
            if(old){
                old->next = i;
                i->next = p;
                return;
            }
            i->next = p;
            *first = i;
            return;
        }
    }
    (*last)->next = i;
    i->next = NULL;
    *last = i;
}
 
 
void display(struct lib *info){
    printf("%13s|", info->name);
    printf("%15s|", info->book);
    printf("%13s|", info->izdat);
    printf("%10i|", info->pages);
    printf("%9i|", info->year);
    printf("%s", info->city);
    printf("\n");
}
 
void kolonki(){
        printf("        Автор| Название книги| Издательство|Количество|      Год|Город издания\n");
        printf("             |               |             |страниц   |  издания|             \n");
        printf("==============================================================================  ");
}
как-то непонятно выполняется это часть кода
C
1
2
3
4
5
printf("Введите количество страниц : ");
        scanf("%i ", &info->pages);
        
        printf("Введите год издания : ");
        scanf("%i ", &info->year);
подскажите, как исправить
и второй вопросик вот в этой проге, при просмотре списка, сортировка идет по фамилии автора... подскажите, пожалуйста, как сделать сортировку по дате издания! способ сортировки любой1 заранее благодарен
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.05.2011, 18:23
Ответы с готовыми решениями:

Как сделать сортировку по дате
Я не сильна в знании HTML языка, помогите пожалуйста... У меня идет сортировка новостей по...

Как сделать сортировку по дате
В базе хранятся даты(xx/xx/xxxx).Но есть и пустые поля. Какой нужен запрос , чтобы эти даты...

как сделать сортировку по дате?
Простой алгоритм от меньшей даты к большей... и воторой вопрос как посчитать количество дней с...

Сделать сортировку пациентов по дате
Добрый день ,помогите сделать сортировку пациентов по дате с 2017 ,он выводит и старые записи...

2
595 / 563 / 104
Регистрация: 07.11.2010
Сообщений: 2,004
07.05.2011, 19:52 2
Цитата Сообщение от dan_strong Посмотреть сообщение
strcmp(p->name, i->name)<0
изменить вот это условие в цикле и поставить туда сравнение дат
0
6 / 6 / 0
Регистрация: 28.12.2010
Сообщений: 113
07.05.2011, 21:35  [ТС] 3
спасибо! А первый вопрос еще пожалуйста
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
07.05.2011, 21:35

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Как сделать сортировку по дате добавления в папку?
Здравствуйте. Добавляю файлы в папку - делаю сортировку по дате и он мне сортирует по той дате,...

Нужно сделать сортировку по дате рождения, по убыванию
Надо отсортировать по дате рождения Всю голову сломал то тут ошибка то там #include...

Как сделать сортировку по дате в массивве объединений
Оформлены в виде массива объединений. Написать программу, которая вводит данные в память машины в...

MFC. Как сделать сортировку (по имени и по дате отдельно) по столбцам?
Доброе время суток Есть List Control. В него заноситься список файлов (из выбранной папки). Как...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

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