Форум программистов, компьютерный форум CyberForum.ru

Вывести на экран сведений о книгах: автор, название, год издания - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 14, средняя оценка - 4.79
Алиш
 Аватар для Алиш
62 / 2 / 3
Регистрация: 10.04.2011
Сообщений: 126
05.05.2012, 12:56     Вывести на экран сведений о книгах: автор, название, год издания #1
Программирование задач обработки структур и файлов
Даны сведения о книгах: автор, название, год издания. Вывести на экран сведения о книге "Информатика", упорядочив по возрастанию.
Заранее спасибо.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.05.2012, 12:56     Вывести на экран сведений о книгах: автор, название, год издания
Посмотрите здесь:

C++ Создать класс КНИГА с такими полями в защищенной части: значення_УДК, автор, название, издательство, год издания.
Дан файл , содержащий сведения о книгах. Сведения о каждой из книг – это фамилия автора, название и год издания. а) Найти названия книг данного автор C++
Вывести на экран название животного, символизирующего этот год по восточному календарю C++
C++ Структура: Для заданного автора вывести на экран его самую раннюю книгу и самую последнюю - по году издания.
Нужно ввести название компании и год основания в файл, а затем вывести их на экран из файла C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Sylar9
-20 / 55 / 2
Регистрация: 04.09.2011
Сообщений: 1,888
Записей в блоге: 1
05.05.2012, 14:50     Вывести на экран сведений о книгах: автор, название, год издания #2
Тебе надо класс или структура сойдет ?
LK
Заблокирован
05.05.2012, 15:09     Вывести на экран сведений о книгах: автор, название, год издания #3
Sylar9, если исходить из этого:
Цитата Сообщение от Алиш Посмотреть сообщение
Программирование задач обработки структур и файлов
, то структуру.
Sylar9
-20 / 55 / 2
Регистрация: 04.09.2011
Сообщений: 1,888
Записей в блоге: 1
06.05.2012, 09:33     Вывести на экран сведений о книгах: автор, название, год издания #4
Цитата Сообщение от LK Посмотреть сообщение
Sylar9, если исходить из этого:, то структуру.
Можно поробувать решить

Добавлено через 13 минут
Цитата Сообщение от LK Посмотреть сообщение
Sylar9, если исходить из этого:, то структуру.
А ты не подскажешь начел код писать
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
#include <iostream>
#include <string.h>
#include <locale.h>
using namespace std;
struct lib
{
   string avtor; // имя автора
   string name; // название книги
   int god;    // год книги
 
};
int main()
{
    setlocale(LC_ALL, "Rus");
    lib l;
    cout << "Введите автора книги: ";
    cin >> l.avtor;
 
 
 
 
    system("puase");
    return 0;
}
У меня компилятор выдает ошибку на вводи cin >> l.avtor; я так понял что надо перегрузить операцию >> ? а можно как то по другому ? ввести данные
Алиш
 Аватар для Алиш
62 / 2 / 3
Регистрация: 10.04.2011
Сообщений: 126
06.05.2012, 10:25  [ТС]     Вывести на экран сведений о книгах: автор, название, год издания #5
Может кто нибудь дописать программу?
-=ЮрА=-
Заблокирован
Автор FAQ
06.05.2012, 10:36     Вывести на экран сведений о книгах: автор, название, год издания #6
Цитата Сообщение от Алиш Посмотреть сообщение
Может кто нибудь дописать программу?
тебе какой язык в коде надо Си или С++?

Добавлено через 35 секунд
И сразу напиши какой компилятор используешь, это тоже важно
Алиш
 Аватар для Алиш
62 / 2 / 3
Регистрация: 10.04.2011
Сообщений: 126
06.05.2012, 11:24  [ТС]     Вывести на экран сведений о книгах: автор, название, год издания #7
на С++, компилятор DevC
Sylar9
-20 / 55 / 2
Регистрация: 04.09.2011
Сообщений: 1,888
Записей в блоге: 1
06.05.2012, 11:42     Вывести на экран сведений о книгах: автор, название, год издания #8
Цитата Сообщение от Алиш Посмотреть сообщение
на С++, компилятор DevC
Я понял как надо, Только не знаю как отсортировать

