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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Satansoft
8 / 8 / 1
Регистрация: 27.02.2012
Сообщений: 724
#1

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

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

Задача: Создать библиотечный каталог 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();}
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.03.2013, 00:58
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Создать библиотечный каталог n порядка, ввести данные (C++):

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

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

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

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

Структуры: ввести данные о работниках и вывести их данные, отсортированные по алфавиту - C++
Всем привет! Подскажите пожалуйста, что не так с моей функцией proverka? Мне нужно ввести данные о работниках и вывести их данные,...

Ввести данные в файл, и записать данные с файла в массив структур - C++
Ввести все данные в файл, и записать данные с файла в структуру. Помогите ввести и вывести структуру из файла. Допускается - и желательно...

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

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


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

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

C++
1
float *sum;
yoghurt92
374 / 345 / 22
Регистрация: 17.05.2012
Сообщений: 1,049
30.03.2013, 15:17 #15
Satansoft, покажи что у тебя там, кинь весь код. Это я тупонул, все правильно ругается, убери "*" перед cost, но не забудь разыменовать потом
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.03.2013, 15:17
Привет! Вот еще темы с ответами:

С помощью методов ввести данные, вывести данные из массива - C++
Создать класс собак (название породы, возраст (больше двух лет), вес, средний вес породы, группа). В функции main создать массив собак трех...

Создать каталог организаций города и отсортировать по названию - C++
Создать каталог организаций города (динамический массив) и отсортировать по названию ( friend - функция). Помогите пожалуйста #include...

Создать каталог организаций города и отсортировать по названию - C++
Помогите пожалуйста! Только начала изучать классы, не все понимаю. Создать класс Organization. Переменная типу Organization должна...

Используя STL контейнер создать каталог песен - C++
помогите пожалуйста написать программу на С++. Буду очень благодарна) Текстовый файл содержит информацию о каталоге песен в форме –...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
30.03.2013, 15:17
Ответ Создать тему
Опции темы

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