Динамически распределяется - PullRequest
0 голосов
/ 01 февраля 2019

Мне нужна помощь, чтобы изменить размер и arr, в основной функции для динамического (динамически выделяемого) выделения памяти

эта программа использует цикл для целых чисел для 1-й программы, в то время как классы и структуры являютсявторая программа

program_1

#include <iostream>
#include <iterator>
using namespace std;

void display_desc(const int arr[], int size)
{
    int copy_arr[size];
    copy(arr, arr + size, copy_arr);
    int temp;
    for (int i = 0; i < size; i++) {
        for (int j = 0; j < size; j++) {
            if (copy_arr[i] > copy_arr[j]) {
                temp = copy_arr[i];
                copy_arr[i] = copy_arr[j];
                copy_arr[j] = temp;
            }
        }
    }
    for (int i = 0; i < size; i++) {
        cout << copy_arr[i] << " ";
    }
    cout << endl;
}

int main()
{
    int size = 5;
    int arr[size];
    for (int i = 0; i < size; i++) {
        arr[i] = i;
    }
    display_desc(arr, size);
}

и program_2 Измените переменную в int main () для использования динамического выделения памяти

#include <iostream>
#include <iterator>
#include <windows.h>
using namespace std;
const int SLOT_ROOM = 5;
class Person {
public:
    Person()
    {
        name = "";
    }
    Person(string names)
    {
        name = names;
    }
    void set_name(string names) { name = names; }
    string get_name() { return name; }
private:
    string name;
};

struct Slot {
    bool blank;
    Person person;
};
class rental {
public:
    Slot used[SLOT_ROOM];
    rental()
    {
        for (int i = 0; i < SLOT_ROOM; i++) {
            Person person;
            used[i].person = person;
            used[i].blank = true;
        }
    }
    int in(const Person person)
    {
        for (int i = 0; i < SLOT_ROOM; i++) {
            if (used[i].blank) {
                used[i].blank = false;
                used[i].person = person;
                cout << "used in position " << i << endl;
                return i;
            }
        }
        cout << "the rental is full" << endl;
        return -1;
    }
    bool out(int i)
    {
        used[i].blank = true;
    }

    Slot* get_rental_list()
    {
        return used;
    }

    void print_person_list()
    {
        cout << endl
             << "List rental" << endl;
        for (int i = 0; i < SLOT_ROOM; i++) {
            cout << "Slot rental to " << i << endl;
            cout << "Name: " << used[i].person.get_name() << endl;
            cout << "Avail: " << used[i].blank << endl
                 << endl;
        }
    }

private:
    int SLOT_ROOM = 2;
    string time_rental;
};
int main()
{

    rental rental;

    Person person_1("make");
    Person person_2("angel");
    rental.in(person_1);
    rental.in(person_2);
    rental.print_person_list();
    rental.out(2);
    rental.print_person_list();
    rental.in(person_2);
    rental.print_person_list();
}

пожалуйста, помогите, я нене понимаю, как использовать динамическое выделение памяти

Я все еще учусь c ++

1 Ответ

0 голосов
/ 01 февраля 2019

Измените

int arr[size];

на

int* arr = new int[size];

Вы должны сделать то же самое изменение на int copy_arr[size]; в display_desc.

Вам также необходимо delete[] память, как только вы закончили с ней.

delete[] arr;

в конце основного и delete[] copy_arr; в конце display_desc.

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

...