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

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

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

Даны сведения о книгах: автор, название, год издания. Вывести на экран сведения о книге "Информатика", упорядочив по возрастанию год выпуска.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
01.05.2012, 13:41
Ответы с готовыми решениями:

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

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

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

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

10
Higher
1944 / 1210 / 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 / 0
Регистрация: 10.04.2011
Сообщений: 126
01.05.2012, 15:38  [ТС] 3
Я что то не могу ее запустить в DEV C++
0
Higher
1944 / 1210 / 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 / 0
Регистрация: 10.04.2011
Сообщений: 126
01.05.2012, 15:52  [ТС] 5
Я вот пробую, у меня не получается, может не правильно делаю что то. Можете объяснить?
0
Higher
1944 / 1210 / 120
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
01.05.2012, 15:54 6
Цитата Сообщение от Алиш Посмотреть сообщение
у меня не получается
Что именно?
Если у вас старый компилятор, то этот ключ вы указать не сможете, однако для кода из #4 этот ключ уже не требуется.
Возможно, будут проблемы с кодировками, но это уже от компилятора зависит.
1
62 / 2 / 0
Регистрация: 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
Higher
1944 / 1210 / 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 / 0
Регистрация: 10.04.2011
Сообщений: 126
01.05.2012, 16:19  [ТС] 9
Вы можете сами правильно поменять ключ, что бы программа запустилась. Пожалуйста
0
Higher
1944 / 1210 / 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 / 0
Регистрация: 10.04.2011
Сообщений: 126
01.05.2012, 16:29  [ТС] 11
Как только я уже не пробовал, не получается, мне главное чтоб она работала, а этого не получается мне самому сделать.

Добавлено через 5 минут
я так же менял, все равно не работает программа. Вы можете скинуть готовую программу которая запустится на DevC++. Пожалуйста
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
01.05.2012, 16:29

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

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

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

Алгоритмизация и программирование задач создания и обработки типованих и текстовых файлов
1.Создание и обработка типованого файла Обработать типований файл, вычислив среднее арифметическое...

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


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

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

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