Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
1 / 1 / 1
Регистрация: 06.09.2015
Сообщений: 19

Память для динамического массива в классе

06.09.2015, 19:55. Показов 1216. Ответов 20
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Вариант 9. Создать класс MASS1, заданный последовательностью чисел. Реализовать следующие вычисления в виде методов класса:
" наибольшее число последовательности целых чисел,
" наименьшее число последовательности целых чисел,
" сумму чисел до первого наименьшего.
В главной программе Описать 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
#include <iostream>
#include <conio.h>
#include <stdlib.h>
#include <time.h>
#include <math.h>
using namespace std;
class MASS
{
public:
    double *a;
    int n;
    MASS(int m)
    { //конструктор
        n = m;
        a = new double [n];
    };
    ~MASS()
    {
        delete[] a;
    }
    int f1()
    {
        int z=0;
        for(int i=0; i<n; i++)
        {
            if ( a[i] == ceil(a[i]) )
                z++;
            else
                z = 0;
        }
        return z;
    }
};
int main()
{
    cout << "Input size of MASS1: ";
    int n; cin >> n;
    MASS MASS1(n);
    cout << "MASS1: ";
    srand(time(0));
    for(int i=0; i<MASS1.n; i++)
        {
            MASS1.a[1]=(rand()%101-50)/10.0;
            cout << " "<< MASS1.a[1];
        }
    cout << "\nf1 = " << MASS1.f1();
    getch();
}
не могу разобраться с выделением памяти
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
06.09.2015, 19:55
Ответы с готовыми решениями:

Память для динамического массива структур
Есть функция Insert, в которой я даю параметрами старый массив объектов структуры, его размер и новый объект, которым надо дополнить...

Как выделить память для динамического массива?
Как выделить память для динамического массива? typedef TPrimitives *TPrimitive; //... TPrimitives Primitives; Мне нужно выделить...

Как в отдельной функции выделить память для динамического массива, объявленного в main
Доброго времени суток. Передо мной стоит задача выделения памяти для динамического массива в отдельной функции. То есть я объявляю в...

20
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
06.09.2015, 20:15
Вроде всё верно с памятью. Что не работает?
0
1 / 1 / 1
Регистрация: 06.09.2015
Сообщений: 19
06.09.2015, 20:25  [ТС]
Цитата Сообщение от nmcf Посмотреть сообщение
Что не работает?
магическим образом появляется мусор...
Кликните здесь для просмотра всего текста
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
#include <iostream>
#include <conio.h>
#include <stdlib.h>
#include <time.h>
#include <math.h>
using namespace std;
class MASS
{
public:
    double *a;
    int n;
    MASS(int m)
    { //конструктор
        n = m;
        a = new double [n];
    };
    ~MASS()
    {
        delete[] a;
    }
    int f1()
    {
        int z=0;
        cout << "\n\nMass1 from func: ";
        for(int i=0; i<n; i++)
        {
            cout << " " << a[i];
            if ( a[i] == ceil(a[i]) )
                z++;
            else
                z = 0;
        }
        return z;
    }
};
int main()
{
    cout << "Input size of MASS1: ";
    int n; cin >> n;
    MASS MASS1(n);
    cout << "MASS1: ";
    srand(time(0));
    for(int i=0; i<MASS1.n; i++)
        {
            MASS1.a[1]=(rand()%101-50)/10.0;
            cout << " "<< MASS1.a[1];
        }
    cout << "\nf1 = " << MASS1.f1();
    getch();
}

скрин тут:

Добавлено через 5 минут
Как в Visual Studio, так и в Code Blocks
Как из под winXP, Так и из-под win8
0
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
06.09.2015, 20:26
MASS1.a[1] - у вас тут в квадратных скобках единица вместо i.
0
807 / 534 / 158
Регистрация: 27.01.2015
Сообщений: 3,017
Записей в блоге: 1
06.09.2015, 20:31
да и сравнивать числа типа double таким образом, как у вас, тоже не очень хорошо
C++
1
if ( a[i] == ceil(a[i]) )
0
1 / 1 / 1
Регистрация: 06.09.2015
Сообщений: 19
06.09.2015, 20:53  [ТС]
Цитата Сообщение от Renji Посмотреть сообщение
MASS1.a[1] - у вас тут в квадратных скобках единица вместо i.
опс... накосячил ...

