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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.82
AzgardC
7 / 7 / 0
Регистрация: 18.10.2012
Сообщений: 81
#1

Начало ООП - C++

17.02.2013, 14:10. Просмотров 1426. Ответов 38
Метки нет (Все метки)

Привет всем! У меня началось изучение ООП и соответственно пошли классы. Первое задание - постpоить класс для pаботы с массивом. Класс должен включать соответствующие поля: максимальный размер массива, индекс текущего элемента, указатель на массив. Я так понимаю что полями будут переменные которые я объявляю в private? А что мы делаем в public? Объявляем функции которые потом буду работать с переменными из private? Или все операции будут производиться в теле класса? Или эти функции и будут в теле класса, а не за его пределами?
Прошу помочь разобраться! Буду очень благодарен за помощь!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.02.2013, 14:10
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Начало ООП (C++):

Начало ООП. Классы - C++
Здравствуйте.Читал про ссылки массивов на указатели, и указателей на массивы.Не могу понять как в этой программе как функции ссылаются на...

Данный массив A (n). Все положительные его элементы поместить в начало массива B (n), а все отрицательные - в начало массива C (n). Подсчитать количес - C++
Данный массив A (n). Все положительные его элементы поместить в начало массива B (n), а все отрицательные - в начало массива C (n)....

Все положительные элементы поместить в начало массива В(n), а отрицательные элементы — в начало массива С(n) - C++
Ребята. Помогите с задачей пожалуйста. Дан массив А(n). Все положительные его элементы поместить в начало массива В(n), а...

по ООП . - C++
Помогите пожалуйтса с решением задач ! на С++ 1.Дана неубывающая последовательность действительных чисел. Вставить в неё...

ООП - C++
наследование - понятно агрегация - понятно использование - не понятно. что такое использование? спасибо.

ООП - C++
#pragma hdrstop #pragma argsused //#include "Student.hpp" //#include "Prof.hpp" //#include "Personne.hpp" #include <conio.h> ...

38
AzgardC
7 / 7 / 0
Регистрация: 18.10.2012
Сообщений: 81
17.02.2013, 17:18  [ТС] #16
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
#include <conio.h>
#include <iostream>
#include <math.h>
#include <time.h>
 
 
class massiv
{
private:
    int i,max,mas[100];// индекс лемента, макс. размер массива, массив
//  int *pmassi;// указатель на массив
public:
    massiv();// конструктор
    ~massiv();// деструктор
void neo(); // генерация массива
/*      void in(); //ф-я добавления нового элемента
    int search(); //ф-я поиска элемента
    int zam(); // ф-я замены элемента
    int del(); // ф-я удаления элемента
    void show(); //вывод массива
    */
}
massiv::massiv()
{
    time_t t;
    max=10; i=0;
srand((unsigned)time(&t));
         for (j = 0; j < max; ++j) mas[j]=rand() %10 + 1;
}
massiv::~massiv()
{ 
    for ( int i = 0; i < max; ++i) 
        delete[] mas[i]; 
    delete[] mas;
}
 
         void massiv::neo()
    {
        time_t t;
        int j;
         cout << "Введите максимальный размер массива"<<endl;
         cin >> max;
         srand((unsigned)time(&t));
         for (j = 0; j < max; ++j) mas[j]=rand() %10 + 1;
         for (j = 0; j < max; ++j) {printf("\t%8.4f\n", mas[j]);}
 
    }
Добавлено через 32 секунды
Раунд 2))
0
Kuzia domovenok
1891 / 1746 / 118
Регистрация: 25.03.2012
Сообщений: 5,926
Записей в блоге: 1
17.02.2013, 17:21 #17
Цитата Сообщение от ~OhMyGodSoLong~ Посмотреть сообщение
7: array

Не по теме:

Россия не Америка и не Англия. Пиндосы вообще тупые.


строка 32 точки с запятой не хватает.
Цитата Сообщение от ~OhMyGodSoLong~ Посмотреть сообщение
Внимательно подумайте, кто должен заполнять массив данными: он сам себя или это всё же кто-то внешний даёт ему данные?
Вот с этим нельзя не согласиться. Почему-то часто вижу многих, которые, ещё с первых упражнений с классами начиная, продолжают и далее делать ввод-вывод методом класса.
ИМХО если есть геттер для элементов массива, то пользователь класса сам сможет их в цикле брать по-очереди и выводить (может совсем и не в консоль ему надо).

