Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
ZOMBO
0 / 0 / 0
Регистрация: 17.10.2012
Сообщений: 38
#1

Отсортировать и вывести в алфавитном порядке книги по названиям. - C++

20.12.2012, 22:52. Просмотров 589. Ответов 4
Метки нет (Все метки)

На вход подается некоторое количество описаний книг (автор, название, количество страниц). Отсортировать и вывести в алфавитном порядке по названиям.
пузырьковым методом.

Умоляю вас о помощи)

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
 
#include <iostream>
#include <string>
#include <algorithm>
 
int const N = 5;
 
using namespace std;
 
class book{
    public:
        book();
 
        string getAuthor() const;
        void setAuthor(string);
 
        string getName() const;
        void setName(string);
 
        int getPages() const;
        void setPages(int);
 
        bool getIsFree() const;
 
        void setNewBook();
        void printBook();
    private:
        bool isFree;
        string author;
        string name;
        int pages;
};
 
void sortBooks(class book*);
 
int main(){
    bool isInMenu = true;
    char key;
    class book arr[N];
 
    while(isInMenu){
 
        cout<<"1 to create new book \n"
            <<"2 to sort books \n"
            <<"3 to print all books \n"
            <<"4 to exit \n"
            <<"Choise: ";
        cin>>key;
        switch(key){
            case '1':
            for(int i = 0; i<N; i++){
                if(arr[i].getIsFree()){
                    arr[i].setNewBook();
                    break;
                }
                if(!arr[N-1].getIsFree()){
                    cout<<"\n There is no empty slots left! \n";
                    break;
                }
            }
            break;
 
            case '2':
                sortBooks(arr);
            break;
 
            case '3':
                for(int i = 0; i<N; i++)
                    if(!arr[i].getIsFree())
                        arr[i].printBook();
                break;
 
            case '4':
                isInMenu = false;
                break;
 
        }
        key=0;
        cout<<"\n\n\n\n";
    }
 
 
    return 0;
}
 
void sortBooks(class book* arr){
    string str1;
    string str2;
    for(int i = 0 ; i < N ; i++)
        for(int j = 1 ; j < N-i ; j++){
            if(!arr[j].getIsFree() && !arr[j-1].getIsFree()){
 
                str1 = arr[j-1].getName();
                str2 = arr[j].getName();
                if( str1[0] > str2[0] ){
 
                    swap(arr[j-1],arr[j]);
                    break;
                }
                for(int k = 0; k < str1.size() ; k++){
 
                    if( str1[k] > str2[k] ){
                        swap(arr[j-1],arr[j]);
                        break;
                    }
                }
            }
        }
}
 
book::book(){
    isFree = true;
}
 
void book::setNewBook(){
    cout<<endl<<"Enter author: ";
    cin>>author;
    cout<<endl<<"Enter name: ";
    cin>>name;
    cout<<endl<<"Enter number of pages: ";
    cin>>pages;
    isFree = false;
}
 
void book::setAuthor(string newAuthor){
    author = newAuthor;
}
 
void book::setName(string newName){
    name = newName;
}
 
void book::setPages(int newPages){
    pages = newPages;
}
 
bool book::getIsFree() const{
    return isFree;
}
 
string book::getAuthor() const{
    return author;
}
 
string book::getName() const{
    return name;
}
 
int book::getPages() const{
    return pages;
}
 
void book::printBook(){
    cout<<"\n Author: "<<author
        <<"\n Name: "<<name
        <<"\n Pages: "<<pages;
}
Добавлено через 1 час 36 минут
уже несколько дней безрезультатно бьюсь
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.12.2012, 22:52
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Отсортировать и вывести в алфавитном порядке книги по названиям. (C++):

Отсортировать строки в алфавитном порядке - C++
Помогите сделать задачу.. Отсортировать строки в алфавитном порядке по убыванию. Для критерия упорядочивания использовать подстроку...

Отсортировать строки в алфавитном порядке - C++
Помогите с задачей.. Отсортировать строки в алфавитном порядке по убыванию. Для критерия упорядочивания использовать подстроку длиной...

Отсортировать текст по буквам в алфавитном порядке - C++
Нужна помощь. Нужно отсортировать текст по буквам в алфавитном порядке С++. Текст берется их файла, после сортировка также записывается,...

