Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 5.00/13: Рейтинг темы: голосов - 13, средняя оценка - 5.00
20 / 16 / 7
Регистрация: 27.02.2012
Сообщений: 742
1

Создать библиотечный каталог n порядка, ввести данные

30.03.2013, 00:58. Показов 2637. Ответов 24
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Задача: Создать библиотечный каталог n порядка, ввести данные: название книги, автор, год издания, цена, вывод: общая цена, порядок каталога, книги, стоимостью больше 100.
Проблемы: класс задан в виде массива n порядка, не понятно, где присобачить:
C++
1
*sum+=*cost;//для суммирования стоимости на i-ом шаге
C++
1
2
if(*cost>=100)
return *title; //для возврата имени книг, которые дороже 100
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
#include<iostream>
#include<string>
 
using namespace std;
 
short n;
 
class catalog
{
    private:
    string *title;
    string *author;
    int *year;
    float *cost;
    float *sum=0;
    public:
    catalog(string goo, string roo, int bd, float price, float psum)
    {
      title=new string(goo);
      author=new string(roo);
      year=new int(bd);
      cost=new float(price);
      sum=new float(psum);
    }
    catalog()
    {
      title=new string();
      author=new string();
      year=new int();
      cost=new float();
      sum=new float();
    }
    float input()
    {
    cout<<"Title of book:"<<endl;
    cin>>*title;
    cout<<"Author of book:"<<endl;
    cin>>*author;
    cout<<"Year of print:"<<endl;
    cin>>*year;
    cout<<"Price of book:"<<endl;
    cin>>*cost;
    }
    void output()
    {
       cout<<"Books with price < 100: "<<endl;
       cout<<"Sum of books: "<<n<<endl;
       cout<<"Sum cost: "<<*sum<<endl;
 
    }
    ~catalog()
    {
        delete title; title=NULL;
        delete author; author=NULL;
        delete year; year=NULL;
        delete cost; cost=NULL;
    }
};
int main()
{
    cout<<"Enter size of catalog"<<endl;
    cin>>n;
    catalog h[n];
    for(int i=0;i<n;i++){
    h[i].input();
    h[i].output();}
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
30.03.2013, 00:58
Ответы с готовыми решениями:

Программа - библиотечный каталог
Всем привет! Рад что здесь есть луди действительно опытные в этотом вопросе... вообщем нуждаюсь в...

создать таблицу и ввести в нее данные по номеру
Хочу сделать таблицу-простую-номера столбцов 1 2 3 4 5 6 7 8 9 10 1a 1b 1c 1d 1e...

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

Создать массив объектов пользовательского типа "Car" (каталог машин) и функции чтения/записи из/в каталог(а)
Добрый день! Нужно составить программу, которая будет дополнять каталог автомобилей Имеется...

24
:)
Эксперт С++
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
30.03.2013, 10:49 2
Satansoft, что ж Вы так new пихаете везде, где ни попадя?
0
381 / 352 / 113
Регистрация: 17.05.2012
Сообщений: 1,049
30.03.2013, 11:08 3
Satansoft, уж лучше тогда выделить память под массив

C++
1
catalog *h = new catalog[n];
да и в задании ничего не сказано про указатели, зачем лишнюю мороку себе создавать..

