Компьютерное приложение "Возведение в степень числа"

Создание компьютерного приложения "Возведение в степень числа", обладающего доступным, понятным интерфейсом, который обеспечит пользование приложением неопытным пользователям. Возведение числа от 1 до 9 в степень от 1 до 200 с помощью программы.

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

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

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

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

Содержание

1. Введение

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

3. Алгоритм решения поставленной задачи

4. Метод решения

5. Реализация поставленной задачи

6. Заключение

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

Приложение А

1. Введение

Целью данной практики является закрепление полученных в ходе обучения навыков путем создания компьютерного приложения «Длинная арифметика» вычисление точного значения.

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

программа приложение компьютерный степень

Задача вычислительной практики заключается в создании компьютерного приложения «Возведение в степень числа», обладающей доступным, интуитивно понятным интерфейсом, который позволит пользоваться данным приложением неопытным пользователям.

Цель приложения состоит в том, чтобы помочь пользователю возводить числа от 1 до 9 в степень от 1 до 200.

Для реализации данного проекта необходимо разработать компьютерное приложение на языке С++. Для этого требуется:

1) разработать и реализовать алгоритм создания компьютерного приложения «Возведение в степень»;

2) оформить компьютерное приложение «Возведение в степень» с помощью графического интерфейса;

3) провести отладку и тестирование программы.

Требования к проекту:

· проект должен обладать интуитивно понятным интерфейсом;

· проект должен быть многофайловым;

· входное значение числа, возводимого в степень, должно быть не меньше 2 и не больше 9;

· входное значение степени должно быть не меньше 1 и не больше 200;

· получение максимально точного выходного значения.

3. Алгоритм решения поставленной задачи

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

При вычислении числа, возведенного в степень от 2 до 9, на выходе получается длинное число. Стандартный числовой тип не позволяет хранить весь необходимый для работы программы диапазон значений.

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

В конце созданного массива number_Out [] записывается единица, которая будет умножаться на начальное число столько раз, какова величина степени. Для удобства числа записываются с конца массива [0][0]....[0][0][5][2][5].

Реализован метод умножения столбиком. Далее число разбивается на десятки и единицы. Если при сложении единицы перешли в десятки, то прибавляется один десяток. Аналогично с десятками и сотнями.

В процессе участвуют 3 цифры - разряды операндов и перенос. Для самых младших разрядов перенос равен нулю.

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

4. Метод решения

Для решения поставленной задачи использован проект Windows Form Application реализованный на программной платформе.NET Framework. Для решения поставленной задачи создан класс Form1 и GroupingNumber.

В классе Form1 происходит расчет данных. Он содержит следующие атрибуты: int number_Initial, int exponent_Initial, int count_numbers. Атрибуты int number_Initial и int exponent_Initial служат для задания начального числа, возводимого в степень и степени; int count_numbers - константа, определяющая количество цифр в итоговом числе.

В приложении содержатся массивы: number_Out [count_numbers] и number_Interim [count_numbers]. Сначала массивы инициализируются нулем. Для записи промежуточного числа используется number_Interim [count_numbers]. Для вывода конечного числа используется массив number_Out [count_numbers]. Для удобства число записывается с конца.

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

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

5. Реализация поставленной задачи

В ходе выполнении практики был разработан многофайловый проект на объектно-ориентированном языке программирования С++. Проект состоит из трёх файлов: Form1.h, GroupingNumber.h, Practice.cpp, подключаемых с помощью директивы препроцессора #include. Механизм директив #include является простым текстовым средством, указывает препроцессору, что содержимое заданного файла необходимо обработать так, как если бы оно находилось в исходной программе в той точке, в которой располагается эта директива[2].

Чтобы сделать выражения в программном коде более компактными используем пространства имён System, System::Windows::Forms и System::Drawing. Пространство имён - некоторое множество, под которым подразумевается модель, абстрактное хранилище или окружение, созданное для логической группировки уникальных имён [4].

