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

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

Войти
Регистрация
Восстановить пароль
 
lenar_lesnik
0 / 0 / 0
Регистрация: 24.11.2013
Сообщений: 7
#1

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

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

Вот фрагмент программы создания двоичного файла , мы задаем динамический массив, который должен использоваться в других пунктах, следовательно, не надо освобождать память, но при повторе этого пункта надо освободить память.
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)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.04.2014, 19:54
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Перезапись динамического массива (C++):

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

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

Создайте класс динамического массива, в котором реализована проверка выхода за границы массива - C++
Создайте класс динамического массива, в котором реализована проверка выхода за границы массива. Перегрузите операторы: , =, +, -,++...

Создайте класс динамического массива, в котором реализована проверка выхода за границы массива - C++
Создайте класс динамического массива, в котором реализована проверка выхода за границы массива. Перегрузите операторы: , =, +, -,++ ...

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

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

4
nmcf
5557 / 4867 / 1651
Регистрация: 14.04.2014
Сообщений: 19,766
22.04.2014, 19:56 #2
Выделяешь new, освобождаешь delete.
0
lenar_lesnik
0 / 0 / 0
Регистрация: 24.11.2013
Сообщений: 7
22.04.2014, 20:07  [ТС] #3
nmcf, я знаю как выделять и освобождать, надо при повторе этого фрагмента освободить память, перед тем как задать снова int *a = new int[kol];
0
zss
Модератор
Эксперт С++
6542 / 6104 / 2012
Регистрация: 18.12.2011
Сообщений: 15,882
Завершенные тесты: 1
22.04.2014, 20:19 #4
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
C++
1
2
3
4
5
6
7
8
int *a=0;// где-нибудь в начале
...
if (a!=0)
{
    delete[] a;
    a=0;
}
a= new int[kol];//тут мы
1
lenar_lesnik
0 / 0 / 0
Регистрация: 24.11.2013
Сообщений: 7
22.04.2014, 20:23  [ТС] #5
zss, спасибо, в других случаях делал так, а тут как то не додумался
0
22.04.2014, 20:23
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.04.2014, 20:23
Привет! Вот еще темы с ответами:

Почему при создании динамического массива через new ячейки массива имеют значение -842150451? - C++
Я хотел бы узнать почему при создании динамического массива через операцию new ячейки массива имеют значение -842150451. #include...

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

Аггрегирование динамического массива - C++
есть класс Dish(блюда), и есть класс menu(в которое входят эти блюда) есть ли возможность агрегировать динамический массив dish не по...

Класс динамического массива - C++
Создайте класс Array. Класс Array - это класс динамического массива. Рассмотреть одномерный целочисленный массив. Размер массива может...


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

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

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