а вот еще как
Цитата Сообщение от Ferrari F1 Посмотреть сообщение
да и сравнивать числа типа double таким образом, как у вас, тоже не очень хорошо
как тогда?
0
807 / 534 / 158
Регистрация: 27.01.2015
Сообщений: 3,017
Записей в блоге: 1
06.09.2015, 21:07
Цитата Сообщение от км Посмотреть сообщение
как тогда?
прочти на эту тему:
https://rsdn.ru/forum/cpp/2640596.1
Грубо говоря, может возникнуть ситуация, когда из-за погрешности результат подобного сравнения может стать ложным.
0
1 / 1 / 1
Регистрация: 06.09.2015
Сообщений: 19
06.09.2015, 21:12  [ТС]
Цитата Сообщение от Ferrari F1 Посмотреть сообщение
Сообщение от км
как тогда?
прочти на эту тему:
https://rsdn.ru/forum/cpp/2640596.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
#include <iostream>
#include <conio.h>
#include <stdlib.h>
#include <time.h>
#include <math.h>
using namespace std;
class MASS
{
public:
    double *a;
    int n;
    MASS(int m)
    { //конструктор
        n = m;
        a = new double [n];
    };
    ~MASS()
    {
        delete[] a;
    }
    int f1()
    {
        int y=0,z=0;
        for(int i=0; i<n; i++)
        {
            if ( a[i]/1 == a[i]/1. )
                y++;
            if (y>z)
            {
                z = y;
                y = 0;
            }
        }
        return z;
    }
};
int main()
{
    cout << "Input size of MASS1: ";
    int n; cin >> n;
    MASS MASS1(n);
    cout << "MASS1: ";
    srand(time(0));
    for(int i=0; i<MASS1.n; i++)
        {
            MASS1.a[i]=(rand()%101-50)/2.0;
            cout << " "<< MASS1.a[i];
        }
    cout << "\nf1 = " << MASS1.f1();
    getch();
}
0
Эксперт PHP
 Аватар для Kerry_Jr
3106 / 2591 / 1219
Регистрация: 14.05.2014
Сообщений: 7,236
Записей в блоге: 1
06.09.2015, 21:18
Цитата Сообщение от км Посмотреть сообщение
C++
1
a[i]/1 == a[i]/1.
все равно все приведется к double, и сравнение будет неточным
0
1 / 1 / 1
Регистрация: 06.09.2015
Сообщений: 19
06.09.2015, 21:20  [ТС]
Цитата Сообщение от Kerry_Jr Посмотреть сообщение
все равно все приведется к double, и сравнение будет неточным
эм.. как тогда?
0
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
06.09.2015, 21:30
Цитата Сообщение от Ferrari F1 Посмотреть сообщение
Грубо говоря, может возникнуть ситуация, когда из-за погрешности результат подобного сравнения может стать ложным.
Конкретно у ТС - не может. Он сравнивает число с результатом его округления до целого. Погрешности здесь полезут только тогда, когда это самое число в мантиссу не влезет. То есть, пока число не начинает приближаться к двум в 52 степени (мантисса double), можно не беспокоиться.
0
Эксперт PHP
 Аватар для Kerry_Jr
3106 / 2591 / 1219
Регистрация: 14.05.2014
Сообщений: 7,236
Записей в блоге: 1
06.09.2015, 21:30
км, а зачем Вы сравниваете число с самим собой? Да и, судя по заданию, это здесь не нужно. А еще задание требует, чтобы последовательность была целочисленной. Может я что-то упустил?
0
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
06.09.2015, 21:31
Цитата Сообщение от Kerry_Jr Посмотреть сообщение
км, а зачем Вы сравниваете число с самим собой?
Судя по всему, чтобы отделить целые числа от дробных.
0
807 / 534 / 158
Регистрация: 27.01.2015
Сообщений: 3,017
Записей в блоге: 1
06.09.2015, 21:32
Цитата Сообщение от км Посмотреть сообщение
эм.. как тогда?
не заморачивайся на этот счет, для кода твоей программы это некритично, но такие подводные камни просто нужно держать в уме.
0
1 / 1 / 1
Регистрация: 06.09.2015
Сообщений: 19
06.09.2015, 21:32  [ТС]
Цитата Сообщение от Kerry_Jr Посмотреть сообщение
а зачем Вы сравниваете число с самим собой?
не с самим собой... а с его округленным значение
вот я исправил:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
int f1()
    {
        int y=0,z=0;
        for(int i=0; i<n; i++)
        {
            if ( a[i] == (int)a[i] )
                y++;
            else
                y = 0;
            if ( y > z ) z = y;
        }
        return z;
    }
