Домашнее задание для ПО 2.11 по системному программированию от 21.04.20
учебно-методический материал
Необходимо создать структуру, которая содержит элемент типа int и строку. Объявить указатель типа структуры (объект структуры) и выделить память для хранения данных одной структуры. Предложить пользователю внести данные и записать их в элементы объекта структуры. Далее пользователю необходимо сделать выбор: внести еще данные (создать еще один объект структуры) либо выйти из программы. Если пользователь продолжает ввод — необходимо выделить новую память для указателя на объект структуры и дописать в нее введенные пользователем новые данные. Цикл выделения новой памяти продолжается, пока пользователь не выберет выход из программы.
Скачать:
Вложение | Размер |
---|---|
46.doc | 31 КБ |
Предварительный просмотр:
Сорок шестое задание
Необходимо создать структуру, которая содержит элемент типа int и строку. Объявить указатель типа структуры (объект структуры) и выделить память для хранения данных одной структуры. Предложить пользователю внести данные и записать их в элементы объекта структуры. Далее пользователю необходимо сделать выбор: внести еще данные (создать еще один объект структуры) либо выйти из программы. Если пользователь продолжает ввод — необходимо выделить новую память для указателя на объект структуры и дописать в нее введенные пользователем новые данные. Цикл выделения новой памяти продолжается, пока пользователь не выберет выход из программы.
#include
#include
using namespace std;
struct Data //создание структуры
{
int year;
char name [10];
};
int main()
{
setlocale(LC_ALL, "rus");
Data *p = new Data[1];//объект структуры
int var = 1; //будет хранить выбор пользователя (продолжить или выйти)
int size = 1; //размер массива структур
while (var)
{
if(size == 1)//просто вносим данные в 0-е элементы
{
cout << "Имя: ";
cin >> p[size-1].name;
cout << "Возраст: ";
cin >> p[size-1].year;
cout << "Элементы структуры объекта Р: " << p[size-1].name << " " << p[size-1].year << ";\n";
}
else//size > 1
{
Data *copy = new Data [size-1];//создаем новую структуру для копирования в нее данных
for(int i = 0; i < size-1; i++)//копируем данные перед отчисткой памяти объекта р
{
strcpy(copy[i].name, p[i].name);
copy[i].year = p[i].year;
}
delete [] p; //освобождаем память
p = new Data[size]; //выделяем новую память
for (int i = 0; i < size-1; i++) // обратное копирование в объект р
{
strcpy(p[i].name, copy[i].name);
p[i].year = copy[i].year;
}
delete [] copy; //освобождаем память
cout << "Имя: ";//дописываем новые введенные данные
cin >> p[size-1].name;
cout << "Возраст: ";
cin >> p[size-1].year;
for (int i = 0; i < size; i++)//выводим все данные на экран
{
cout << i << "-е элементы структуры объекта Р: " << p[i].name << " " << p[i].year << ";\n";
}
}
size++;//счетчик +1
cout << "\nВнести еще данные - 1, выход - 0: ";
cin >> var;
while(var != 0 && var != 1)//если пользователь ввел не 0 и не 1
{
cout << "Ошибка ввода!\n";
cout << "\nВнести еще данные - 1, выход - 0: ";
cin >> var;
}
}
delete [] p;//освобождение памяти перед завершением работы программы
return 0;
}
По теме: методические разработки, презентации и конспекты
Домашнее задание для ПО 1.11 по системному программированию от 04.02.20
Шестнадцатеричное представление Представим, что необходимо просмотреть содержимое некотоpых байт в памяти. Требуется oпределить содержимое четырех последовательных байт (двух слов), которые имеют двои...
Домашнее задание для ПО 1.11 по системному программированию от 11.02.20
Сегменты Сегментом называется область, которая начинается на границе параграфа, то есть, по любому адресу, который делится на 16 без остатка. Хотя сегмент может располагаться в любом месте памяти и им...