Цитата Сообщение от Satansoft Посмотреть сообщение
Код C++
1
*sum+=*cost;//для суммирования стоимости на i-ом шаге
Код C++
1
2
if(*cost>=100)
return *title; //для возврата имени книг, которые дороже 100
нужно сделать функцию которая выводит все книги дороже 100 и функцию для суммирования стоимости... И проблема будет решена
1
20 / 16 / 7
Регистрация: 27.02.2012
Сообщений: 742
30.03.2013, 13:06  [ТС] 4
Цитата Сообщение от yoghurt92 Посмотреть сообщение
нужно сделать функцию которая выводит все книги дороже 100 и функцию для суммирования стоимости... И проблема будет решена
А вот и нед (: тут с описанием проблемы, как я понял,...ибо падаван по классам, есть мысли?
0
381 / 352 / 113
Регистрация: 17.05.2012
Сообщений: 1,049
30.03.2013, 13:08 5
Satansoft, под функциями я понимал методы класса
0
20 / 16 / 7
Регистрация: 27.02.2012
Сообщений: 742
30.03.2013, 13:16  [ТС] 6
yoghurt92, метод - ф-я внутри класса?
0
381 / 352 / 113
Регистрация: 17.05.2012
Сообщений: 1,049
30.03.2013, 13:18 7
Satansoft, угадали
0
20 / 16 / 7
Регистрация: 27.02.2012
Сообщений: 742
30.03.2013, 13:35  [ТС] 8
yoghurt92,
Метод суммирования
C++
1
2
3
4
5
float summ()
    {
        *sum+=*cost;
        return *sum;
    }
Метод с выводом
C++
1
2
3
4
5
void output()
    {
       cout<<"Books with price < 100: "<<endl;
       cout<<"Sum of books: "<<n<<endl;
       cout<<"Sum cost: "<<summ()<<endl;
Вызов не менялся
C++
1
2
3
4
5
6
7
8
9
int main()
{
    cout<<"Enter size of catalog"<<endl;
    cin>>n;
    catalog h[n];
    for(int i=0;i<n;i++){
    h[i].input();
    h[i].output();}
}
Ну не суммирует, на i-ом шаге выбивает i-ю цену..., что пропустил?
0
381 / 352 / 113
Регистрация: 17.05.2012
Сообщений: 1,049
30.03.2013, 13:59 9
Satansoft, а что вы суммируете в функции? вы же ничего не передаете в нее...
0
20 / 16 / 7
Регистрация: 27.02.2012
Сообщений: 742
30.03.2013, 14:03  [ТС] 10
yoghurt92, точно) а как передать?
0
381 / 352 / 113
Регистрация: 17.05.2012
Сообщений: 1,049
30.03.2013, 14:06 11
Satansoft, смотри, переменная для суммы должна быть не в классе описана а в мейне, т.к. конструктор будет для каждого поля делать ее равной нулю, а нам она нужна как счетчик сумм цен на все книги, поэтому мы опишем ее в мейне...

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
#include "stdafx.h"
#include <iostream>
#include <string>
using namespace std;
 
short n;
 
class catalog
{
    private:
        string title,
               author;
 
        int year;
        float cost;
 
    public:
        catalog()
        {
          title = "";
          author = "";
          year = 0;
          cost = 0;
        }
 
        catalog(string _goo, string _roo, int _bd, float _price)
        {
          title = _goo;
          author = _roo;
          year = _bd;
          cost = _price;
        }
 
        float getcost()
        {
            return cost;
        }
 
        void input()
        {
            cout << "Title of book: " << endl;
                cin.ignore();
                getline(cin, title, '\n');
            cout << "Author of book: " << endl;
                getline(cin, author, '\n');
            cout << "Year of print: " << endl;
                cin >> year;
            cout << "Price of book: " << endl;
                cin>> cost;
        }
 
        void output()
        {
           cout << "Books with price < 100: ";
           cout << "\nSum of books: " << n;
        }
 
        ~catalog() {}
};
int main()
{
    cout << "Enter size of catalog: " << endl;
         cin >> n;
 
    float sum = 0;
    catalog *h = new catalog[n];
    for(int i = 0; i < n; i++){
        h[i].input();
        cout << endl;
    }
 
     for(int i = 0; i < n; i++){
         h[i].output();
         cout << endl;
    }
 
    cout << endl << endl;
    for(int i = 0; i < n; i++){
        sum += h[i].getcost();
    }
 
    /*вот твоя сумма*/
    cout << sum << endl;
    delete []h;
    return 0;
}
1
20 / 16 / 7
Регистрация: 27.02.2012
Сообщений: 742
30.03.2013, 14:53  [ТС] 12
Идею понял, сама задача ставится шире, нежели описал, не указывал её т.к она реализована, пусть и не идеально:
Полная задача: описание класса, выделение памяти в конструкторе, перегрузка конструкторов, удаление выделенной памяти через деструктор, использование закрытых членов класса (под переменные), нахождение общей суммы введенных данных, нахождение суммы, дороже 100.

При такой вариации, завершается ошибкой по прохождении первой итерации цикла:
C++
1
2
3
float summ()
    {
        return *cost;
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
int main()
{
    float *sum=0;
    cout<<"Enter size of catalog"<<endl;
    cin>>n;
    catalog h[n];
    for(int i=0;i<n;i++){
    h[i].input();
    h[i].output();
    *sum+=h[i].summ();}
    cout<<*sum<<endl;
    return 0;
}
0
381 / 352 / 113
Регистрация: 17.05.2012
Сообщений: 1,049
30.03.2013, 15:00 13
Satansoft, ну если ты возвращаешь указатель, то нужно указать

C++
1
2
3
4
float *summ()
{
        return *cost;
}
Добавлено через 49 секунд
Satansoft, и обычно если и выделяется динамическая память, то под строки, числовые переменные редко когда выделяется
0
20 / 16 / 7
Регистрация: 27.02.2012
Сообщений: 742
30.03.2013, 15:09  [ТС] 14
Я даже не ищу рациональное зерно в этой работе, это винигрет из 4 лаб, которые, якобы, можно совместить...


C++
1
2
3
4
float *summ()
{
        return *cost;
}
Ругается на невозможность конвертации, следовательно передает правильно и ошибка не тут?

проблема решена:

C++
1
float *sum;
0
381 / 352 / 113
Регистрация: 17.05.2012
Сообщений: 1,049
30.03.2013, 15:17 15
Satansoft, покажи что у тебя там, кинь весь код. Это я тупонул, все правильно ругается, убери "*" перед cost, но не забудь разыменовать потом
0
20 / 16 / 7
Регистрация: 27.02.2012
Сообщений: 742
30.03.2013, 15:30  [ТС] 16
Реализация "Выводить книги, стоимость которых больше 100" уткнулась в невозможность конверта стрингов в матрицу символов.

Весь код, с кривотой в мейне (:
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
#include<iostream>
#include<string>
 
using namespace std;
 
short n;
 
class catalog
{
    private:
    string *title;
    string *author;
    int *year;
    float *cost;
    public:
    catalog(string goo, string roo, int bd, float price)
    {
      title=new string(goo);
      author=new string(roo);
      year=new int(bd);
      cost=new float(price);
    }
    catalog()
    {
      title=new string();
      author=new string();
      year=new int();
      cost=new float();
    }
    float input()
    {
    cout<<endl<<"Title of book:"<<endl;
    cin>>*title;
    cout<<"Author of book:"<<endl;
    cin>>*author;
    cout<<"Year of print:"<<endl;
    cin>>*year;
    cout<<"Price of book:"<<endl;
    cin>>*cost;
    }
    float summ()
    {
        return *cost;
    }
    string liab()
    {
        return *title;
    }
    void output()
    {
       cout<<endl<<"Books with price < 100: "<<endl;
       cout<<"Sum of books: "<<n<<endl;
       cout<<"Sum cost: "<<summ()<<endl;
 
    }
    ~catalog()
    {
        delete title; title=NULL;
        delete author; author=NULL;
        delete year; year=NULL;
        delete cost; cost=NULL;
    }
};
int main()
{
    float *sum;
    char **lib[50];
    cout<<"Enter size of catalog"<<endl;
    cin>>n;
    catalog h[n];
    for(int i=0;i<n;i++){
    h[i].input();
    h[i].output();
    *sum+=h[i].summ();
    if(h[i].summ()>=100)
    {*lib[i]=h[i].liab();}
    };
    cout<<endl<<*sum<<endl;
    cout<<*lib<<endl;
    return 0;
}
0
381 / 352 / 113
Регистрация: 17.05.2012
Сообщений: 1,049
30.03.2013, 15:34 17
Satansoft, я задам один вопрос, ты пишешь без компиляции?
0
20 / 16 / 7
Регистрация: 27.02.2012
Сообщений: 742
30.03.2013, 15:42  [ТС] 18
Цитата Сообщение от yoghurt92 Посмотреть сообщение
я задам один вопрос, ты пишешь без компиляции?
с компиляцией
0
381 / 352 / 113
Регистрация: 17.05.2012
Сообщений: 1,049
30.03.2013, 15:45 19
Satansoft, а почему тогда так много ошибок? надо же смотреть что пишет компилятор...
0
20 / 16 / 7
Регистрация: 27.02.2012
Сообщений: 742
30.03.2013, 15:48  [ТС] 20
yoghurt92,
0
30.03.2013, 15:48
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
30.03.2013, 15:48
Помогаю со студенческими работами здесь

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

Реализовать библиотечный каталог
вот ещё Реализовать библиотечный каталог, который позволяет: добавлять и удалять информацию о...

Создать файл каталог книг, по году издания занести в отдельный файл данные
создайте файл каталог книг по заданному значению года издания занесите в отдельный файл сведения о...

Создать библиотечный модуль
Составить программу, вызывающую процедуры и функции созданного модуля из этой программы: uses...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru