Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Алиш
62 / 2 / 3
Регистрация: 10.04.2011
Сообщений: 126
#1

Программирование задач обработки структур и файлов - C++

01.05.2012, 13:41. Просмотров 586. Ответов 10
Метки нет (Все метки)

Даны сведения о книгах: автор, название, год издания. Вывести на экран сведения о книге "Информатика", упорядочив по возрастанию год выпуска.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.05.2012, 13:41
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Программирование задач обработки структур и файлов (C++):

Программирование задач обработки структур и файлов.
Даны сведения о книгах, поступивших в библиотеку: ФИО автора, название книги,...

Программирование задач обработки структур и файлов
помогите пожалуйста! Даны сведения о студентах группы: ФИО студента, дата...

Программирование задач обработки структур и файлов
Задание: Даны сведения о результатах сессии: ФИО студента, названия четырех...

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

Программирование типовых числовых задач обработки одномерных массивов
1) Вычислить и запомнить в структуре одномерного массива (таблица 1)...

Программирование задач с использованием комбинированного типа данных или структур
Написать программу данных задач используя комбинированный тип: Абитуриенты...

10
diagon
Higher
1937 / 1203 / 120
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
01.05.2012, 15:18 #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
#include <iostream>
#include <string>
#include <vector>
#include <locale>
#include <algorithm>
 
typedef std::wstring wstr_t;
 
struct book
{
    wstr_t author;
    wstr_t name;
    int year;
    
    book( const wstr_t& Author, const wstr_t& Name, int Year )
        : author(Author), name(Name), year(Year) {}
};
 
std::wostream& operator << (std::wostream& stream, const book &b)
{
    stream << b.author << " - " << b.name << " (" << b.year << ")";
    return stream;
}
 
int main()
{
    std::locale::global( std::locale("") );
    
    std::vector< book > arr;
    arr.emplace_back( L"Иванов", L"Информатика", 1999 );
    arr.emplace_back( L"Петров", L"Информатика", 1998 );
    arr.emplace_back( L"Иванов", L"Математика", 2012 );
    
    std::sort( arr.begin(), arr.end(), [] ( const book &a, const book &b )
    {
        if ( a.name == L"Информатика" || b.name == L"Информатика" )
        {
            if ( (a.name == L"Информатика") ^ (b.name == L"Информатика") ) 
            {
                return a.name == L"Информатика";
            }
            else
            {
                return a.year < b.year;
            }
        }
        else
        {
            return false;
        }
    } );
    
    for (size_t i = 0; i < arr.size() && arr[i].name == L"Информатика"; ++i)
    {
        std::wcout << arr[i] << std::endl;
    }
}
2
Алиш
62 / 2 / 3
Регистрация: 10.04.2011
Сообщений: 126
01.05.2012, 15:38  [ТС] #3
Я что то не могу ее запустить в DEV C++
0
diagon
Higher
1937 / 1203 / 120
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
01.05.2012, 15:45 #4
Поставьте ключ -std=c++0x
В принципе, можно и без нового стандарта обойтись
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
#include <iostream>
#include <string>
#include <vector>
#include <locale>
#include <algorithm>
 
typedef std::wstring wstr_t;
 
struct book
{
    wstr_t author;
    wstr_t name;
    int year;
    
    book( const wstr_t& Author, const wstr_t& Name, int Year )
        : author(Author), name(Name), year(Year) {}
};
 
std::wostream& operator << (std::wostream& stream, const book &b)
{
    stream << b.author << " - " << b.name << " (" << b.year << ")";
    return stream;
}
 
bool pred(const book &a, const book &b)
{
    if ( a.name == L"Информатика" || b.name == L"Информатика" )
    {
        if ( (a.name == L"Информатика") ^ (b.name == L"Информатика") ) 
        {
            return a.name == L"Информатика";
        }
        else
        {
            return a.year < b.year;
        }
    }
    else
    {
        return false;
    }
}
 
int main()
{
    std::locale::global( std::locale("") );
    
    std::vector< book > arr;
    arr.push_back( book(L"Иванов", L"Информатика", 1999) );
    arr.push_back( book(L"Петров", L"Информатика", 1998) );
    arr.push_back( book(L"Иванов", L"Математика", 2012) );
    
    std::sort( arr.begin(), arr.end(), pred ); 
    
    for (size_t i = 0; i < arr.size() && arr[i].name == L"Информатика"; ++i)
    {
        std::wcout << arr[i] << std::endl;
    }
}
2
Алиш
62 / 2 / 3
Регистрация: 10.04.2011
Сообщений: 126
01.05.2012, 15:52  [ТС] #5
Я вот пробую, у меня не получается, может не правильно делаю что то. Можете объяснить?
0
diagon
Higher
1937 / 1203 / 120
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
01.05.2012, 15:54 #6
Цитата Сообщение от Алиш Посмотреть сообщение
у меня не получается
Что именно?
Если у вас старый компилятор, то этот ключ вы указать не сможете, однако для кода из #4 этот ключ уже не требуется.
Возможно, будут проблемы с кодировками, но это уже от компилятора зависит.
1
Алиш
62 / 2 / 3
Регистрация: 10.04.2011
Сообщений: 126
01.05.2012, 15:59  [ТС] #7
Я компилирую и мне выдает ошибку:
std::wostream& operator << (std::wostream& stream, const book &b)
{
stream << b.author << " - " << b.name << " (" << b.year << ")";
0
diagon
Higher
1937 / 1203 / 120
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
01.05.2012, 16:17 #8
Какую именно ошибку?
И еще попробую угадать:
замените
C++
1
typedef std::wstring wstr_t;
на
C++
1
2
3
4
5
6
typedef std::basic_string< wchar_t > wstr_t;
 
namespace std
{
    typedef std::basic_ostream< wchar_t > wostream;
};
0
Алиш
62 / 2 / 3
Регистрация: 10.04.2011
Сообщений: 126
01.05.2012, 16:19  [ТС] #9
Вы можете сами правильно поменять ключ, что бы программа запустилась. Пожалуйста
0
diagon
Higher
1937 / 1203 / 120
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
01.05.2012, 16:23 #10
Ключ был нужен только для самого первого кода, все, что ниже, должно компилироваться без всяких ключей.
И еще одно предположение:
Замените
C++
1
stream << b.author << " - " << b.name << " (" << b.year << ")";
На
C++
1
stream << b.author << L" - " << b.name << L" (" << b.year << L")";
На этом мои телепатические способности заканчиваются.
1
Алиш
62 / 2 / 3
Регистрация: 10.04.2011
Сообщений: 126
01.05.2012, 16:29  [ТС] #11
Как только я уже не пробовал, не получается, мне главное чтоб она работала, а этого не получается мне самому сделать.

Добавлено через 5 минут
я так же менял, все равно не работает программа. Вы можете скинуть готовую программу которая запустится на DevC++. Пожалуйста
0
01.05.2012, 16:29
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.05.2012, 16:29
Привет! Вот еще темы с решениями:

обработки структур данных
добрый день. помогите пожалуйста решить задачу на Си. Даны характеристики...

обработки структур данных
Всем добрый вечер! народ это для меня сложновато заранее всем...

Программа обработки структур
Найдите пожалуйста ошибку. На 33 строке выдаёт error: too few arguments to...

Разработайте программу обработки структур
Здравствуйте уважаемые любители и ценители языка С++! У меня к вам огромная...


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

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

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