Добавлено через 7 минут
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
#include <iostream>
#include <string.h>
#include <locale.h>
#include <vector>
#include <fstream>
using namespace std;
struct lib
{
   string avtor; // имя автора
   string name; // название книги
   int god;    // год книги
   lib(string a, string n, int g) :avtor(a), name(n), god(g) {}
 
};
int main()
{
    setlocale(LC_ALL, "Rus");
    cout << "Введите имя файла " << endl;
    string name;
    cin >> name;
    ifstream f(name.c_str());
 
    if(!f)
         cout << "Файл не существует" << endl;
 
    vector <lib> temp;
    string a;
    string n;
    int g;
 
    while (f >> a >> n >> g)
        temp.push_back(lib(a, n, g));
 
 
 
 
    system("puase");
    return 0;
}
Тут без сортировки и вывода данных о книги информатика
-=ЮрА=-
Заблокирован
Автор FAQ
06.05.2012, 17:25     Вывести на экран сведений о книгах: автор, название, год издания #9
Цитата Сообщение от Алиш Посмотреть сообщение
Программирование задач обработки структур и файлов
Даны сведения о книгах: автор, название, год издания. Вывести на экран сведения о книге "Информатика", упорядочив по возрастанию.
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
#include <iostream>
#include <fstream>
#include <clocale>
#include <string>
using namespace std;
 
struct BOOK
{
    string author;
    string bookname;
    int year;
};
 
bool getStruct(ifstream &ifs, BOOK &pBOOK);//ÂåðГ*ВёГІ ÈÑÒÈÍÀ åñëè ГіГ±ГЇГҐГёГ*Г® ГЁГ*èöèГ*ëèçèðóåì
//ñòðóêòóðó pBOOK ГЁГ§ ГґГ*éëîâîãî ïîòîêГ* ifstream
void outStruct(BOOK pBOOK);//ГЏГҐГ·Г*ГІГ*ГҐГІ ïîëÿ ñòðóêòóðû Г*Г* ГЅГЄГ°Г*Г*ГҐ
void swpStruct(BOOK &pLEFT, BOOK &pRIGHT);//ÎáìåГ*ГЁГўГ*ГҐГІ ñîäåðæèìîå ñòðóêòóð pLEFT pRIGHT
template <class T>
T * SetMemory(T * ptr, long n);//Âûäåëÿåò ГЇГ*ìÿòü Гў n ýëåìåГ*òîâ 
 
int main()
{
    system("chcp 1251");
    //setlocale(LC_ALL,"RUS");
    int i, j, n = 0;//Áóäåò ñîäåðæГ*ГІГј Гў Г±ГҐГЎГҐ ÷èñëî ñòðóêòóð
    BOOK * list = NULL;//ÓêГ*Г§Г*òåëü Г*Г* Г*Г*Гё Г¬Г*Г±Г±ГЁГў ñòðóêòóð ГЁГ§ ГґГ*éëГ*
    ifstream ifs("data.txt");//Ïðîáóåì îòêðûòü ГґГ*éë äëÿ Г·ГІГҐГ*ГЁГї
    if(!ifs.is_open())
        cout<<"ГЋГёГЁГЎГЄГ* îòêðûòèÿ ГґГ*éëГ* Г¤Г*Г*Г*ûõ\n";//Óïñ ñëó÷èëñÿ êîñÿê, 
        //ëèáî ГґГ*éë Г§Г*Г*ГїГІ äðóãèì ïðèëîæåГ*ГЁГҐГ¬ ëèáî ГҐГЈГ® Г*ГҐГІ Гў ГІГҐГЄГіГ№ГҐГ¬ ГЄГ*ГІГ*ëîãå ñîâñåì
    else
    {
        if(!(ifs>>n))
            cout<<"ГЋГёГЁГЎГЄГ* Г·ГІГҐГ*ГЁГї Г·ГЁГ±Г«Г* ñòðóêòóð\n";
        else
        if((list = SetMemory(list, n)))
        for(i = 0; i < n && !ifs.eof(); i++)
        {
            if(getStruct(ifs,list[i]))
                outStruct(list[i]);
            else
                break;
        }
        ifs.close();
        if(i != n)
            cout<<"ГЋГёГЁГЎГЄГ* Г·ГІГҐГ*ГЁГї Г¬Г*Г±Г±ГЁГўГ* ñòðóêòóð\n";
        else//Åñëè ГўГ±Вё Г±Г·ГЁГІГ*ëè äåëГ*ГҐГ¬ ñîðòèðîâêó ГЇГ® ãîäó
        {
            for(i = 0    ; i < n; i++)
            for(j = i + 1; j < n; j++)
            {
                if(list[j].year < list[i].year)
                    swpStruct(list[j], list[i]);
            }
            cout<<"\nÑîðòèðîâГ*Г*Г*ûé Г¬Г*Г±Г±ГЁГў ñòðóêòóð\n";
            //Âûâîäèì ñîðòèðîâГ*Г*Г*ûé Г¬Г*Г±Г±ГЁГў ñòðóêòóð
            for(i = 0; i < n ; i++)
                outStruct(list[i]);
        }
        if(list)
            delete [] list;//Г—ГЁГ±ГІГЁГ¬ ГЇГ*ìÿòü
    }
    system("pause");
    return 0;
}
    
