Разработка приложения, осуществляющего удаление повторяющихся элементов из массива

Разработка эскизного и технического проектов программы. Исследование особенностей работы с массивами данных. Изучение алгоритма написания программы и организации входных и выходных данных. Выбор состава технических средств, установка продукта на ПК.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 18.07.2012
Размер файла 24,9 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://allbest.ru/

Размещено на http://allbest.ru/

Курсовая работа

Название дисциплины Программирование на языке высокого уровня

Тема Разработать программу решения задачи. Из массива A удалить те элементы, которые встречаются и в массиве A и в массиве B по крайней мере по 2 раза.

Студент Витушкин Валерий Николаевич

Содержание

Введение

1. Разработка эскизного и технического проектов программы

1.1 Задание

1.2 Назначение и область применения

1.3 Технические характеристики

1.3.1 Постановка задачи

1.3.2 Описание алгоритма

1.3.3 Организация входных и выходных данных

1.3.4 Выбор состава технических средств

2. Разработка проекта

2.1 Разработка программы

2.2 Текст программы

3. Ввод

Заключение

Глоссарий

Список используемой литературы

Введение

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

Для решения данной задачи я решил использовать язык программирования С++.

Язык возник в начале 1980-х годов, когда сотрудник фирмы Bell laboratories Бьёрн Страуструп придумал ряд усовершенствований к языку C под собственные нужды. До начала официальной стандартизации язык развивался в основном силами Страуструпа в ответ на запросы программистского сообщества. В 1998 году был ратифицирован международный стандарт языка C++: ISO/IEC 14882:1998 «Standard for the C++ Programming Language»; после принятия технических исправлений к стандарту в 2003 году -- нынешняя версия этого стандарта -- ISO/IEC 14882:2003.

Ранние версии языка, известные под именем «C с классами», начали появляться с 1980 года. Идея создания нового языка берёт начало от опыта программирования Страуструпа для диссертации. Он обнаружил, что язык моделирования Simula имеет такие возможности, которые были бы очень полезны для разработки большого программного обеспечения, но работает слишком медленно. В то же время язык BCPL достаточно быстр, но слишком близок к языкам низкого уровня и не подходит для разработки большого программного обеспечения. Страуструп начал работать в Bell Labs над задачами теории очередей (в приложении к моделированию телефонных вызовов). Попытки применения существующих в то время языков моделирования оказались неэффективными. Вспоминая опыт своей диссертации, Страуструп решил дополнить язык C (преемник BCPL) возможностями, имеющимися в языке Симула. Язык C, будучи базовым языком системы UNIX, на которой работали компьютеры Bell, является быстрым, многофункциональным и переносимым. Страуструп добавил к нему возможность работы с классами и объектами. В результате, практические задачи моделирования оказались доступными для решения как с точки зрения времени разработки (благодаря использованию Симула-подобных классов) так и с точки зрения времени вычислений (благодаря быстродействию C). В начале в C были добавлены классы (с инкапсуляцией), производные классы, строгая проверка типов, inline-функции и аргументы по умолчанию.

Разрабатывая C с классами (позднее C++), Страуструп также написал программу cfront -- транслятор, перерабатывающий исходный код C с классами в исходный код простого C. Новый язык, неожиданно для автора, приобрёл большую популярность среди коллег и вскоре Страуструп уже не мог лично поддерживать его, отвечая на тысячи вопросов.

В 1983 году произошло переименование языка из C с классами в C++. Кроме того, в него были добавлены новые возможности, такие как виртуальные функции, перегрузка функций и операторов, ссылки, константы, пользовательский контроль над управлением свободной памятью, улучшенная проверка типов и новый стиль комментариев (//). Его первый коммерческий выпуск состоялся в октябре 1985 года. В 1985 году вышло также первое издание «Языка программирования C++», обеспечивающее первое описание этого языка, что было чрезвычайно важно из-за отсутствия официального стандарта. В 1989 году состоялся выход C++ версии 2.0. Его новые возможности включали множественное наследование, абстрактные классы, статические функции-члены, функции-константы и защищённые члены.

1. Разработка эскизного и технического проектов программы

1.1 Задание

Тема: Разработка приложения, осуществляющего удаление повторяющихся элементов из массива.

Условия задачи:

Разработать программу, которая запрашивает пользователя ввести два массива с данными, затем осуществляет поиск элементов, встречающихся в обоих массивах два и более раз. Далее программа должна удалить такие элементы из первого массива и вывести его на экран.

1.2 Назначение и область применения

Согласно заданию необходимо разработать программу для удаления повторяющихся элементов массивов. Область применения: работа с массивами данных, программа может использоваться пользователями любых сфер деятельности, работающими с массивами данных.

1.3 Технические характеристики

1.3.1 Постановка задачи

Разработать программу, осуществляющую в массиве данных поиск одинаковых элементов, удаление таких элементов из массива и вывод этого массива на экран. Необходимо, чтобы программа проверяла два массива введенных пользователем с клавиатуры на момент в хождения в них символов повторяющихся два и более раз, как в первом так и во втором массиве. Так же необходимо чтобы программа выводила на экран первый массив с удаленными из него такими элементами. Учитывая тот факт, что в С++ жестко построен контроль типов данных, моя программа будет работать с элементами типа integer.

1.3.2 Описание алгоритма

Алгоритм написания программы будет выглядеть следующим способом:

1. В начале необходимо, чтобы программа создала два массива и заполнила все их элементы значениями 0.

2. Необходимо запросить у пользователя ввода элементов (чисел от 1 до 9) обоих массивов.

3. Необходимо, чтобы ввод элементов заканчивался при вводе пользователем максимального числа элементов, либо при вводе элемента не входящего в интервал от 1 до 9.

4. Необходимо вывести на экран пользователя оба массива.

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

6. В случае если счетчики обоих массивов будут указывать на содержание двух и более вхождений элемента, необходимо удалить, путем замены на символ 0, этот элемент из первого массива.

7. Необходимо проверить все элементы первого массива и посчитать, сколько элементов не равно 0.

8. Необходимо создать в динамической памяти новый массив, равный количеству не нулевых элементов первого массива и записать в него все не нулевые элементы массива.

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

1.3.3 Организация входных и выходных данных

Согласно заданию ввод в программу будет осуществляться непосредственно пользователем с клавиатуры.

Вывод же данных необходимо осуществить непосредственно на экран, что бы пользователь сразу получил результат работы программы.

1.3.4 Выбор состава технических средств

Исходя из задания, так же из описания алгоритма и организации входных и выходных данных, я пришел к мнению, что данное приложение можно разработать в среде разработке Microsoft Visual Studio.

Microsoft Visual Studio -- линейка продуктов компании Майкрософт, включающих интегрированную среду разработки программного обеспечения и ряд других инструментальных средств. Данные продукты позволяют разрабатывать как консольные приложения, так и приложения с графическим интерфейсом, в том числе с поддержкой технологии Windows Forms, а также веб - сайты, веб - приложения, веб-службы как в родном, так и в управляемом кодах для всех платформ, поддерживаемых Microsoft Windows, Windows Mobile, Windows CE, .NET Framework, .NET Compact Framework и Microsoft Silverlight.

Visual Studio включает в себя редактор исходного кода с поддержкой технологии IntelliSense и возможностью простейшего рефакторинга кода. Встроенный отладчик может работать как отладчик уровня исходного кода, так и как отладчик машинного уровня. Остальные встраиваемые инструменты включают в себя редактор форм для упрощения создания графического интерфейса приложения, веб-редактор, дизайнер классов и дизайнер схемы базы данных.

Visual Studio позволяет создавать и подключать сторонние дополнения (плагины) для расширения функциональности практически на каждом уровне, включая добавление поддержки систем контроля версий исходного кода (как например, Subversion и Visual SourceSafe), добавление новых наборов инструментов (например, для редактирования и визуального проектирования кода на предметно-ориентированных языках программирования или инструментов для прочих аспектов цикла разработки программного обеспечения (например, клиент Team Explorer для работы с Team Foundation Server).

2. Разработка проекта

2.1 Разработка программы

технический эскизный алгоритм массив

1. Создаем массивы А и В, а так же задаем максимальное количество элементов каждого массива:

const int maxEl = 10;

int arrA [maxEl]; // Объявление массива А

int arrB [maxEl]; // Объявление массива В

Заполняем элементы массива А и массива В нулями:

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

{

arrA [i] = 0;

arrB [i] = 0;

}

2. Просим пользователя поочередно ввести элементы массивов А и В:

while (countArrEl < maxEl)

{

cout << "Введите элемент №"

<< countArrEl+1

<< "массива А или если хотите закончить ввод наберите любое число не"

<< "входящее в диапазон от 1 до 9:"

<<endl;

cin >> ElArr;

3. Проверяем входит ли символ, введенный пользователем в интервал от 1 до 9, условия ввода максимального количества элементов проверяются в условиях цикла while.

if (ElArr <=9 && ElArr >=1)

{

arrA [countArrEl] = ElArr;

countArrEl++;

}

else

{

break;

}

}

4. Выводим на экран массивы А и В:

cout << endl

<< "Вы ввели массив А:"

<< endl;

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

{

cout << arrA [i]

<< " ";

}

cout << endl

<< "Вы ввели массив В:"

<< endl;

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

{

cout << arrB [i]

<< " ";

}

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

for (int eli = 1; eli <= 9; eli++)

{

int countElA = 0;

int countElB = 0;

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

{

if (arrA[i]==eli)

countElA++;

if (arrB[i]==eli)

countElB++;

}

6. Проверяем оба счетчика количества вхождений элемента:

if (countElA >= 2 && countElB >= 2)

И если оба они больше двух, то удаляем этот элемент из массива

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

{

if (arrA[i]==eli)

arrA[i]=0;

}

Для создания нового массива и вывода его элементов воспользуемся написанной мной функцией delzeroandprint

7. Проверяем все элементы переданного функции delzeroandprint

Массива и считаем, сколько из них равно 0.

int q = 0; // Счетчик полезных элементов массива (не нулей)

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

{

if (arr[i]!=0)

q++;

}

8. Для создания массива в динамической памяти нам понадобиться указатель типа int.

int* pArr = 0;

Создаем в динамической памяти новый массив

pArr = new int [q];

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

for (int i = 0,q = 0; i < maxEl; i++)

{

if (arr[i]!=0)

{

pArr[q] = arr[i];

q++;

}

}

Выводим элементы массива на экран

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

cout << pArr[i] << " ";

9. Вызываем функцию delzeroandprint и выводим результат ее работы на экран пользователя.

cout <<endl <<"Новое значение массива А: "

<< endl;

delzeroandprint (arrA);

2.2 Текст программы

#include <iostream> // Подключаем библиотеку ввода вывода

using namespace std;

// Функция удаления лишних нулей и печати элементов массива

void delzeroandprint (int arr[]);

const int maxEl = 10; // Максимальное количество элементов массива

int main ()

{

setlocale (LC_ALL, "Russian");

int arrA [maxEl]; // Объявление массива А

int arrB [maxEl]; // Объявление массива В

// Заполняем все элементы массивов А и В нулями

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

{

arrA [i] = 0;

arrB [i] = 0;

}

int countArrEl = 0; // Счетчик элемента массива при вводе с клавиатуры

int ElArr = 0; // Считываемый с клавиатуры элемент

cout << "Данная программа поможет найти все элементы от 1 до 9 "

<< "вошедшие в массивы А и В 2 и более раз."

<< endl;

cout << endl

<< "Вводите поочереди все элементы массива А, но не более "

<< maxEl

<<" элементов. "

<< endl;

// Читаем вводимые пользователем символы и помещаем их в массив А

while (countArrEl < maxEl)

{

cout << "Введите элемент №"

<< countArrEl+1

<< "массива А или если хотите закончить ввод наберите любое число не"

<< "входящее в диапазон от 1 до 9:"

<<endl;

cin >> ElArr;

if (ElArr <=9 && ElArr >=1)

{

arrA [countArrEl] = ElArr;

countArrEl++;

}

else

{

break;

}

}

countArrEl = 0;

cout << endl

<< "Вводите по очереди все элементы массива В, но не более "

<< maxEl

<<" элементов. "

<< endl;

// Читаем вводимые пользователем символы и помещаем их в массив В

while (countArrEl < maxEl)

{

cout << "Введите элемент №"

<< countArrEl+1

<< "массива В или если хотите закончить ввод наберите любое число не входящее в диапазон от 1 до 9:"

<<endl;

cin >> ElArr;

if (ElArr <=9 && ElArr >=1)

{

arrB [countArrEl] = ElArr;

countArrEl++;

}

else

{

break;

}

}

// Выводим пользователю элементы массива А

cout << endl

<< "Вы ввели массив А:"

<< endl;

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

{

cout << arrA [i]

<< " ";

}

// Выводим пользователю элементы массива В

cout << endl

<< "Вы ввели массив В:"

<< endl;

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

{

cout << arrB [i]

<< " ";

}

// Перебираем элементы от 1 до 9 и ищем их в наших массивах

for (int eli = 1; eli <= 9; eli++)

{

int countElA = 0; // Счетчик вхождения элемента в массив А

int countElB = 0; // Счетчик вхождения элемента в массив В

// Проверяем оба массива на момент вхождения в них текущего элемента

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

{

// Увеличиваем счетчики количества элементов в случае вхождения их в массив

if (arrA[i]==eli)

countElA++;

if (arrB[i]==eli)

countElB++;

}

// Если в обоих массивах есть по 2 и более текущих элементов...

if (countElA >= 2 && countElB >= 2)

// то заменяем их на ноль

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

{

if (arrA[i]==eli)

arrA[i]=0;

}

}

// Выводим элементы нового массива А с использованием функции delzeroandprint

cout <<endl <<"Новое значение массива А: "

<< endl;

delzeroandprint (arrA);

cout << endl;

system("PAUSE");

return 0;

}

// Эта функция предназначена для удаления нулей из массивов и печати элементов массивов через пробел

void delzeroandprint (int arr[])

{

int q = 0; // Счетчик полезных элементов массива (не нулей)

// Считаем сколько элементов в массиве не равно нулю

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

{

if (arr[i]!=0)

q++;

}

// создаем указатель..

int* pArr = 0;

// создаем массив в динамической памяти

// q количество не нулевых элементов в исходном массиве

pArr = new int [q];

// Записываем в новый массив не нулевые элементы исходного

for (int i = 0,q = 0; i < maxEl; i++)

{

if (arr[i]!=0)

{

pArr[q] = arr[i];

q++;

}

}

// Выводим элементы нового массива на экран

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

cout << pArr[i] << " ";

}

3. Ввод

Для установки программы необходимо распаковать все содержимое архива (kp.rar) в папку, из которой будет производиться запуск программы.

Для запуска программы запускаем файл kp.exe.

В ходе выполнения программы пользователю будут выводиться следующие сообщения:

1. Данная программа поможет найти все элементы от 1 до 9 вошедшие в массивы А и В два и более раз.

Вводите по очереди все элементы массива А, но не более 10 элементов.

Введите элемент №… массива А или если хотите закончить ввод наберите любое число не входящее в диапазон от 1 до 9

Вводите по очереди все элементы массива В, но не более 10 элементов.

Введите элемент №… массива В или если хотите закончить ввод наберите любое число не входящее в диапазон от 1 до 9

Здесь необходимо вводить поочередно элементы массивов А и В. Для окончания ввода текущего элемента необходимо нажать клавишу ENTER. Если элементов меньше чем максимально возможное их количество то для окончания ввода элементов текущего массива необходимо ввести число не входящее в диапазон от 1 до 9.

2. "Вы ввели массив А:"

Здесь пользователю будет показан введенный им массив А.

Вы ввели массив В:"

Здесь пользователю будет показан введенный им массив В.

3. Новое значение массива А:

Здесь пользователю будет показан введенный новый массив А.

Заключение

Программа служит для осуществления поиска элементов, встречающихся в обоих массивах два и более раз, удаления таковых из первого массива и вывода его на экран.

Глоссарий

Переменная - это идентификатор, определяющий данные. Обычно это бывает имя, скрывающее за собой область памяти с хранящимися там данными. Переменная может иметь тип, характеризующий множество значений, которые она может принимать.

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

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

Файл - поименованная совокупность байтов.

Массив - упорядоченный набор данных, для хранения данных одного типа, идентифицируемых с помощью одного или нескольких индексов. В простейшем случае массив имеет постоянную длину и хранит единицы данных одного и того же типа.

Язык программирования - формальная знаковая система, предназначенная для записи компьютерных программ. Язык программирования определяет набор лексических, синтаксических и семантических правил, задающих внешний вид программы и действия, которые выполнит исполнитель (компьютер) под её управлением.

Символ - условный знак каких-либо понятий, идей, явлений

Текстовый пользовательский интерфейс - разновидность интерфейса пользователя, использующая при вводе-выводе и представлении информации исключительно набор буквенно-цифровых символов и символов псевдографики. Характеризуется малой требовательностью к ресурсам аппаратуры ввода-вывода (в частности, памяти) и высокой скоростью отображения информации, поэтому широко использовался на начальном этапе развития вычислительной техники. Также, его разновидность - интерфейс командной строки - имеет отдельные преимущества вюзабилити перед графическим интерфейсом. Поэтому программы, основанные на ТПИ, имеют некоторое распространение до настоящего времени, особенно в специфических сферах и на маломощном оборудовании.

Указатель - переменная, диапазон значений которой состоит из адресов ячеек памяти и специального значения -- нулевого адреса. Значение нулевого адреса не является реальным адресом и используется только для обозначения того, что указатель в данный момент не может использоваться для обращения ни к какой ячейке памяти.

Microsoft Visual Studio - линейка продуктов компании Майкрософт, включающих интегрированную среду разработки программного обеспечения и ряд других инструментальных средств. Данные продукты позволяют разрабатывать как консольные приложения, так и приложения с графическим интерфейсом, в том числе с поддержкой технологии Windows Forms, а также веб-сайты, веб - приложения , веб- службы как в родном, так и в управляемом кодах для всех платформ, поддерживаемых Microsoft Windows, Windows Mobile, Windows CE, .NET Framework, .NET Compact Framework и Microsoft Silverlight.

Список использованных источников

Бьярн Страуструп - Язык программирования C++

Бьярн Страуструп - Язык программирования С++. Специальное издание

Герберт Шилдт - C++. Руководство для начинающих

Г. Шилдт - Самоучитель C++

Майкл Дж. Янг - Visual C++ 6. Том 1

Майкл Дж. Янг - Visual C++ 6. Том 2

Роберт Седжвик - Фундаментальные алгоритмы на C++. Части 1-4. Анализ. Структуры данных. Сортировка. Поиск

Джесс Либерти - Освой самостоятельно C++ за 21 ден

Х. М. Дейтел, П. Дж. Дейтел - Как программировать на C++

Стенли Б. Липпман, Жози Лажойе - Язык программирования C++. Вводный курс

Стивен Прата - Язык программирования C++. Лекции и упражнения

Размещено на Allbest.ru


Подобные документы

  • Разработка эскизного и технического проекта программы идентификации личности по отпечатку. Назначение и область применения, описание алгоритма, входных и выходных данных. Выбор состава технических и программных средств. Тестирование и внедрение продукта.

    курсовая работа [61,9 K], добавлен 12.05.2015

  • Разработка эскизного и технического проектов программы, ее назначение и область применения, описание алгоритма, организация входных и выходных данных. Выбор состава технических и программных средств, разработка рабочего проекта, спецификация программы.

    курсовая работа [700,6 K], добавлен 26.01.2010

  • Разработка эскизного и технического проектов программы, ее назначение и область применения, описание алгоритма, организация входных и выходных данных. Выбор состава технических и программных средств, разработка рабочего проекта, спецификация программы.

    курсовая работа [159,8 K], добавлен 26.01.2010

  • Разработка эскизного и технического проектов программы "Шифр Цезаря": назначение и область применения, описание алгоритма, организация входных и выходных данных. Выбор состава технических и программных средств, разработка, тест и внедрение программы.

    курсовая работа [563,7 K], добавлен 15.07.2012

  • Разработка эскизного и технического проектов программы, ее назначение и область применения, технические характеристики. Организация входных и выходных данных, выбор состава технических и программных средств. Текст программы, ее описание и тестирование.

    курсовая работа [1,3 M], добавлен 15.11.2009

  • Разработка эскизного и технического проектов программы, приложения "Телефонный справочник". Организация входных и выходных данных. Выбор состава технических средств. Интегрированная среда разработки Delphi 7. Разработка рабочего проекта, внедрение.

    курсовая работа [427,4 K], добавлен 21.07.2012

  • Разработка эскизного и технического проектов программы, моделирующей игру "Кости". Постановка задачи, описание алгоритма; написание программы, организация входных и выходных данных; выбор программных средств; спецификация, текст, условия выполнения.

    курсовая работа [93,8 K], добавлен 11.02.2012

  • Разработка Windows-приложения, представляющего собой компьютерную игру "Кости". Организация входных и выходных данных. Минимальные требования. Выбор состава технических и программных средств. Спецификация программы, ее описание и внедрение, тестирование.

    курсовая работа [475,8 K], добавлен 18.07.2012

  • Разработка эскизного и технического проектов приложения ведения базы данных торговой фирмы для Windows, его назначение и применение, технические характеристики. Постановка задачи, организация входных и выходных данных, технические и программные средства.

    курсовая работа [671,6 K], добавлен 19.11.2009

  • Разработка эскизного и технического проектов компьютерной игры "Скачки". Назначение и область применения программы. Выбор состава технических и программных средств. Составление текста программы, ее спецификация, тестирование и условия выполнения.

    курсовая работа [681,4 K], добавлен 18.10.2014

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.