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

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

Войти
Регистрация
Восстановить пароль
 
 
tokar2
25 / 25 / 1
Регистрация: 09.11.2012
Сообщений: 229
#1

Деструктор (программа, которая ищет минимальный элемент массива) - C++

24.12.2012, 16:07. Просмотров 762. Ответов 15
Метки нет (Все метки)

Вот написал простенькую программу, которая ищет минимальный элемент массива! С конструктором более менее разобрался, а с деструктором что-то не получается! Что в данном случае нужно написать чтобы разрушить объект?
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
#include <iostream.h>
#include <conio.h>
 
const int n=10;
 
class Class{
      int num[n];
      
public:
       void cou_t();
       void min();
       Class();
       //~Class();
       };
Class::Class(){
       for(int i=0;i<n;i++)
        num[i]=rand()%10+1;
        }
void Class::cou_t()
{
     for(int i=0;i<n;i++)
        cout<<num[i]<<" ";
 }
void Class::min()
{
     int m=num[0];
     for(int i=0;i<n;i++)
        if(num[i]<m) m=num[i];
     cout<<"\nMin element is "<<m;
 }
int main()
{
    srand(time(0));
    Class obj;
    obj.cou_t();
    obj.min();
    getch();
    return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.12.2012, 16:07
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Деструктор (программа, которая ищет минимальный элемент массива) (C++):

Напишите программу, которая ищет элемент массива и выводит на экран его номер - C++
Напишите программу, которая ищет элемент массива и выводит на экран его номер.

функция, которая определяет минимальный элемент массива - C++
Напишите функцию, которая определяет минимальный элемент массива (его значение и номер). Внутри функции запрещено использовать команды cin...

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

Не работает программа которая находит минимальный элемент в одномерном массиве из 10 элементов, заполненном случайными числами от 1 до 30 - C++
Всем привет! Начал работать с массивами и столкнулся с такой проблемой вроде все правильно но прога не работает пишет что ошибка и...

Программа вычисляет минимальный по модулю элемент массива - C++
#include &lt;iostream&gt; #include &lt;conio.h&gt; #include &lt;math.h&gt; using namespace std; int main(int argc, char *argv) { const int n...

Написать программу, содержащую функцию, которая возвращает минимальный элемент переданного ей массива - C++
3. Написать программу, содержащую функцию, которая возвращает минимальный элемент переданного ей массива, если все элементы массива...

15
insolent
826 / 344 / 15
Регистрация: 30.01.2009
Сообщений: 1,204
24.12.2012, 16:32 #2
tokar2, зачем в вашем классе деструктор, если у вас массив не динамический?
0
Afflicted
Обитатель форума
199 / 182 / 8
Регистрация: 28.10.2012
Сообщений: 543
24.12.2012, 16:33 #3
деструктор не обязателен.
0
OhMyGodSoLong
~ Эврика! ~
1244 / 993 / 42
Регистрация: 24.07.2012
Сообщений: 2,002
24.12.2012, 16:34 #4
Ничего (серьёзно).
0
tokar2
25 / 25 / 1
Регистрация: 09.11.2012
Сообщений: 229
24.12.2012, 16:39  [ТС] #5
Помогите переделать мне эту программу чтобы в ней использовался деструктор! Я только начал учить классы и еще не до конца понимаю зачем он и какие операторы в нем можно записывать.
0
Afflicted
Обитатель форума
199 / 182 / 8
Регистрация: 28.10.2012
Сообщений: 543
24.12.2012, 16:44 #6
C++
1
2
3
4
5
6
int *num = new int[n];
 
~Class()
{
    delete [] num
}
1
Avazart
Эксперт С++
7459 / 5505 / 315
Регистрация: 10.12.2010
Сообщений: 24,583
Записей в блоге: 17
24.12.2012, 16:45 #7
Цитата Сообщение от tokar2 Посмотреть сообщение
то в данном случае нужно написать чтобы разрушить объект?
Ничего ...
C++
1
Class::~Class(){ /* пусто*/ };
Но в данном случае можно его не писать(он создается по умолчанию), разве что только для того что бы сделать его виртуальным для дальнейшего наследования
1
tokar2
25 / 25 / 1
Регистрация: 09.11.2012
Сообщений: 229
24.12.2012, 16:50  [ТС] #8
Почему такая ошибка?
`new' cannot appear in a constant-expression
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
#include <iostream.h>
#include <conio.h>
 
const int n=10;
 
class Class{
      int* num=new int[n];
      
public:
       void cou_t();
       void min();
       Class();
       ~Class();
       };
Class::Class(){
       for(int i=0;i<n;i++)
        num[i]=rand()%10+1;
        }
void Class::cou_t()
{
     for(int i=0;i<n;i++)
        cout<<num[i]<<" ";
 }
void Class::min()
{
     int m=num[0];
     for(int i=0;i<n;i++)
        if(num[i]<m) m=num[i];
     cout<<"\nMin element is "<<m;
 }
Class::~Class(){
       delete [] num;
        }
int main()
{
    srand(time(0));
    Class obj;
    obj.cou_t();
    obj.min();
    getch();
    return 0;
}
0
Afflicted
Обитатель форума
199 / 182 / 8
Регистрация: 28.10.2012
Сообщений: 543
24.12.2012, 16:53 #9
засунь присвоение в конструктор.
C++
1
2
3
4
5
6
Class::Class()
{
       num = new int[n];
       for(int i=0;i<n;i++)
        num[i]=rand()%10+1;
        }
0
zss
Модератор
Эксперт С++
6690 / 6252 / 2084
Регистрация: 18.12.2011
Сообщений: 16,324
Завершенные тесты: 1
24.12.2012, 17:00 #10
Уж коли начали создавать класс, то какого ... n объявлена глобально.
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
#include <iostream.h>
#include <conio.h>
class Class
{
private:
      int n;
      int* num;
      
public:
       void cou_t();
       void min();
       Class(int size);
       ~Class();
       };
Class::Class(int size=0)
{
       n=size;
       num=new int[n];
       for(int i=0;i<n;i++)
        num[i]=rand()%10+1;
}
void Class::cou_t()
{
     for(int i=0;i<n;i++)
        cout<<num[i]<<" ";
 }
void Class::min()
{
     int m=num[0];
     for(int i=0;i<n;i++)
        if(num[i]<m) m=num[i];
     cout<<"\nMin element is "<<m;
 }
Class::~Class(){
       delete [] num;
        }
int main()
{
    srand(time(0));
    int m;
    cout<< "enter array size:";
    cin>>m;
    Class obj(m);;
    obj.cou_t();
    obj.min();
    getch();
    return 0;
}
1
tokar2
25 / 25 / 1
Регистрация: 09.11.2012
Сообщений: 229
24.12.2012, 17:09  [ТС] #11
Вы бы не могли объяснить как здесь определяется размер массива! Ну то что пользователь вводит я понял, а что дальше? Передается в конструктор и присваивается 0, и я что-то этого не понимаю ..
0
Afflicted
Обитатель форума
199 / 182 / 8
Регистрация: 28.10.2012
Сообщений: 543
24.12.2012, 17:13 #12
Почему ноль присваивается? Присваивается переданное как аргумент значение. а вот если аргумент не передан, то присваивается ноль. Дальше формируется массив.

Добавлено через 1 минуту
При
C++
1
2
3
4
5
6
7
Class::Class(int size=0)
{
       n=size;
       num=new int[n];
       for(int i=0;i<n;i++)
        num[i]=rand()%10+1;
}
в main можно вызывать как так:
C++
1
Class arr; // при этом размер будет равен нулю.
Так и
C++
1
Class arr(10); // а тут размер будет равен переданному числу, т.е. десяти
1
silent_1991
Эксперт С++
4997 / 3055 / 149
Регистрация: 11.11.2009
Сообщений: 7,040
Завершенные тесты: 1
29.12.2012, 07:43 #13
Цитата Сообщение от tokar2 Посмотреть сообщение
Что в данном случае нужно написать чтобы разрушить объект?
Деструктор, строго говоря, не разрушает сам объект. Он только вызывается перед реальным разрушением и освобождает ресурсы, захваченные объектом, чтобы ничего не "утекло". Если освобождать нечего - соответственно и деструктор писать не надо. Если вы его не напишете, компилятор сгенерирует его автоматически, и он не будет выполнять никакой работы (будет иметь пустое тело) и нужен будет только затем, чтобы компилятору было что вызвать перед разрушением объекта.
0
Croessmah
29.12.2012, 20:26
  #14

Не по теме:

Цитата Сообщение от silent_1991 Посмотреть сообщение
Если освобождать нечего - соответственно и деструктор писать не надо.
А если есть счетчик объектов?

0
silent_1991
Эксперт С++
4997 / 3055 / 149
Регистрация: 11.11.2009
Сообщений: 7,040
Завершенные тесты: 1
29.12.2012, 21:46 #15
Croessmah, "ресурс" - понятие абстрактное. "Освободить ресурс" - произвести некую финализацию. А под понятие "финализация" подпадают любые действия, которые должны быть выполнены при разрушении объекта.
0
29.12.2012, 21:46
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.12.2012, 21:46
Привет! Вот еще темы с ответами:

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

Написать программу, которая выводит на экран значение минимального элемента массива из 100 элементов. Вывести минимальный элемент - C++
Написать программу, которая выводит на экран значение минимального элемента массива из 100 элементов. Массив заполняется случайными числами...

программа, которая бы вычисляла среднее значение, максимальный и минимальный элемент второй колонки Excel и выводила это значение на экран - C++
Тема: «Чтение и обработка табличных данных с использованием языка C++» Цель: Научиться сохранять таблицы с помощью MS Excel в формате CSV...

Программа которая ищет самое короткое слово - C++
Добрый день, мне (опять) нужна ваша помощь, искал на сайте подобное, но увы не нашел. Так вот, нужно написать программу которая ищет...


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

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

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