Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.85/13: Рейтинг темы: голосов - 13, средняя оценка - 4.85
NejdanX
2 / 2 / 1
Регистрация: 21.09.2017
Сообщений: 81
Завершенные тесты: 1
1

Сортировка в алфавитном порядке

13.03.2018, 12:50. Просмотров 2452. Ответов 3
Метки нет (Все метки)

Мне нужно создать функцию, которая сортирует список книг указанного автора в алфавитном порядке наименований.
Помогите исправить код, чтобы функция работала.

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
#include <iostream>
#include <math.h>
#include <stdlib.h>
#include <ctime>
#include <iomanip>
#include <string.h>
using namespace std;
struct book 
{
    char sh[25];
    char A[50]; 
    char Nz[40]; 
    int g; 
    char NI[50]; 
    char b[15]; 
    int KS; 
};
//Сортировка по названию при вводе автора.
void sort_by_Naz ( book *ar, int count){
    bool flag=0;
    string n;
    cout<<"Введите автора:\n";
    for(int p=0;p<2;p++)
    getline(cin,n);
    for(int i=0;i<count;i++)
    if ((n==ar[i].A) == 0) {
        flag=1;
    for (int i=0;i<count;i++){      
        int pr=i;       
        for (int j=i+1;j<count;j++){            
            if (ar[pr].Nz[0]>ar[j].Nz[0] ) pr=j;
        }       
        swap (ar[i],ar[pr]);
    }
                cout<<"________________________________________________________________"<<endl;
                cout<< 
                setw(10)<<left<< "|               Автор               |"<< 
                setw(20)<<left<< "          Название        |"<<endl;               
                    for (int i=0;i<count;i++)  {
            cout <<  
                    setw(20)<<left<<ar[i].A<< 
                    setw(20)<<left<<ar[i].Nz<<endl;
        }
}
      if (flag==0) cout<<"\n\n\n\nКниги такого автора нет в библиотеки\n\n";
}
0
Лучшие ответы (1)
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.03.2018, 12:50
Ответы с готовыми решениями:

Сортировка в алфавитном порядке...
Здравствуйте, не могли бы вы помочь мне с задачей? Просто мы на лекциях ещё не разобрали как...

Сортировка в алфавитном порядке
Написал скрипт сортировки по алфавиту. По идее работать должен, но к сожалению не работает. Вот...

Сортировка слов в алфавитном порядке
Дан текст из несколько слов. Нужно вывести слова в алфавитном порядке по первой букве.

Сортировка структур в алфавитном порядке
Есть массив структур, которые содержат русское слово и его английский перевод. Надо отсортировать...

Сортировка строк в алфавитном порядке
Помогите пожалуйста написать программу для сортировки строк в алфавитном порядке Программа...

3
nmcf
6540 / 5763 / 2623
Регистрация: 14.04.2014
Сообщений: 24,498
13.03.2018, 14:01 2
Отсортировать внутри самого массива с прочими авторами, что ли?
0
NejdanX
2 / 2 / 1
Регистрация: 21.09.2017
Сообщений: 81
Завершенные тесты: 1
13.03.2018, 16:00  [ТС] 3
16. По требованию пользователя организовать вывод на экран следующей информации:
- списка всех книг указанного издательства с указанием автора и года издания и количества страниц;
- число книг издания указанного пользователем года;
- список книг указанного автора в алфавитном порядке наименований,
- поиск книги по жанру.
Организовать интерфейс пользователя на основе меню, обязательными пунктами которого будут: ввод данных, вывод всей информации, выход из программы. Остальные пункты меню согласно заданию варианта.
Вот полное задание. У меня есть структурный шаблон и я должен для каждого пункта создать функцию и с помощью switch всё организовать в int main(). Но с функцией автора не выходит.
P.s. Полный код не стал скидывать, т.к. для того чтобы разобраться, где сама проблема, уйдёт время.
0
nmcf
6540 / 5763 / 2623
Регистрация: 14.04.2014
Сообщений: 24,498
13.03.2018, 17:12 4
Лучший ответ Сообщение было отмечено NejdanX как решение

Решение

C++
1
std::sort(ar, ar + count, [&n](const book &a, const book &b){ return (n == a.A && n != b.A) || (n == a.A && n == b.A && strcmp(a.Nz, b.Nz) < 0); });
Затем выводишь элементы от начала массива пока автор равен n.
1
13.03.2018, 17:12
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.03.2018, 17:12

Сортировка структур в алфавитном порядке
Отсортировать в алфавитном порядке по &quot;TIP&quot;. #include&lt;iostream&gt; #include&lt;cstdio&gt;...

Сортировка строки в алфавитном порядке
как сделать так, чтоб программа выводила строку с повторами ? то есть ввожу abcddff...

Сортировка строк в алфавитном порядке
Собственно сабж) Вроде бы сделал что-то похожее, но ошибка запрета доступа, если вводить строки с...


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

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

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