bool getStruct(ifstream &ifs, BOOK &pBOOK)
{
    bool bCorrect = false;
    if(ifs>>pBOOK.author)
    if(ifs>>pBOOK.bookname)
    if(ifs>>pBOOK.year)
        bCorrect = true;
    if(!bCorrect)//Åñëè ââîä áûë Г± îøøèáêГ*ìè - Г·ГЁГ±ГІГЁГ¬ ïîòîê
    {
        ifs.clear();
        ifs.sync();
    }
    return bCorrect;
}
 
void outStruct(BOOK pBOOK)
{
    cout<<"Àâòîð    : "<<pBOOK.author<<endl;
    cout<<"ГЌГ*çâГ*Г*ГЁГҐ : "<<pBOOK.bookname<<endl;
    cout<<"Ãîä èçäГ*Г*ГЁГї : "<<pBOOK.year<<endl;
}
 
void swpStruct(BOOK &pLEFT, BOOK &pRIGHT)
{
    BOOK pBUF = pLEFT;
    pLEFT = pRIGHT;
    pRIGHT= pBUF;
}
 
template <class T>
T * SetMemory(T * ptr, long n)
{
    try
    {
        ptr = new T[n];
    }
    catch(bad_alloc &e)
    {
        cout<<"ГЋГёГЁГЎГЄГ* âûäåëåГ*ГЁГї ГЇГ*ìÿòè : "<<e.what()<<endl;
        ptr = NULL;
    }
    return ptr;
}
Файл данных
5
Книга1 Автор1 1998
Книга2 Автор2 2005
Книга3 Автор3 1984
Книга4 Автор4 2012
Книга5 Автор5 2001
Миниатюры
Вывести на экран сведений о книгах: автор, название, год издания  
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.05.2012, 17:32     Вывести на экран сведений о книгах: автор, название, год издания
Еще ссылки по теме:

C++ По дате, введенной с клавиатуры вывести число, название месяца и год
C++ Из структуры, содержащей название книги, автора, год издания, удалить издания с годом меньше заданного.
Найдите старейшую книгу в библиотеке. Выведите год ее издания и название C++

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

Или воспользуйтесь поиском по форуму:
-=ЮрА=-
Заблокирован
Автор FAQ
06.05.2012, 17:32     Вывести на экран сведений о книгах: автор, название, год издания #10
Для любителей кодпада
http://codepad.org/lgHCztJc
Output:
Автор : Книга1
Название : Автор1
Год издания : 1998
Автор : Книга2
Название : Автор2
Год издания : 2005
Автор : Книга3
Название : Автор3
Год издания : 1984
Автор : Книга4
Название : Автор4
Год издания : 2012
Автор : Книга5
Название : Автор5
Год издания : 2001

Сортированный массив структур
Автор : Книга3
Название : Автор3
Год издания : 1984
Автор : Книга1
Название : Автор1
Год издания : 1998
Автор : Книга5
Название : Автор5
Год издания : 2001
Автор : Книга2
Название : Автор2
Год издания : 2005
Автор : Книга4
Название : Автор4
Год издания : 2012
Yandex
Объявления
06.05.2012, 17:32     Вывести на экран сведений о книгах: автор, название, год издания
Ответ Создать тему
Опции темы

Текущее время: 11:43. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru