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

Создать класс для обработки информации об инструментах - C++

Восстановить пароль Регистрация
 
kokoz9br
0 / 0 / 0
Регистрация: 01.05.2012
Сообщений: 42
10.11.2012, 20:43     Создать класс для обработки информации об инструментах #1
Только начали изучать классы. Немного недопонимаю я их.

Задача:
Создать класс для обработки информации об инструментах.
Сведения об инструменте содержат название, размер, материал, из которого он изготовлен. Функции:
а) функция ввода информации об инструменте;
б) функция вывода информации об инструменте;
в) функция, возвращающая информацию о материале инструмента;
г) функция, возвращающая информацию о размере инструмента.


Вот,собственно,мой код:
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
// Третья лаба.cpp: определяет точку входа для консольного приложения.
//
 
#include "stdafx.h"
#include <iostream>
using namespace std;
 
class student
{
private:
    char nazv[20];
    int razm[20];
    char mater[20];
 
public:
        vvod(int);
        void vivod(int);
        int vivodmaterial(int);
        int vivodrazmer(int);
};
student::vvod(int n);
{
    for(int i=0;i<n;i++)
    {
 
    cout<<"\n Vvedite nazvanie: ";
    cin>>nazv[i];
    cout<<"\n Vvefite razmer: ";
    cin>>razm[i];
    cout<<"\n Vvedite material: ";
    cin>>mater[i];
    }
}
void student::vivod(int n);
{
    for(int i=1;i<n;i++)
    {
    cout<<"\n nazvanie: "<<nazv[i];
    cout<<"\n razmer: "<<razm[i];
    cout<<"\n material: "<<mater[i];
}
int student::vivodmaterial();
{
    return mater;
}
int student::vivodrazmer();
{
    return razm;
}
 
int _tmain(int argc, _TCHAR* argv[])
{
    student mas[10];
    cout<<"vvedite kol-vo elementov: ";
    int n;
    cin>>n;
    for(int i=0;i<n;i++)
    mas[i].vvod();
    for(int i=0;i<n;i++)
    mas[i].vivod();
    for(int i=0;i<n;i++)
    {
        cout<<i<<" zapis' : ";
        mas[i].vivodmaterial();
    }
    for(int i=0;i<n;i++)
    {
        cout<<i<<" zapis' : ";
        mas[i].vivodrazmer();
    }
    return 0;
}
Как и ожидаемо,при компиляции нашлось много ошибок. Не могли бы Вы мне помочь в решении данной задачи.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.11.2012, 20:43     Создать класс для обработки информации об инструментах
Посмотрите здесь:

Создать класс который может быть использован для хранения информации и студентах C++
C++ Программа для обработки информации об автомобилях, сдающихся на прокат
Класс для обработки информации о вычислительной машине C++
Создать класс для обработки информации о различных датах C++
Класс для обработки информации о людях C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Kuzia domovenok
 Аватар для Kuzia domovenok
1882 / 1737 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 1
10.11.2012, 21:18     Создать класс для обработки информации об инструментах #2
Написал бы что за сообщения об ошибках - людям не пришлось бы пристально изучать код.
Многие ошибки не связаны с темой "классы". Например, здесь пропущена фигурная скобка.
Цитата Сообщение от kokoz9br Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
void student::vivod(int n);
{
      for(int i=1;i<n;i++)
      {
      cout<<"\n nazvanie: "<<nazv[i];
      cout<<"\n razmer: "<<razm[i];
      cout<<"\n material: "<<mater[i];
}
Добавлено через 2 минуты
другой недостаток - в классе не хранится само n, а передаётся как параметр в метод. В результате возможно сделать
C++
1
2
mas[i].vvod(5);
mas[i].vivod(10);
Хотя... о чём это я? Эти массивы и есть одна большая ошибка.
Даже название класса student, а задание про класс instrument

Добавлено через 6 минут
Лучше делай класс с таким объявлением!
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
class instrument
{
private:
    char nazv[20];//Строка с названием
    char mater[20];//Строка с материалом  
    //это строки, а не массивы для заполнения в цикле for
    int razm;         // а это уж точно не массив
 
public:
        void vvod();//VOID!! это метод, а не конструктор!
        void vivod();
        int vivodmaterial();
        int vivodrazmer();//никаких n не передавать!
};
Добавлено через 2 минуты
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
void instrument::vvod();   //void забыт был
{
    cout<<"\n Vvedite nazvanie: ";
    cin>>nazv;
    cout<<"\n Vvefite razmer: ";
    cin>>razm;
    cout<<"\n Vvedite material: ";
    cin>>mater;
}
void instrument::vivod();
{
    cout<<"\n nazvanie: "<<nazv;
    cout<<"\n razmer: "<<razm;
    cout<<"\n material: "<<mater;
}
int instrument::vivodmaterial();
{
    return mater;
}
int instrument::vivodrazmer();
{
    return razm;
}
 
int _tmain(int argc, _TCHAR* argv[])
{
    instrument mas[10];
    cout<<"vvedite kol-vo elementov: ";
    int n;
    cin>>n;
    for(int i=0;i<n;i++)
    mas[i].vvod();
    for(int i=0;i<n;i++)
    mas[i].vivod();
    for(int i=0;i<n;i++)
    {
        cout<<i<<" zapis' : ";
        mas[i].vivodmaterial();
    }
    for(int i=0;i<n;i++)
    {
        cout<<i<<" zapis' : ";
        mas[i].vivodrazmer();
    }
    return 0;
}
kokoz9br
0 / 0 / 0
Регистрация: 01.05.2012
Сообщений: 42
10.11.2012, 21:39  [ТС]     Создать класс для обработки информации об инструментах #3
Переоформил объявление класса по твоему совету.
Но возникли проблемы при компиляции.
В этом куске кода:
C++
1
2
3
4
int instrument::vivodmaterial()
{
    return mater;
}
return:невозможно преобразовать "char[20]" в "int"
Kuzia domovenok
 Аватар для Kuzia domovenok
1882 / 1737 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 1
10.11.2012, 21:44     Создать класс для обработки информации об инструментах #4
ну не сложно же догадаться, что функция не int должна возвращать!
С другой стороны, а что она вообще должна возвращать?
Почему она у тебя не выводила материал, а возвращала? Так и было задумано?
Короче:
C++
1
2
3
4
void instrument::vivodmaterial()
{
    std::cout<<"\n material: "<<mater;
}
Yandex
Объявления
10.11.2012, 21:44     Создать класс для обработки информации об инструментах
Ответ Создать тему
Опции темы

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