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

Работа с классами и функциями - C++

Восстановить пароль Регистрация
 
Denisqwwq
 Аватар для Denisqwwq
38 / 32 / 1
Регистрация: 01.06.2013
Сообщений: 117
07.06.2013, 20:26     Работа с классами и функциями #1
Ребят, нужна ваша помощь. Начал изучать функции и классы и столкнулся вот с такой задачей:
Создайте класс boosh, который хранит информацию о книгах: название, автор, кол-во проданных экземпляров.
Используйте функцию show - для запоминания информации, функцию slow - для вывода информации.
вот, что у меня получилось: (наверняка тут огромное кол-во косяков)
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
#include "stdafx.h"
#include <iostream>
#include <string>
#define SIZE 10
using namespace std;
struct booshq
{   string name,autor;
    int kol;
};
class boosh
{
    public:
    booshq mas[SIZE];
    booshq show(void);
    void slow(booshq mas[SIZE]);
};
booshq boosh::show (void)
{
    int kol=5;
for (int i=0;i<kol;i++)
{
cout<<"Введите название,автора,кол-во экземпляров на руках:"<<endl;
cin>>mas[i].name>>mas[i].autor>>mas[i].kol;
}
return mas[SIZE];
}
void boosh::slow (booshq mas[SIZE])
{
    int kol=5;
    for (int i=0;i<kol;i++)
{
    cout<<"Название: "<<mas[i].name<<"Автор: "<<mas[i].autor<<"Кол-во экдемпляров "<<mas[i].kol;
}
}
int _tmain(int argc, _TCHAR* argv[])
{
    setlocale (LC_ALL,"rus");   
    boosh boosh1;
    booshq mas1[SIZE];
    mas1[SIZE]=boosh1.show();
    boosh1.slow(&mas1[SIZE]);
    cin.get();
    cin.get();
    return 0;
}
Собственно ошибка вылетает после того у пользователя запросили инф. о книгах. Строка 23-24. Нарушение прав доступа при чтение.Укажите на ошибки. Буду очень признателен
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.06.2013, 20:26     Работа с классами и функциями
Посмотрите здесь:

Работа с классами C++
работа с классами в С++ C++
C++ Работа с классами
C++ Работа с классами
C++ Работа с классами
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11845 / 6824 / 771
Регистрация: 27.09.2012
Сообщений: 16,917
Записей в блоге: 2
Завершенные тесты: 1
07.06.2013, 20:30     Работа с классами и функциями #2
нужна очистка входного потока
Denisqwwq
 Аватар для Denisqwwq
38 / 32 / 1
Регистрация: 01.06.2013
Сообщений: 117
07.06.2013, 20:38  [ТС]     Работа с классами и функциями #3
Цитата Сообщение от Croessmah Посмотреть сообщение
нужна очистка входного потока
можно немного поподробней?
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11845 / 6824 / 771
Регистрация: 27.09.2012
Сообщений: 16,917
Записей в блоге: 2
Завершенные тесты: 1
07.06.2013, 20:53     Работа с классами и функциями #4
Название и имя содержат пробелы?

Добавлено через 2 минуты
C++
1
2
3
4
5
6
7
8
for (int i=0;i<kol;i++)
{
cout<<"Введите название,автора,кол-во экземпляров на руках:"<<endl;
std::getline(std::cin,mas[i].name);
std::getline(std::cin,mas[i].autor);
std::cin>>mas[i].kol;
std::cin.ignore(std::cin.rdbuf()->in_avail());
}
dickivs
 Аватар для dickivs
46 / 46 / 6
Регистрация: 25.11.2011
Сообщений: 267
07.06.2013, 21:26     Работа с классами и функциями #5
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
//boosh.h
#ifndef BOOSH_H
#define BOOSH_H
 
#include<string>
using std::string;
 
class boosh
{
public:
    boosh(string = "Book Name", string = "Author Name", int = 0);
    void setName(string);
    void setAuthorName(string);
    void setSellValues(int);
 
    string GetName();
    string GetAuthorName();
    int GetSellValues();
private:
    string Name;
    string authorName;
    int sellVal;
};
#endif
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
//boosh.cpp
#include<string>
using std::string;
 
#include "boosh.h"
 
boosh::boosh(string name, string aname, int val)
{
    setName(name);
    setAuthorName(aname);
    setSellValues(val);
}
void boosh::setName(string name)
{
    Name = name;
}
 
string boosh::GetName()
{
    return Name;
}
 