Пространство имен System содержит фундаментальные и базовые классы, которые определяют распространенные типы значений и ссылочные типы данных, события и обработчики событий, интерфейсы, атрибуты и исключения обработки. Содержит также классы, обеспечивающие поддержку преобразования типов данных, операций с параметрами методов, математических операций, удаленного и локального вызова программ, управления средой приложений и контроля управляемых и неуправляемых приложений [2].

Директива using используется для импортирования пространства имен. Пространства имён являются механизмом логического группирования программных объектов [5].

Пространство имен System.Windows.Forms содержит классы для создания Windows-приложений, которые содержат функции пользовательского интерфейса, доступные в операционной системе Microsoft Windows [2].

Пространство имен System::Drawing предоставляет доступ к GDI и базовой функциональности графики [2]. GDI (Graphics Device Interface) - это интерфейс Windows для представления графических объектов и передачи их на устройства отображения, такие как мониторы и принтеры [5].

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

Число будет храниться в таком виде, что сначала идут наименее значимые цифры (т.е. единицы, десятки, сотни, и т.д.).

Пример главного окна представлен на рисунке 5.1.

Рисунок 5.1 Меню вычислений

Здесь необходимо выбрать число, которое необходимо возвести в степень и степень. Числа можно вводить с клавиатуры или с помощью нажатия кнопок вверх-вниз. После нажатия кнопки "Выполнить вычисления" происходит вычисление заданных данных. Результат работы приложения представлен на рисунке 5.2

Рисунок 5.2 Результат вычислений

Атрибуты number_Initial и exponent_Initial, принадлежащие классу Form1, служат для записи числа, возводимого в степень и самой степени.

Атрибуты int number_Out[count_numbers] и number_Interim[count_numbers] необходимы для записи конечного и промежуточного числа. Изначально инициализируются нулем.

6. Заключение

По результатам проделанной работы можно сделать выводы:

· была поставлена задача разработки компьютерной программы, возведение числа в степень; проект многофайловый; создан интуитивно понятный интерфейс;

· разработан и реализован алгоритм программы «Длинная арифметика»;

· создана компьютерная программа «Длинная арифметика» на языке С++;

· программа отлажена и протестирована.

Поставленные цели можно считать выполненными.

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

1. Томский государственный университет систем управления и радиоэлектроники [Электронный ресурс] URL: http://www.tusur.ru/ (дата обращения 27.07.13г.).

2. Библиотека MSDN [Электронный ресурс] URL: http://msdn.microsoft.com (дата обращения 02.08.13г.).

3. Бьерн Страуструп Язык программирования С++. Специальное издание. Пер. с англ. М.: Издательство Бином, 2011 г. 1136 с.

4. Свободная энциклопедия Википедия [Электронный ресурс] URL: http://ru.wikipedia.org/ (дата обращения 02.08.13).

5. Зиборов В. В. MS Visual C++ 2010 в среде.NET. Библиотека программиста. СПб.: Питер, 2012. 320 с.

Приложение А

(справочное)

Код программы

#include "stdafx.h"

#include "Form1.h"

using namespace Practice;

[STAThreadAttribute]

int main(array<System::String ^> ^args)

{ Application::EnableVisualStyles();

Application::SetCompatibleTextRenderingDefault(false);

Application::Run(gcnew Form1());

return 0;}

#pragma once

#include "GroupingNumber.h";

