Дано число n, подсчитать количество единиц в двоичной записи этого числа

Автор работы: Пользователь скрыл имя, 27 Февраля 2013 в 14:58, курсовая работа

Краткое описание

Задача: Дано число M в степени n, n - в пределе 1000.
Показать сколько раз повторяются числа с 0 до 9 включительно.
Постановка задачи и пред проектное исследование. Математическая модель поставленной задачи. Алгоритм и блок-схема работы программы. Разработка принципов работы программы и проектирование интерфейса.
Описание основных процедур и функций программы. Проверка работоспособности и доказательство правильности работы программного обеспечения. Инструкция пользователя.

Содержание

Постановка задачи и пред проектное исследование 4
Математическая модель поставленной задачи 8
Алгоритм и блок-схема работы программы 12
Разработка принципов работы программы и проектирование интерфейса 16
Описание основных процедур и функций программ 21
Проверка работоспособности и доказательство правильности работы ПО 26
Инструкция пользователя 28

Прикрепленные файлы: 1 файл

KURSOVAYa_Sitnikov_Sergey_kIS-10.docx

— 2.34 Мб (Скачать документ)

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

Основные свойства, присущие любому алгоритму:

    1. массовость —  алгоритм предназначен для решения задачи с

некоторым множеством допустимых входных данных;

    1. конечность —  алгоритм должен завершаться за конечное число

шагов (но это количество шагов, может быть разным для разных

входных данных).

В информатике и теории алгоритмов вычислительная сложность  алгоритма — это функция, определяющая зависимость объёма работы, выполняемой  некоторым алгоритмом, от размера  входных данных. Раздел, изучающий  вычислительную сложность, называется теорией сложности вычислений. Объём  работы обычно измеряется абстрактными понятиями времени и пространства, называемыми вычислительными ресурсами. Время определяется количеством  элементарных шагов, необходимых для  решения проблемы, тогда как пространство определяется объёмом памяти или  места на носителе данных. Таким  образом, в этой области предпринимается  попытка ответить на центральный  вопрос разработки алгоритмов: «как изменится  время исполнения и объём занятой  памяти в зависимости от размера  входа и выхода?». Здесь под  размером входа понимается длина  описания данных задачи в битах (например, в задаче коммивояжера длина входа пропорциональна количеству городов и дорог между ними), а под размером выхода — длина описания решения задачи (оптимального маршрута в задаче коммивояжера).

В частности, теория сложности  вычислений определяет NP-полные задачи, которые недетерминированная машина Тьюринга может решить за полиномиальное время, тогда как для детерминированной  машины Тьюринга полиномиальный алгоритм неизвестен. Обычно это сложные проблемы оптимизации, например, задача коммивояжера.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

    1. Разработка принципов работы программы и проектирование интерфейса.


     1


    2


   

      3


    4


    5


    6


 

                                            

 

                             7               

                                                                     8

  1. Label1- Условие задачи.
  2. Label2- Описание SpinEdit1, в нашем случае : Введите число М.
  3. SpinEdit1- Число М.
  4. Label3- Описание SpinEdit2.
  5. SpinEdit2- Степень N.
  6. Button1- Кнопка подсчёта и вывода ответа в Memo1.
  7. Label4- посменное направление.
  8. Memo1- В этом окне высвечивается ответ при нажатие кнопки Button1.

 

 

 

 

 

 

 

 

 

 

 

 

В среде разработки Lazarus спроектируем интерфейс, разместив на форме управляющие элементы

 

 

Для нашей работы нам потребуется  4 основных компонента:

  • Label
  • SpinEdit
  • Button
  • Memo

Разместим их путем перетаскивания на форму.

    • Label – В интерфейсе у нас указан в виде текса, к примеру:

Так же

И являются одним из компонентов: Label.

  • Число М вводиться в SpinEdit1

Так же как:

  • Степень N вводиться в SpinEdit2

Затем для запуска вычисления нажимается кнопка «Ответ» (Button1)

Результат вычислений выводится в компоненте Memo.

 

 

Разработка принципов работы программы

 При запуске приложения  с помощью команды (caption) высвечивается окно:

В котором пользователь может  выбрать Число М в степени  n, и получить ответ нажав на кнопку «Ответ».

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

После чего выполняется возведение числа M в степень n, которые ранее выбрал пользователь.

Далее реализуется цикл, в теле которого производиться подсчёт количества цифр от 0 до 9 из подсчитанной суммы M в степени n.

После того, как подсчет от 0 до 9 закончиться происходит вывод полученного результата в компонент Memo1.

 

То есть в компонент  Memo1 выводиться переменные:

(c)- Числа, которые мы ищем (от 0 до 9)

(strl)- Число полученное в результате возведения числа M в степень n, и в котором мы ищем количество повторений.

(b)- Количество повторяющихся чисел от 0 до 9.

После чего происходит выход из цикла.

Ниже представлен листинг программы с комментариями, алгоритмов возведения числа М в степени n, и подсчёта чисел от 0 до 9.

 

 

 

 

 

 

 

 

 

 

 

 

 

    1. Описание основных процедур и функций программ.

Изначально при загрузке приложения выводится команда вывода на экран приглашения ввести число, в котором мы будем подсчитывать число 1 в двоичном представлении:

Label1(Введите число, что бы подсчитать количество 1 в его двоичном представлении).

Листинг программы с постусловием:

(* Начало блока тела программы *)

unit Unit1;

{$mode objfpc}{$H+}

interface

uses

