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

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

Восстановить пароль Регистрация
 
 
Satansoft
 Аватар для Satansoft
7 / 7 / 1
Регистрация: 27.02.2012
Сообщений: 694
30.03.2013, 00:58     Создать библиотечный каталог n порядка, ввести данные #1
Задача: Создать библиотечный каталог 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();}
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Tulosba
:)
Эксперт С++
4378 / 3221 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
30.03.2013, 10:49     Создать библиотечный каталог n порядка, ввести данные #2
Satansoft, что ж Вы так new пихаете везде, где ни попадя?
yoghurt92
373 / 344 / 22
Регистрация: 17.05.2012
Сообщений: 1,049
30.03.2013, 11:08     Создать библиотечный каталог n порядка, ввести данные #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 и функцию для суммирования стоимости... И проблема будет решена
Satansoft
 Аватар для Satansoft
7 / 7 / 1
Регистрация: 27.02.2012
Сообщений: 694
30.03.2013, 13:06  [ТС]     Создать библиотечный каталог n порядка, ввести данные #4
Цитата Сообщение от yoghurt92 Посмотреть сообщение
нужно сделать функцию которая выводит все книги дороже 100 и функцию для суммирования стоимости... И проблема будет решена
А вот и нед (: тут с описанием проблемы, как я понял,...ибо падаван по классам, есть мысли?
yoghurt92
373 / 344 / 22
Регистрация: 17.05.2012
Сообщений: 1,049
30.03.2013, 13:08     Создать библиотечный каталог n порядка, ввести данные #5
Satansoft, под функциями я понимал методы класса
Satansoft
 Аватар для Satansoft
7 / 7 / 1
Регистрация: 27.02.2012
Сообщений: 694
30.03.2013, 13:16  [ТС]     Создать библиотечный каталог n порядка, ввести данные #6
yoghurt92, метод - ф-я внутри класса?
yoghurt92
373 / 344 / 22
Регистрация: 17.05.2012
Сообщений: 1,049
30.03.2013, 13:18     Создать библиотечный каталог n порядка, ввести данные #7
Satansoft, угадали
Satansoft
 Аватар для Satansoft
7 / 7 / 1
Регистрация: 27.02.2012
Сообщений: 694
30.03.2013, 13:35  [ТС]     Создать библиотечный каталог n порядка, ввести данные #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-ю цену..., что пропустил?
yoghurt92
373 / 344 / 22
Регистрация: 17.05.2012
Сообщений: 1,049
30.03.2013, 13:59     Создать библиотечный каталог n порядка, ввести данные #9
Satansoft, а что вы суммируете в функции? вы же ничего не передаете в нее...
Satansoft
 Аватар для Satansoft
7 / 7 / 1
Регистрация: 27.02.2012
Сообщений: 694
30.03.2013, 14:03  [ТС]     Создать библиотечный каталог n порядка, ввести данные #10
yoghurt92, точно) а как передать?
yoghurt92
373 / 344 / 22
Регистрация: 17.05.2012
Сообщений: 1,049
30.03.2013, 14:06     Создать библиотечный каталог n порядка, ввести данные #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;
}
Satansoft
 Аватар для Satansoft
7 / 7 / 1
Регистрация: 27.02.2012
Сообщений: 694
30.03.2013, 14:53  [ТС]     Создать библиотечный каталог n порядка, ввести данные #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;
}
yoghurt92
373 / 344 / 22
Регистрация: 17.05.2012
Сообщений: 1,049
30.03.2013, 15:00     Создать библиотечный каталог n порядка, ввести данные #13
Satansoft, ну если ты возвращаешь указатель, то нужно указать

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


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

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

C++
1
float *sum;
yoghurt92
373 / 344 / 22
Регистрация: 17.05.2012
Сообщений: 1,049
30.03.2013, 15:17     Создать библиотечный каталог n порядка, ввести данные #15
Satansoft, покажи что у тебя там, кинь весь код. Это я тупонул, все правильно ругается, убери "*" перед cost, но не забудь разыменовать потом
Satansoft
 Аватар для Satansoft
7 / 7 / 1
Регистрация: 27.02.2012
Сообщений: 694
30.03.2013, 15:30  [ТС]     Создать библиотечный каталог n порядка, ввести данные #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;
}
yoghurt92
373 / 344 / 22
Регистрация: 17.05.2012
Сообщений: 1,049
30.03.2013, 15:34     Создать библиотечный каталог n порядка, ввести данные #17
Satansoft, я задам один вопрос, ты пишешь без компиляции?
Satansoft
 Аватар для Satansoft
7 / 7 / 1
Регистрация: 27.02.2012
Сообщений: 694
30.03.2013, 15:42  [ТС]     Создать библиотечный каталог n порядка, ввести данные #18
Цитата Сообщение от yoghurt92 Посмотреть сообщение
я задам один вопрос, ты пишешь без компиляции?
с компиляцией
yoghurt92
373 / 344 / 22
Регистрация: 17.05.2012
Сообщений: 1,049
30.03.2013, 15:45     Создать библиотечный каталог n порядка, ввести данные #19
Satansoft, а почему тогда так много ошибок? надо же смотреть что пишет компилятор...
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.03.2013, 15:48     Создать библиотечный каталог n порядка, ввести данные
Еще ссылки по теме:

Структуры: ввести данные о работниках и вывести их данные, отсортированные по алфавиту C++
C++ Используя STL контейнер создать каталог песен
C++ С помощью методов ввести данные, вывести данные из массива

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

Или воспользуйтесь поиском по форуму:
Satansoft
 Аватар для Satansoft
7 / 7 / 1
Регистрация: 27.02.2012
Сообщений: 694
30.03.2013, 15:48  [ТС]     Создать библиотечный каталог n порядка, ввести данные #20
yoghurt92,
[IMG]http://s51.***********/i134/1303/21/8a856d54ffd0t.jpg[/IMG]
Yandex
Объявления
30.03.2013, 15:48     Создать библиотечный каталог n порядка, ввести данные
Ответ Создать тему
Опции темы

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