namespace Practice {

using namespace System;

using namespace System::ComponentModel;

using namespace System::Collections;

using namespace System::Windows::Forms;

using namespace System::Data;

using namespace System::Drawing;

public ref class Form1 : public System::Windows::Forms::Form

{ public:

Form1(void)

{ InitializeComponent();

}

protected:

~Form1()

{ if (components)

{ delete components;

}}

private: System::Windows::Forms::NumericUpDown^ numericUpDown_number;

protected:

private: System::Windows::Forms::NumericUpDown^ numericUpDown_exponent;

private: System::Windows::Forms::Button^ button_compute;

private: System::Windows::Forms::Label^ label_out;

private: System::Windows::Forms::Label^ label1;

private: System::Windows::Forms::Label^ label2;

private:

System::ComponentModel::Container ^components;

#pragma region Windows Form Designer generated code

void InitializeComponent(void)

{ this->numericUpDown_number = (gcnew System::Windows::Forms::NumericUpDown());

this->numericUpDown_exponent = (gcnew System::Windows::Forms::NumericUpDown());

this->button_compute = (gcnew System::Windows::Forms::Button());

this->label_out = (gcnew System::Windows::Forms::Label());

this->label1 = (gcnew System::Windows::Forms::Label());

this->label2 = (gcnew System::Windows::Forms::Label());

(cli::safe_cast<System::ComponentModel::ISupportInitialize^ >(this->numericUpDown_number))->BeginInit();

(cli::safe_cast<System::ComponentModel::ISupportInitialize^ >(this->numericUpDown_exponent))->BeginInit();

this->SuspendLayout();

this->numericUpDown_number->Font = (gcnew System::Drawing::Font(L"Microsoft Sans Serif", 9.75F, System::Drawing::FontStyle::Regular,

System::Drawing::GraphicsUnit::Point, static_cast<System::Byte>(204)));

this->numericUpDown_number->Location = System::Drawing::Point(220, 8);

this->numericUpDown_number->Maximum = System::Decimal(gcnew cli::array< System::Int32 >(4) {9, 0, 0, 0});

this->numericUpDown_number->Minimum = System::Decimal(gcnew cli::array< System::Int32 >(4) {2, 0, 0, 0});

this->numericUpDown_number->Name = L"numericUpDown_number";

this->numericUpDown_number->Size = System::Drawing::Size(79, 22);

this->numericUpDown_number->TabIndex = 0;

this->numericUpDown_number->Value = System::Decimal(gcnew cli::array< System::Int32 >(4) {2, 0, 0, 0});

this->numericUpDown_exponent->Font = (gcnew System::Drawing::Font(L"Microsoft Sans Serif", 9.75F, System::Drawing::FontStyle::Regular,

System::Drawing::GraphicsUnit::Point, static_cast<System::Byte>(204)));

this->numericUpDown_exponent->Location = System::Drawing::Point(688, 8);

this->numericUpDown_exponent->Maximum = System::Decimal(gcnew cli::array< System::Int32 >(4) {200, 0, 0, 0});

this->numericUpDown_exponent->Minimum = System::Decimal(gcnew cli::array< System::Int32 >(4) {1, 0, 0, 0});

this->numericUpDown_exponent->Name = L"numericUpDown_exponent";

this->numericUpDown_exponent->Size = System::Drawing::Size(79, 22);

this->numericUpDown_exponent->TabIndex = 1;

this->numericUpDown_exponent->Value = System::Decimal(gcnew cli::array< System::Int32 >(4) {1, 0, 0, 0});

this->button_compute->Font = (gcnew System::Drawing::Font(L"Microsoft Sans Serif", 9.75F, System::Drawing::FontStyle::Bold, System::Drawing::GraphicsUnit::Point,

static_cast<System::Byte>(204)));

this->button_compute->Location = System::Drawing::Point(831, 7);

this->button_compute->Name = L"button_compute";

this->button_compute->Size = System::Drawing::Size(203, 23);

this->button_compute->TabIndex = 2;

this->button_compute->Text = L"Выполнить вычисление";

this->button_compute->UseVisualStyleBackColor = true;

this->button_compute->Click += gcnew System::EventHandler(this, &Form1::button_compute_Click);

this->label_out->AutoSize = true;

this->label_out->Font = (gcnew System::Drawing::Font(L"Microsoft Sans Serif", 9.75F, System::Drawing::FontStyle::Bold, System::Drawing::GraphicsUnit::Point,

static_cast<System::Byte>(204)));

this->label_out->Location = System::Drawing::Point(12, 51);

this->label_out->Name = L"label_out";

this->label_out->Size = System::Drawing::Size(91, 16);

this->label_out->TabIndex = 3;

this->label_out->Text = L"Результат:";

this->label1->AutoSize = true;

this->label1->Font = (gcnew System::Drawing::Font(L"Microsoft Sans Serif", 9.75F, System::Drawing::FontStyle::Regular, System::Drawing::GraphicsUnit::Point,

static_cast<System::Byte>(204)));

this->label1->Location = System::Drawing::Point(12, 12);

this->label1->Name = L"label1";

this->label1->Size = System::Drawing::Size(202, 16);

this->label1->TabIndex = 4;

this->label1->Text = L"Число возводимое в степень:";

this->label2->AutoSize = true;

this->label2->Font = (gcnew System::Drawing::Font(L"Microsoft Sans Serif", 9.75F, System::Drawing::FontStyle::Regular, System::Drawing::GraphicsUnit::Point,

static_cast<System::Byte>(204)));

this->label2->Location = System::Drawing::Point(372, 12);

this->label2->Name = L"label2";

this->label2->Size = System::Drawing::Size(310, 16);

this->label2->TabIndex = 5;

this->label2->Text = L"Степень, в которую будет возводиться число:";

this->AutoScaleDimensions = System::Drawing::SizeF(6, 13);

this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font;

this->ClientSize = System::Drawing::Size(1094, 86);

this->Controls->Add(this->label2);

this->Controls->Add(this->label1);

this->Controls->Add(this->label_out);

this->Controls->Add(this->button_compute);

this->Controls->Add(this->numericUpDown_exponent);

this->Controls->Add(this->numericUpDown_number);

this->Name = L"Form1";

this->Text = L"Длинная арифметика. Возведение в степень";

(cli::safe_cast<System::ComponentModel::ISupportInitialize^ >(this->numericUpDown_number))->EndInit();

(cli::safe_cast<System::ComponentModel::ISupportInitialize^ >(this->numericUpDown_exponent))->EndInit();

this->ResumeLayout(false);

this->PerformLayout(); }

#pragma endregion

private: System::Void button_compute_Click(System::Object^ sender, System::EventArgs^ e)

{ const int count_numbers = 1000;

int number_Initial;

int exponent_Initial;

number_Initial = (int)numericUpDown_number->Value;

exponent_Initial=(int)numericUpDown_exponent->Value;

int number_Out[count_numbers];

int number_Interim[count_numbers];

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

{ number_Out[i] = 0;

number_Interim[i] = 0; }

number_Out[count_numbers - 1] = 1;

for(int i = 1; i <= exponent_Initial; i++)

{for(int j = count_numbers - 1; j >= 2; j--)

{ int number_Hi;

number_Hi = number_Out[j] * number_Initial / 10;

number_Low = number_Out[j] * number_Initial % 10;

if(number_Interim[j] + number_Low > 9)

{ number_Interim[j] = number_Interim[j] + number_Low - 10;

number_Hi++; }

else

{ number_Interim[j] = number_Interim[j] + number_Low; }

if(number_Interim[j - 1] + number_Hi > 9)

{ number_Interim[j - 1] = number_Interim[j - 1] + number_Hi - 10;

number_Interim[j - 2]++;

int k = j - 2;

while(number_Interim[k] = 10){

number_Interim[k] = 0;

k--;

number_Interim[k]++; }}

else

{ number_Interim[j - 1] = number_Interim[j - 1] + number_Hi; }}

for(int j = 0; j < count_numbers; j++)

{ number_Out[j] = number_Interim[j]; }

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

{ number_Interim[i] = 0; } }

bool begin_Number = false;

String^ str_Out = "";

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

{if(number_Out[i] > 0)

{begin_Number = true; }

if(begin_Number == true)

{ str_Out += number_Out[i].ToString();} }

GroupingNumber groupingNumber;

label_out->Text = "Результат: " + groupingNumber.Grouping(str_Out);

}};}

#pragma once

using namespace System;

public ref class GroupingNumber

{ public:

GroupingNumber(void);

String^ str_Out;

String^ Grouping(String^ str_In)

{ str_Out = "";

String^ str = "";

int ch = 1;//счётчик

for(int i = str_In->Length - 1; i >= 0; i--)

{str += str_In[i];

if(ch % 3 == 0) str += " ";

ch++;}

for(int i = str->Length - 1; i >= 0; i--)

{str_Out += str[i];}

return str_Out;}};

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

...

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

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

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

  • Разработка компьютерного приложения "Кипящая жидкость" с применением навыков программирования на языке Java. Проектирование алгоритма для решения поставленной задачи, его предметная область. Создание приложения с графическим пользовательским интерфейсом.

    отчет по практике [3,0 M], добавлен 29.10.2015

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

    курсовая работа [827,2 K], добавлен 19.04.2011

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

    курсовая работа [140,3 K], добавлен 20.06.2017

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

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

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

    курсовая работа [636,0 K], добавлен 04.02.2010

  • Блок-схема основной программы. Линейная и графическая схемы основной программы. Линейная и графическая схемы процедуры вычитания. Реализация ввода с клавиатуры числа, длиной не более 128 символов. Размещение числа в выделенной оперативной памяти.

    контрольная работа [73,4 K], добавлен 08.07.2012

  • Создание многоуровневого приложения с Web-интерфейсом выставления оценки фильму и просмотра оценок других пользователей. Клиентская часть приложения. Разработка многопользовательского веб-приложения на ASP.NET MVC 3 с разграничением доступа к данным.

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

  • Запись прямого и обратного кода для числа 10010 и -10010. Получение дополнительного кода числа для 16-разрядной ячейки. Перевод в двоичную систему счисления десятичных чисел: 10, 45, 7, 33. Запись в обратном и дополнительном кодах числа -67, -43, -89.

    практическая работа [13,7 K], добавлен 19.04.2011

  • Рассмотрение методов прямоугольников и трапеций как способов вычисления определенных интегралов. Характеристика графика зависимости погрешности от числа разбиений N. Создание приложения по вычислению интеграла с помощью методов приближенного вычисления.

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

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

    курсовая работа [352,0 K], добавлен 24.08.2016

  • Теоретические основы объектно-ориентированного языка программирования Delphi, изучение среды визуального проектирования приложений. Определение 40-го числа Фибоначчи, составление листинга и блок-схемы программы, тестирование ее на работоспособность.

    курсовая работа [261,1 K], добавлен 25.03.2015

  • Создание тестирующих и игровых программ. Степень сложности и художественного оформления интерфейса пользователя. Создание справочной системы. Корректное отображение символов. Создание системы управления базами данных в среде Delphi и таблиц базы данных.

    методичка [1,0 M], добавлен 24.10.2012

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

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

  • С точки зрения "готовности" к сохранению в память компьютера, информация делится на две категории - дискретная и непрерывная. Правила замены символов алфавита B символами алфавита A. Целые числа. Вещественные числа. Символы. Графика. Звук.

    реферат [12,8 K], добавлен 26.10.2006

  • Решение задач с помощью языка программирования Delphi: вычисление значения функции Y от X; систем двух уравнений; прогрессий; последовательностей; вычисление числа с определенной точностью; перевод числа из десятичной в восьмеричную систему счисления.

    отчет по практике [83,8 K], добавлен 08.06.2010

  • Основные принципы написания оконных приложений с графическим интерфейсом на языке Java в среде Eclipse. Управление компоновками компонентов: показ диалоговых окон, вывод графической информации. Структура приложения и размещение элементов интерфейса.

    лабораторная работа [1,1 M], добавлен 01.05.2014

  • Теоретические основы разработки Windows-приложений с использованием библиотеки MFC. Создание приложения с помощью Visual C++. Описание логической структуры приложения. Установка и запуск программы. Входные и выходные данные. Преимущество MFC библиотек.

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

  • Признание Интернета основным информационным ресурсом при переходе к информационному обществу. Проблемы ограничения числа пользователей современного Интернет и необходимость его модернизации. Создание и масштабирование локальных сетей нового поколения.

    статья [30,0 K], добавлен 04.12.2009

  • Обследование объекта, обоснование необходимости систем компьютерного тестирования. Анализ существующих разработок и обоснование выбора технологии проектирования. Создание системы компьютерного тестирования на основе случайного выбора в среде Visual Basic.

    дипломная работа [2,4 M], добавлен 18.08.2013

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