(*Описание используемых модулей*)

  Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,

  Buttons, ComCtrls, Spin, ButtonPanel, StdCtrls, Arrow;

 

 

 

 

 

 

 

 

Type

(*Описание компонентов на форме*)

{ TForm1 }

  TForm1 = class(TForm)

    BitBtn1: TBitBtn;

    Label1: TLabel;

    Label2: TLabel;

    Label3: TLabel;

    Label4: TLabel;

    Memo1: TMemo;

    SpinEdit1: TSpinEdit;

    SpinEdit2: TSpinEdit;

        procedure BitBtn1Click(Sender: TObject);  private

    { private declarations }

  public

    { public declarations }

  end;

 

 

 

 

 

var

(*Главная форма*)

  Form1: TForm1;

implementation

{ TForm1 }

procedure TForm1.Button1Click(Sender: TObject); (*Блок определения переменных, где М и n – вводимые пользователем числа, (b)- Количество повторяющихся чисел от 0 до 9. (c)- Числа, которые мы ищем (от 0 до 9)

(strl)- Число полученное в результате возведения числа M в степень n. Тип переменных- целочисленный.*)

var

n,m,i,b,c:integer;

s:extended;

strl,sr:string;

(* Начало блока тела  программы *)

 

Begin

(* считывание введённого числа *)

m:=strtoint(form1.spinedit1.Text);

n:=strtoint(form1.spinedit3.Text);

 (* Возведение числа М в степень n *)

s:=exp(ln(m)*n);

(*Вывод полученного результата  возведения в степень *)

form1.Memo1.Lines.Add (floattostr(s));

 

(*перевод чисел в строку*)

Str(S:n:m,strl);

(*Вывод числа strl*)

form1.Memo1.Lines.Add(strl);

(*Приравнивание переменных к нулю*)

c:=0 ;b:=0;

(*Открытие цикла while*)

while c<=9 do begin

(*перевод чисел в строку*)

str(c,sr);

(*Открытие цикла for(счётчик), Функция length возвращает в качестве результата значение текущей длины строки-параметра *)

for i:=1 to length(strl) do

begin

 (* условие если strl[i] равно числу sr тогда к b+1, в противном случае возвращаемся циклу*)

          if strl[i]=sr then inc(b);

end;

 (* Выводим результат*)

form1.Memo1.Lines.Add('Число '+floattostr (c)+' в числе '+(strl)+' встречаеться '+floattostr(b)+' раз');

 

(*Прибавляем к переменной (С) 1,и приравниваем переменную  b к нулю, после чего возвращаемся в цикл while*)

inc(c);

b:=0;

end;

end;

(* Конец программы *)

end.        

 

 

 

 

 

 

 

 

 

 

 

 

 

    1. Проверка работоспособности и доказательство правильности работы ПО.

Проведем тестирование данной системы на различные варианты:

1:

  1. В числе М вводим число 5
  2. В степени N вводим 2

     5 в степени  2=25

Количество повторений чисел 2=1;5=1

Результат работы системы:

2:

  1. В числе М вводим число 35
  2. В степени N вводим 5

     35 в степени 5= 52521875

Количество повторений чисел 1=1;2=1;3=0;4=0;5=3;8=1;

Результат работы системы:

3:

  1. В числе М вводим число 48
  2. В степени N вводим 95

     48 в степени 95= 5.2229702328614029E+0159

Количество повторений чисел 0=3;1=2;2=6;3=1;4=1;5=2;6=1;7=1;8=1;9=3;

Результат работы системы:

 

Приведенные выше примеры  доказывают правильность и работоспособность  данной программы.

 

 

 

 

 

    1. Инструкция пользователя.

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

Setup.exe

Двойным нажатием на него левой  кнопки мыши или нажав правой кнопкой  мыши и выбрать появившегося меню «открыть».

После чего появившемся окне нужно выбрать язык «русский» или «английский».

После выбора языка нажмите  кнопку «ОК»

 

 

 

 

 

 

 

 

Следующем отрытом окне:

Нажимаем на кнопку «Далее»

После чего в появившемся  окне:

 выбираем путь установки  программы при помощи кнопки  «обзор» 

После нажимаем кнопку «Далее»

В след окне выбираем: нужен ли вам ярлык на рабочем столе.

- Нужен(С галочкой)

- Не нужен(Без галочки)

После соответствующего вам  выбора, нажимаем кнопку «Далее»

В появившемся окне вы можете проверить (каталог установки это  то место в компьютере, куда вы устанавливаете данную программу) и создали ли вы ярлык на рабочем столе или  же нет?

 

Если вы хотите что-то изменить нажмите кнопку «Назад»

Если всё в порядке  выберете кнопку «Установить»

После завершения процесса установки, появиться окно

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

После вашего выбора нажимаем кнопку «Готово»

После чего запускаем программу  с ярлыка на рабочем столе или  же в нашем случае это запуск после  нажатие кнопки «Готово»

В появившемся окне:

Выбираем значения M и N:

После вашего выбора, нажимаем на кнопку «ответ»

После получения результата появившегося в правой стороне окна

Можете скопировать ответ: выделив ответ и нажав на нём  правой кнопкой мыши и появившемся  меню выбрать «копировать» нажав  левой кнопкой мыши.

После чего можете закрыть  программу, нажав на «закрыть»

Инструкция по удалению:

Для удаления программы зайдите  в меню «установка и удаление программ», Выберите программу (Сколько чисел1.00) и нажмите удалить.

Информация о работе Дано число n, подсчитать количество единиц в двоичной записи этого числа