Домашнее задание для ПО 2.11 по системному программированию от 20.04.20
учебно-методический материал

Склемин Алексей Анатольевич

Задача на динамическое выделение памяти. Изначально есть указатель на массив с одним элементом. Пользователь вводит число. Если оно больше 0 записываем его в массив. Далее пользователь вводит второе число, тут уже,  если оно больше 0, надо пере выделять память для 2-х элементов массива и записать в массив второе число. И так далее…  для 3-х элементов, для 4-х…  пока пользователь не введет отрицательное число.

Скачать:

ВложениеРазмер
Microsoft Office document icon 45.doc29 КБ

Предварительный просмотр:

Сорок пятое задание

Задача на динамическое выделение памяти. Изначально есть указатель на массив с одним элементом. Пользователь вводит число. Если оно больше 0 записываем его в массив. Далее пользователь вводит второе число, тут уже,  если оно больше 0, надо пере выделять память для 2-х элементов массива и записать в массив второе число. И так далее…  для 3-х элементов, для 4-х…  пока пользователь не введет отрицательное число.


#include

using namespace std;

int main()

{

    setlocale(LC_ALL, "rus");

    int *p = new int[1];

    int *p2;//для копирования данных из массива p перед удалением памяти

    int a = 0;//число, которое вводит пользователь

    int nSize = 0;//размер динамического массива, который будет увеличиваться на 1, при вводе положительного числа

    while(a >= 0){

        cout << "\nВведите целое число: ";

        cin >> a;

        if(a < 0){

            break;//если введено отрицательное число - break

        }

        if(nSize == 0)

        {

            p[nSize] = a;

            cout << p[nSize];

            nSize++;//1

        }

        else

        {

            p2 = new int [nSize + 1];

            for(int i = 0; i < nSize; i++)

            {

                p2[i] = p[i];//скопировали массив        

            }

            p2[nSize] = a;

            delete [] p; //чистим память

            p = new int[nSize + 1]; //выделяем новую память                  

            for(int i = 0; i < (nSize+1); i++)

            {

                p[i] = p2[i]; //копируем данные из временного массива

                cout << p[i] << " ";//и отображаем все его элементы на экран

            }

            delete [] p2;//чистим память временного массива

            nSize++;//увеличиваем на 1

        }    

    }

        delete [] p;//чистим память перед завершением программы

    return 0;

}


По теме: методические разработки, презентации и конспекты

Домашнее задание для ПО 1.11 по системному программированию от 04.02.20

Шестнадцатеричное представление Представим, что необходимо просмотреть содержимое некотоpых байт в памяти. Требуется oпределить содержимое четырех последовательных байт (двух слов), которые имеют двои...

Домашнее задание для ПО 1.11 по системному программированию от 11.02.20

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