Цитата Сообщение от Kerry_Jr Посмотреть сообщение
А еще задание требует, чтобы последовательность была целочисленной.
как же тогда проверить первое задание?
0
Эксперт PHP
 Аватар для Kerry_Jr
3106 / 2591 / 1219
Регистрация: 14.05.2014
Сообщений: 7,236
Записей в блоге: 1
06.09.2015, 21:35
Это которое
Цитата Сообщение от км Посмотреть сообщение
наибольшее число последовательности целых чисел,
???
0
1 / 1 / 1
Регистрация: 06.09.2015
Сообщений: 19
06.09.2015, 21:53  [ТС]
Цитата Сообщение от Kerry_Jr Посмотреть сообщение
Это которое
Сообщение от км
наибольшее число последовательности целых чисел,
???
эммм...
Кликните здесь для просмотра всего текста
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
#include <iostream>
#include <conio.h>
#include <stdlib.h>
#include <time.h>
using namespace std;
class MASS
{
public:
    int *a;
    int n;
    MASS(int m)
    { //конструктор
        n = m;
        a = new int [n];
    }
    ~MASS()
    {
        delete[] a;
    }
    int f(bool m=1)
    {
        int z = a[0];
        for(int i=1; i<n; i++)
            if ( (a[i] > z) == m )
                z = a[i];
        return z;
    }
    int s()
    {
        int p=0;
        for(int i=1; i<n; i++)
            if (a[i] < a[p]) p = i;
        int s = 0;
        for(int i=0; i<p; i++)
            s += a[i];
        return s;
    }
};
int main()
{
    cout << "Input size of MASS1: ";
    int n; cin >> n;
    MASS MASS1(n);
    cout << "MASS1: ";
    srand(time(0));
    for(int i=0; i<MASS1.n; i++)
        {
            MASS1.a[i]=rand()%21-10;
            cout << " "<< MASS1.a[i];
        }
    cout << "\nMax = " << MASS1.f();
    cout << "\nMin = " << MASS1.f(0);
    cout << "\nSum_to_Min = " << MASS1.s();
    getch();
}
0
Эксперт PHP
 Аватар для Kerry_Jr
3106 / 2591 / 1219
Регистрация: 14.05.2014
Сообщений: 7,236
Записей в блоге: 1
06.09.2015, 21:55
км, я так понимаю, у Вас проблема с пониманием задания?
1) Найти максимальное значение
2) Найти минимальное значение
3) Сумму значений до первого минимального
Так должно проясниться.
0
1 / 1 / 1
Регистрация: 06.09.2015
Сообщений: 19
06.09.2015, 21:57  [ТС]
Цитата Сообщение от Kerry_Jr Посмотреть сообщение
км, я так понимаю, у Вас проблема с пониманием задания?
1) Найти максимальное значение
2) Найти минимальное значение
3) Сумму значений до первого минимального
Так должно проясниться.
0
06.09.2015, 22:48

Не по теме:

Цитата Сообщение от км Посмотреть сообщение
:-/
вот так взрослые мужики решают конфликты :p

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
06.09.2015, 22:48
Помогаю со студенческими работами здесь

Ввод динамического массива в классе
Не вводятся элементы массива. Как только ввожу второй элемент, пишет что Программа прервана. С рандомными числами работает. Скажите...

Создание динамического массива в классе
Помогите, пожалуйста, разобраться . Пыталась реализовать ввод и вывод элементов динамического массива с помощью класса и функций... ...

Определение динамического массива в классе
Добрый день всем гуру! Очевидно очень глупый вопрос, сложно даже сформулировать. Необходимо в классе определить массив, размер...

Создание динамического массива в классе
помогите пожалуйста написать задачу используя конструктор и деструктор(надо создать динамический массив в классе)... Дан динамический...

Удаление динамического массива в классе
при удаление динамического массива в классе зависает программа... хотя в инете нашел кучу примеров, где написано точно также.... :cry: ...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru