Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

variant_12

.docx
Скачиваний:
12
Добавлен:
19.03.2017
Размер:
308.73 Кб
Скачать

Priem = AddStruct(Priem, AbiturientAmount);

Опустимся к ее определению. Тут видно, что данная функция будет возвращать указатель на структуру Abiturient.  Она принимает два параметра – указатель на структуру и количество структур. Когда она вызывается в первый раз – в нее будет передан объявленный в main указатель Priem и переменная AbiturientAmount, которая равна нулю. В функции выполнится блок if – выделится память для одной структуры. Потом функция вернет адрес (указатель) на этот участок памяти, и он будет записан в  Priem.

Затем вызываем функцию, которая позволит внести данные в структуру.

setData(Priem, AbiturientAmount);

После внесения данных, переменная AbiturientAmount увеличивается на единицу. Пользователю предлагаем сделать выбор – продолжить ввод или завершить работу.

Если продолжаем – снова вызывается функция AddStruct().

Надо помнить, что указатель Priem уже ссылается на участок памяти с записанными данными. Поэтому не получится просто перевыделить память. Сначала необходимо позаботиться о сохранении данных. В блоке else создаем временный указатель. Под него выделяем память для amount + 1 структур (т.е. на одну структуру больше, чем приняла функция). Далее копируем данные из принятого объекта. Последний объект массива структур tempObj останется незаполненным. Когда данные скопированы, освобождаем память Obj и записываем в этот указатель новый адрес. Теперь он будет указывать на память, в которой есть сохраненные данные и дополнительный выделенный участок памяти для заполнения новыми данными.

И снова вызывается функция  setData(), которая позволит внести данные в новый выделенный участок памяти – в последний элемент массива структур.

Когда пользователь решит больше не вводить данные – он нажимает ноль. После этого сработает функция showData() и на экране отобразится таблица с данными со всех структур динамического массива.  В самом конце программы не забываем освободить память, которую занимает динамический массив структур.

Задание 12*. Составить схему алгоритма и программу на языке C++, позволяющую решить предложенную в Вашем варианте задачу с использованием рекурсии.

Напишите программу, которая определяет количество цифр в натуральном числе.

Листинг П.10.

#include<iostream>

#include<windows.h>

#include<conio.h>

using namespace std;

int K(int N)

{ int Kol;

if (N<10) Kol = 1; else Kol = K(N / 10) + 1;

return Kol;

}

int main()

{ int a;

setlocale(LC_ALL, "rus");

cout << "Введите натуральное число: " ;

cin >> a;

int n = K(a);// вызываем рек. функцию (в параметрах передаем число введенное пользователем число)

cout << "Количество цифр: " << n << endl;

_getch();

return 0;

}

Результат работы программы

1 Будем считать, что заданная точность достигнута, если абсолютное значение члена ряда an станет меньше, т.е. .

Соседние файлы в предмете Информатика