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

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

Войти
Регистрация
Восстановить пароль
 
prog-hak
2 / 2 / 2
Регистрация: 08.01.2013
Сообщений: 62
#1

Перезапись символьных данных в массиве классов - C++

11.07.2015, 15:00. Просмотров 172. Ответов 2
Метки нет (Все метки)

Есть массив классов и в него нужно записывать название книги, имя автора и цену книги.
У каждого автора свой номер от 0-5(мой массив классов).
Все пишется нормально, только при просмотре для соответствующего автора правильно показывает только цену, а имя автора и название книги у всех перезаписывается как у последнего.
Подскажите кто шарит или сталкивался.
Books.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#pragma once
 
namespace LB
{
    typedef unsigned int ui;
    class Books
    {
    private:
        char* NameBook;
        char* NameAuthor;
        ui Price;
    public:
        Books(void);
        //Books(char*,char*,ui);
        void setBook(char*,char*,ui);
        void getBook();
        ~Books(void);
    };
}
Books.cpp
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
#include <iostream>
#include "Books.h"
 
using namespace std;
 
namespace LB
{
    Books::Books(void)
    {
    }
 
    //Books::Books()
    
    void Books::setBook(char* nb, char* na, ui pr)
    {
        NameBook=nb;
        NameAuthor=na;
        Price=pr;
    }
    
    void Books::getBook()
    {
        cout<<"Name book: "<<NameBook<<endl;
        cout<<"Name author: "<<NameAuthor<<endl;
        cout<<"Price: "<<Price<<endl;
    }
    Books::~Books(void)
    {
    }
}
Source.cpp
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
#include <iostream>
#include <conio.h>
#include "Books.h"
 
using namespace std;
using LB::Books;
 
Books a[5];
 
void menu(char* nb, char* na, int n);
void AddAuthor(char* nb, char* na, int n);
void ViewAuthor();
 
int main()
{
    char nb[10];
    char na[10];
    int n=0;
    
    menu(nb,na,n);
    _getch();
    return 0;
}
 
void menu(char* nb, char* na, int n)
{
    cout<<"\t\t***Library***"<<endl;
    int index;
    bool flag=true;
    do
    {
        cout<<"1. Add author\n2. View author\n0. For exit"<<endl;
        cin>>index;
        switch(index)
        {
        case 1: AddAuthor(nb,na,n);break;
        case 2: ViewAuthor();break;
        default: flag=false; break;
        }
        if(index==1)
            n++;
        _getch();
        system("cls");
    }while(flag!=false);
}
 
void AddAuthor(char* nb, char* na, int n)
{
    //Books a[5];
    
    int pr;
    cin.get();
    cout<<"Enter name book: "; cin>>nb;
    cout<<"Enter name author: "; cin>>na;
    cout<<"Enter price: "; cin>>pr;
    a[n].setBook(nb,na,pr);
    
}
 
void ViewAuthor()
{
    int n;
    cout<<"Enter number author: "; cin>>n;
    a[n].getBook();
}
0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.07.2015, 15:00
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Перезапись символьных данных в массиве классов (C++):

Перезапись данных в файл - C++
void change() { if (sch==0) { system(&quot;cls&quot;); printf(&quot; ...

Перезапись данных из одной матрицы в другую - C++
написал код для перезаписи данных из одной матрицы в другую, но при запуске вылетает ошибка ..что исправить?// ConsoleApplication7.cpp:...

Обработка символьных данных - C++
Условие задачи: Дана не пустая последовательность слов ,в каждом из которых от 1 до 8 букв;между словами знак '*' ,а за последним словом...

Обработка символьных данных - C++
Пусть во входном потоке находится последовательность литер, заканчивающаяся точкой (кодировка ASCII) Задание: Определить, сколько раз в...

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

Обработка символьных и строчных данных в С - C++
Дано строчку символов (строчку ввести с клавиатуры). Заменить в строчке каждую точку на 3 точки (. =&gt; ...). В С++

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
nmcf
5319 / 4639 / 1551
Регистрация: 14.04.2014
Сообщений: 18,452
11.07.2015, 15:08 #2
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Сделай массивы по типу char NameBook[50], так проще будет, или выделяй память в каждом объекте. А проще всего std::string.
1
prog-hak
2 / 2 / 2
Регистрация: 08.01.2013
Сообщений: 62
11.07.2015, 15:18  [ТС] #3
Спасибо, сделал через string все заработало.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.07.2015, 15:18
Привет! Вот еще темы с ответами:

Обработка символьных и строчных данных в С++ - C++
Дана строка. Определить длину самого длинного и самого короткого предложения. Результаты вывести на экран. Строка для обработки ввести с...

Составить программу для обработки символьных данных - C++
Нужно ввести с клавиатуры предложение и сделать перестановку букв так чтобы буквы из строки отсортировались в столбик

Написать программу для обработки символьных данных - C++
Предусмотрите ввод с клавиатуры произвольной строки символов. На экран вывести введенную строку и результат ее обработки. Найти пару...

Задача на обработку символьных данных сложной структуры - C++
Помогите пожалуйста с задачей 3.10, а само задание вот, номер 15:


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

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

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