void boosh::setAuthorName(string aname)
{
    authorName = aname;
}
 
string boosh::GetAuthorName()
{
    return authorName;
}
 
void boosh::setSellValues(int val)
{
    if(val < 0){
        val = 0;
        sellVal = val;
    }
 
    else{
        sellVal = val;
    }
 
 
}
 
int boosh::GetSellValues()
{
    return sellVal;
}
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
//class driver
#include<iostream>
using std::cin;
using std::cout;
using std::endl;
 
#include "boosh.h"
 
int main()
{
    boosh b;
    int v;
 
    v = 1000;
 
 
    b.setName("C++ programming");
    b.setAuthorName("Deitel");
    b.setSellValues(v);
 
    
    cout << "Name\t\t" << "Author name\t"<< "Sell values\n"
         << b.GetName()<< "\t" 
         << b.GetAuthorName() << "\t\t"
         << b.GetSellValues() << "$\n";
 
    return 0;
}
Denisqwwq
 Аватар для Denisqwwq
38 / 32 / 1
Регистрация: 01.06.2013
Сообщений: 117
08.06.2013, 07:22  [ТС]     Работа с классами и функциями #6
Цитата Сообщение от Croessmah Посмотреть сообщение
Название и имя содержат пробелы?

Добавлено через 2 минуты
C++
1
2
3
4
5
6
7
8
for (int i=0;i<kol;i++)
{
cout<<"Введите название,автора,кол-во экземпляров на руках:"<<endl;
std::getline(std::cin,mas[i].name);
std::getline(std::cin,mas[i].autor);
std::cin>>mas[i].kol;
std::cin.ignore(std::cin.rdbuf()->in_avail());
}
Нет, названия и имена пробелы не содержат.
Не помогло
Есть ещё предположения в чём ошибка?
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11845 / 6824 / 771
Регистрация: 27.09.2012
Сообщений: 16,917
Записей в блоге: 2
Завершенные тесты: 1
08.06.2013, 08:38     Работа с классами и функциями #7
Цитата Сообщение от Denisqwwq Посмотреть сообщение
Есть ещё предположения в чём ошибка?
Тут их тьма. Но что касается еще ошибки доступа то вот:
C++
1
return mas[SIZE];
Здесь Вы возвращаете элемент, который лежит за пределами массива, ибо индексация в массивах [0;SIZE)
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.06.2013, 14:35     Работа с классами и функциями
Еще ссылки по теме:

Работа с классами C++
C++ Работа с классами
C++ Не могу разобраться с функциями и классами

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

Или воспользуйтесь поиском по форуму:
Denisqwwq
 Аватар для Denisqwwq
38 / 32 / 1
Регистрация: 01.06.2013
Сообщений: 117
08.06.2013, 14:35  [ТС]     Работа с классами и функциями #8
Цитата Сообщение от Croessmah Посмотреть сообщение
Тут их тьма. Но что касается еще ошибки доступа то вот:
C++
1
return mas[SIZE];
Здесь Вы возвращаете элемент, который лежит за пределами массива, ибо индексация в массивах [0;SIZE)
Суть ошибки понял, спасибо большое Постарался всё исправить и вот, что вышло:
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
#define SIZE 5
using namespace std;
struct booshq
{   string name,autor;
    int kol;
};
class boosh
{
    public:
    booshq* show(booshq *mas);
    void slow(booshq *mas);
};
booshq* boosh::show (booshq *mas)
{
    int kol=5;
for (int i=0;i<kol;i++)
{
cout<<"Введите название,автора,кол-во экземпляров на руках:"<<endl;
cin>>mas[i].name>>mas[i].autor>>mas[i].kol;
}
return mas;
}
void boosh::slow (booshq *mas)
{
    int kol=5;
    for (int i=0;i<kol;i++)
{
    cout<<"Название: "<<mas[i].name<<" Автор: "<<mas[i].autor<<" Кол-во экдемпляров "<<mas[i].kol<<endl;
}
}
int _tmain(int argc, _TCHAR* argv[])
{
    setlocale (LC_ALL,"rus");   
    boosh boosh1;
    booshq * mas = new booshq[SIZE];    
    boosh1.show(mas);
    boosh1.slow(mas);
    cin.get();
    cin.get();
    return 0;
}
Вроде бы всё работает
Спасибо за грамотное указание на ошибки, благодаря этому всё усвоил.
Yandex
Объявления
08.06.2013, 14:35     Работа с классами и функциями
Ответ Создать тему
Опции темы

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