Цитата Сообщение от ~OhMyGodSoLong~ Посмотреть сообщение
Где main()?
Я уже привык, что многие примеры показываются в виде отдельных классов/функций без "главной функции". Большее недоумение вызывает, когда в ответ на приведённый код функции следует: "Эй, А у меня ошибка unresolved external symbol _main"
1
AzgardC
7 / 7 / 0
Регистрация: 18.10.2012
Сообщений: 81
18.02.2013, 14:59  [ТС] #18
Цитата Сообщение от ~OhMyGodSoLong~ Посмотреть сообщение
22-32: Внимательно подумайте, кто должен заполнять массив данными: он сам себя или это всё же кто-то внешний даёт ему данные?
Просто я думал так: сначала автоматически будет создан массив, а затем пользователь будет его изменять как хочет. Пусть хоть все элементы заменит)))

Добавлено через 2 минуты
А main я еще сделаю)

Добавлено через 3 минуты
Ох! Извините! У меня потушили свет, и батарея на ноуте почти сдохла, так что добью эту тему завтра! Всем большое спасибо!

Добавлено через 21 час 18 минут
Продолжаю тему)
Достаточно ли моего конструктора или обязательно должен еще быть конструктор с параметрами?
0
ITcrusader
Эксперт С++
176 / 162 / 8
Регистрация: 12.02.2013
Сообщений: 410
18.02.2013, 15:03 #19
Цитата Сообщение от AzgardC Посмотреть сообщение
Достаточно ли моего конструктора или обязательно должен еще быть конструктор с параметрами?
Обязателен лишь конструктор по умолчанию (без параметров, либо с параметрами со значениями по умолчанию). Потому он и создается компилятором, если ты его не создашь. Что касается других конструкторов, тут ты волен решать, нужны ли они для конкретного твоего класса.

Например, для массива целесообразно задавать конструктор с параметром, например, размером массива...и т.д.
1
AzgardC
7 / 7 / 0
Регистрация: 18.10.2012
Сообщений: 81
18.02.2013, 15:05  [ТС] #20
ITcrusader, Все понял! Спасибо!
0
silent_1991
Эксперт С++
4984 / 3041 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
22.02.2013, 10:58 #21
Цитата Сообщение от AzgardC Посмотреть сообщение
Просто я думал так: сначала автоматически будет создан массив, а затем пользователь будет его изменять как хочет. Пусть хоть все элементы заменит)))
Давайте проведём такую аналогию. Есть автомобиль. У него есть бензобак. Как по-вашему, в автомобиле должна быть маленькая заправка, вырабатывающая бензин и подающая его в бензобак, или же кто-то должен заливать бензин извне через интерфейс автомобиля? В вашем коде "автомобиль" сам делает "бензин" для себя. А если пользователь не захочет вводить элементы массива вручную, а считать их из файла или вообще сгенерировать как-то в программе и записать в массив? На каждую новую задачу будете дописывать по методу в класс? Не дело это.
1
AzgardC
7 / 7 / 0
Регистрация: 18.10.2012
Сообщений: 81
22.02.2013, 12:43  [ТС] #22
silent_1991, Да, думаю вы правы. Пойду этим путем! Спасибо!
0
Voron55555
0 / 0 / 0
Регистрация: 13.11.2012
Сообщений: 14
22.02.2013, 16:03 #23
Прочтите Шилдта. Отлично все объясняет о ООП.
0
AzgardC
7 / 7 / 0
Регистрация: 18.10.2012
Сообщений: 81
28.02.2013, 19:13  [ТС] #24
Я вернулся с вопросами))
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
#include <conio.h>
#include <iostream>
#include <math.h>
#include <time.h>
#define W 100
using namespace std;
 
