Sizeof( int) * _vector.m_nAllocated

);

 

delete[] _vector.m_pData;

_vector.m_pData = pNewData;

 

_vector.m_nAllocated = nAllocatedNew;

}

 

_vector.m_pData[ _vector.m_nUsed++ ] = _data;

}

 

В файле с функцией main из предыдущей задачи следует удалить прежние определения структуры IntegerVector и связанных с ней функций, а вместо них включить содержимое заголовочного файла, чтобы сделать общие определения доступными:

 

test.сpp

 

#include "integer_vector.hpp"

#include <iostream>

intmain ()

{ … }

integer_vector.hpp
integer_vector.cpp
test.cpp

 

Имея отдельные файлы объявления и реализации структуры данных для вектора целых чисел, перейдем непосредственно к решению новой задачи. В новом проекте должен быть создан подобный файл с функцией main, а файлы вектора следует подключить к проекту как уже существующие (не нужно их копировать!). Удобно размещать общие файлы программ в отдельных каталогах, доступных для нескольких проектов.

 

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

 

#include "integer_vector.hpp"

#include <iostream>

intmain ()

{

// Приглашение пользователя ко вводу

std::cout << "Input integers, stop with Ctrl+Z: ";

// Создаем и инициализируем вектор для входных данных

IntegerVector inputData;

IntegerVectorInit( inputData );

Пытаемся вводить числа с консоли одно за другим

while( true)

{

Попытка ввода числа

inttemp;

std::cin >> temp;

if( std::cin )

Просим вектор добавить новое данное в конец

IntegerVectorPushBack( inputData, temp );

Else

// Конец ввода

break;

}

 

// Создаем и инициализируем вектор для выходных данных

IntegerVector outputData;

IntegerVectorInit( outputData );

// Формируем последовательность частичных сумм

intcurrentSum = 0;

for( inti = 0; i < inputData.m_nUsed; i++ )

{

currentSum += inputData.m_pData[ i ];

IntegerVectorPushBack( outputData, currentSum );

}

// Выводим результаты

for( inti = 0; i < outputData.m_nUsed; i++ )

std::cout << outputData.m_pData[ i ] << ' ';

std::cout << std::endl;

// Освобождаем выделенные векторами ресурсы

IntegerVectorDestroy( inputData );

IntegerVectorDestroy( outputData );

}

 

Результаты выполнения программы:

 

 

Как видим, в реализации новой задачи без особых усилий была успешно повторно использована реализация задействованной структуры данных.

 

 








Дата добавления: 2016-01-29; просмотров: 598;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.005 сек.