Отсортировать символы в строке в алфавитном порядке - C++
Написать на языке &quot;С&quot; или &quot;С++&quot; функцию, удовлетворяющую следующим требованиям, вызвать ее в программе main( ) Прототип: int f( char...

Отсортировать массив сотрудников в алфавитном порядке - C++
Продолжить эту программу и сделать так, чтобы все занесенные сотрудники отображались в алфавитном порядке: #include &lt;stdio.h&gt; ...

Отсортировать элементы массива в алфавитном порядке - C++
отсортировать элементы массива А в алфавитном порядке. Помогите. Плис

4
OstapBender
584 / 523 / 35
Регистрация: 22.03.2011
Сообщений: 1,585
21.12.2012, 01:51 #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
int const N = 5;
 
using namespace std;
 
class book{
    public:
        book();
 
        string getAuthor() const;
        void setAuthor(string);
 
        string getName() const;
        void setName(string);
 
        int getPages() const;
        void setPages(int);
 
        bool getIsFree() const;
 
        void setNewBook();
        void printBook();
    private:
        bool isFree;
        string author;
        string name;
        int pages;
};
 
 
void sortBooks(class book* arr){
    string str1;
    string str2;
    for(int i = 0 ; i < N ; i++)
        for(int j = i ; j < N ; j++)
            if (arr[i].getName() >= arr[j].getName())
                std::swap(arr[i],arr[j]);
 
}
 
book::book(){
    isFree = true;
}
 
void book::setNewBook(){
    cout<<endl<<"Enter author: ";
    cin>>author;
    cout<<endl<<"Enter name: ";
    cin>>name;
    cout<<endl<<"Enter number of pages: ";
    cin>>pages;
    isFree = false;
}
 
void book::setAuthor(string newAuthor){
    author = newAuthor;
}
 
void book::setName(string newName){
    name = newName;
}
 
void book::setPages(int newPages){
    pages = newPages;
}
 
bool book::getIsFree() const{
    return isFree;
}
 
string book::getAuthor() const{
    return author;
}
 
string book::getName() const{
    return name;
}
 
int book::getPages() const{
    return pages;
}
 
void book::printBook(){
    cout<<"\n Author: "<<author
        <<"\n Name: "<<name
        <<"\n Pages: "<<pages;
}
int main() 
{
   bool isInMenu = true;
    char key;
    class book arr[N];
 
    int i = 0;
 
    while(isInMenu){
 
        cout<<"1 to create new book \n"
            <<"2 to sort books \n"
            <<"3 to print all books \n"
            <<"4 to exit \n"
            <<"Choise: ";
        cin>>key;
        switch(key){
            case '1':
                if (i==N) {
                    cout<<"\n There is no empty slots left! \n";
                    break;
                }
                arr[i].setNewBook();
                i++;
 
            break;
 
            case '2':
                sortBooks(arr);
            break;
 
            case '3':
                for(int i = 0; i<N; i++)
                    if(!arr[i].getIsFree())
                        arr[i].printBook();
                break;
 
            case '4':
                isInMenu = false;
                break;
 
        }
        key=0;
        cout<<"\n\n\n\n";
    }
    getchar();
 
}
Добавлено через 56 секунд
у тебя нет функции удалить i-ую книгу, зачем тогда мутки с getIsFree() и тд?
0
ZOMBO
0 / 0 / 0
Регистрация: 17.10.2012
Сообщений: 38
21.12.2012, 10:18  [ТС] #3
OstapBender, ваш код тоже не работает
0
SummerRain
327 / 326 / 17
Регистрация: 16.12.2012
Сообщений: 544
21.12.2012, 18:05 #4
строка 78:
удали её или закомментируй

C++
1
//key=0;
Добавлено через 3 часа 5 минут
ZOMBO, помог хоть нет?
0
OstapBender
584 / 523 / 35
Регистрация: 22.03.2011
Сообщений: 1,585
22.12.2012, 13:51 #5
ZOMBO, у мя работает
0
22.12.2012, 13:51
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.12.2012, 13:51
Привет! Вот еще темы с ответами:

Ввести список отсортировать в алфавитном порядке - C++
Есть задание ввести список с неопределенного количества елементов конец списка любое слово 0 или end не имеет значения(список создается...

Отсортировать данные по фамилиям студентов в алфавитном порядке - C++
С текстового файла считать последовательность записей, содержащих данные о результатах сессии студентов группы в следующем формате:...

Все слова в тексте отсортировать в алфавитном порядке - C++
Все слова в тексте отсортировать в алфавитном порядке. Считать, что слова отделены друг от друга одним пробелом. Огромное спасибо.

Все слова в тексте отсортировать в алфавитном порядке - C++
ребята помогите пожалуйста!!!! 1.Все слова в тексте отсортировать в алфавитном порядке 2.Написать программу, проверяющую, является...


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

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

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