class massiv
{
private:
    int i,max,mas[W];
 
public:
    massiv();
    void neo(int m[W], int Max); 
    void printmassiv(); 
    
 
massiv::massiv()
{
    max=0; 
    i=0;
}
 
 
void massiv::neo(int m[W], int Max)
{
    max=Max;
    for (i = 0; i<max; ++i) mas[i]=m[i];
}
 
void massiv::printmassiv()
{
         for (i = 0; i < max; ++i) printf("\t%8.4f\n",mas[i]);
}
 
int main()
{
    int Max, m[W];
    massiv M;
    int j;
    cout << "Vvedite razmer massiva: ";
    cin >> Max;
    cout << "Vvodite elementi massiva nazhimaya Enter: \n";
    for (j = 0; j<Max; ++j) cin >>m[j];
    M.neo(m,  Max);
    cout << "Vot ON!\n";
    M.printmassiv();
    printf("\n Press any key: ");
     _getch();
 
}
Не ругайтесь что массив не динамический, позже сделаю. Можете сделать замечания по коду?
0
ITcrusader
Эксперт С++
176 / 162 / 8
Регистрация: 12.02.2013
Сообщений: 410
28.02.2013, 19:27 #25
Есть замечания))) Ща напишу...А ты запускал это?)))
0
AzgardC
7 / 7 / 0
Регистрация: 18.10.2012
Сообщений: 81
28.02.2013, 19:30  [ТС] #26
ITcrusader, Да, спасибо что напомнили, забыл его сделать))) А по коду можете подсказать чего?
0
ITcrusader
Эксперт С++
176 / 162 / 8
Регистрация: 12.02.2013
Сообщений: 410
28.02.2013, 19:36 #27
Могу, просто не знаю с чего начать)

1. Он не компилируется. Ты компилировал его перед тем, как сюда кинуть?
0
AzgardC
7 / 7 / 0
Регистрация: 18.10.2012
Сообщений: 81
28.02.2013, 19:42  [ТС] #28
он компилируется, вот только вместо массива выводит нули

Добавлено через 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
47
48
49
50
51
52
#include <conio.h>
#include <iostream>
#include <math.h>
#include <time.h>
#define W 100
using namespace std;
 
class massiv
{
private:
    int i,max,mas[W];
 
public:
    massiv();
    void neo(int m[W], int Max); 
    void printmassiv(); 
    
};
massiv::massiv()
{
    max=0; 
    i=0;
}
 
 
void massiv::neo(int m[W], int Max)
{
    max=Max;
    for (i = 0; i<max; ++i) mas[i]=m[i];
}
 
void massiv::printmassiv()
{
         for (i = 0; i < max; ++i) printf("\t%8.4f\n",mas[i]);
}
 
int main()
{
    int Max, m[W];
    massiv M;
    int j;
    cout << "Vvedite razmer massiva: ";
    cin >> Max;
    cout << "Vvodite elementi massiva nazhimaya Enter: \n";
    for (j = 0; j<Max; ++j) cin >>m[j];
    M.neo(m,  Max);
    cout << "Vot ON!\n";
    M.printmassiv();
    printf("\n Press any key: ");
     _getch();
 
}
0
ValeryS
Модератор
6654 / 5063 / 470
Регистрация: 14.02.2011
Сообщений: 16,934
28.02.2013, 19:43 #29
Цитата Сообщение от AzgardC Посмотреть сообщение
int i,
зачем ты его делаешь членом класса?
хватит и локального объявление в методах

Цитата Сообщение от AzgardC Посмотреть сообщение
void massiv::neo(int m[W], int Max)
попробуй
C++
1
void massiv::neo(int * m, int Max)
0
AzgardC
7 / 7 / 0
Регистрация: 18.10.2012
Сообщений: 81
28.02.2013, 19:44  [ТС] #30
Цитата Сообщение от ValeryS Посмотреть сообщение
зачем ты его делаешь членом класса?
просто в будущем я добавлю еще кое-какие методы
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.02.2013, 19:44
Привет! Вот еще темы с ответами:

ООП в С++ - C++
Здравствуйте! Ответьте пожалуйста на несколько вопросов... p.s. буду рад , если ответы будут сопровождаться примерами :) Хочу...

ООП - C++
Господа у меня возникло 2 вопроса по ООП т.к. только не давно начал его изучать . 1) Не как не могу понять для чего умные люди его...

ООП - C++
Создать класс Vegetable, содержащий следующие элементы: - поле «вес» float Mass; - поле «зрелость» int Ripeness; - метод получения...

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


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

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

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