0 / 0 / 0
Регистрация: 24.11.2013
Сообщений: 7
1

Перезапись динамического массива

22.04.2014, 19:54. Показов 2658. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Вот фрагмент программы создания двоичного файла , мы задаем динамический массив, который должен использоваться в других пунктах, следовательно, не надо освобождать память, но при повторе этого пункта надо освободить память.
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
if (ch == '1')
        {
            system("cls");
            cin.clear();
            cin.sync();
            char ch1;
            cout << "Введите имя нового файла: ";
            getline(cin, FNAME);
            ifstream f(FNAME, ios_base::binary);
            bool e = f.fail();
            if (!e)
            {
                system("cls");
                cout << "Файл с таким именем существует!" << endl << "Хотите перезаписать файл (Y|N):" << endl;
                ch1 = _getch();
                if ((ch1 == 'y') || (ch1 == 'Y'))
                {
                    e = true;
                }
                else if ((ch1 == 'n') || (ch1 == 'N'))
                {
                    f.close();
                    break;
                }
            }
                if (e)
                {
                    f.close();
                    ofstream f(FNAME, ios_base::binary);
                    system("cls");
                    cout << "Введите количество элементов массива: ";
                    cin >> kol;
                    while (kol <= 0 || kol > 10 || cin.fail())
                    {
                        system("cls");
                        cin.clear();
                        cin.sync();
                        cout << "Введен недопустимое количество элементов!" << endl;
                        cout << "Введите количество элементов массива: ";
                        cin >> kol;
                    }
                    int *a = new int[kol];//тут мы задаем динамический массив
                    if (!a)
                    {
                        cout << "Память не выделена!";
                        break;
                    }
                    else
                    {
                        for (int i = 0; i < kol; i++)
                        {
                            system("cls");
                            cout << "Введите " << i + 1 << " элемент: ";
                            cin >> *(a + i);
                            while (cin.fail())
                            {
                                system("cls");
                                cin.clear();
                                cin.sync();
                                cout << "Введен неверный символ!" << endl;
                                cout << "Введите " << i + 1 << " элемент: ";
                                cin >> *(a + i);
                            }
                        }
                        for (int i = 0; i < kol; i++)
                            f.write((char *)&a[i], sizeof(int));
                        f.close();
                        cout << "Все элементы записаны в файл! Нажмите любую кнопку, чтобы выйти в меню!";
                        _getch();
                    }
                }
        }
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.04.2014, 19:54
Ответы с готовыми решениями:

Перезапись массива
Необходимо перезаписать массив с данными из буфера (буфер с данными звука) в новый массив, но так,...

Чтение и перезапись массива файлов
Всем доброго времени суток! Возникла такая ситуация: Есть реализованный поисковик файлов на С++, он...

c# Перезапись массива с заменой
Доброго времени суток. С Праздниками! Сабж... есть массивы чисел: int a = {11, 22, 33, 44,...

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

4
7784 / 6553 / 2982
Регистрация: 14.04.2014
Сообщений: 28,615
22.04.2014, 19:56 2
Выделяешь new, освобождаешь delete.
0
0 / 0 / 0
Регистрация: 24.11.2013
Сообщений: 7
22.04.2014, 20:07  [ТС] 3
nmcf, я знаю как выделять и освобождать, надо при повторе этого фрагмента освободить память, перед тем как задать снова int *a = new int[kol];
0
Модератор
Эксперт С++
13496 / 10751 / 6406
Регистрация: 18.12.2011
Сообщений: 28,687
22.04.2014, 20:19 4
Лучший ответ Сообщение было отмечено lenar_lesnik как решение

Решение

C++
1
2
3
4
5
6
7
8
int *a=0;// где-нибудь в начале
...
if (a!=0)
{
    delete[] a;
    a=0;
}
a= new int[kol];//тут мы
1
0 / 0 / 0
Регистрация: 24.11.2013
Сообщений: 7
22.04.2014, 20:23  [ТС] 5
zss, спасибо, в других случаях делал так, а тут как то не додумался
0
22.04.2014, 20:23
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.04.2014, 20:23
Помогаю со студенческими работами здесь

Сравнение массива и его перезапись
Имеется одна коллекция List&lt;T&gt; содержащая 17 полей (выгружена из БД) и массив состоящий из 96...

Перезапись строк массива в ListBOX
не получается переписать строки массива Data до перехода на следующую строку в строки ListBox,...

Отследить перезапись значений булевого массива
Добрый день. Имеется массив bool. Определённое количество элементов этого массива имеет значение...

Перезапись из одномерного массива в двумерный массив
Добрый день! Возник такой вопрос: Как перезаписать имеющиеся данные из одномерного массива в...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru