Курсовая вариант 44(классы)
.docx
Цель работы
-
Разработка программы согласно заданию.
-
Выработка навыков работы над проектом.
-
Закрепление навыков составления отчета о проделанной работе.
-
Выработка навыков поиска наиболее оптимальных решений в программировании и обоснования их в отчете.
Задание
Дано натуральное число n<100000. Определить, сколько различных цифр встречается в его десятичной записи
Решение
Способы решения задачи
1. Определить количество различных цифр можно математически (арифметически). С учетом ограничений наложенных в программе (n<100000), количество арифметических операций будет конечно. Можно разложить число по разрядам и проводить манипуляции по сравнению количества единиц, десятков, сотен и. т. д.
2. Определить количество различных цифр можно в строке. Этот метод удобен своей универсальностью, так как число всегда можно преобразовать в строку и обратно. Количество операций в данном решении будет минимально. Но потребуется перевод из числа в строку.
Выбор способа решения задачи: Способ 2 наиболее универсален, позволяет использовать всю мощь библиотек и функций языка "С", поэтому следует его выбрать.
Дополнительные требования к программе:
1. Способ получения строки.
1.1. Можно задать число в качестве константы.
1.2. Можно спросить число у пользователя (ввод с клавиатуры).
Выбор способа получения числа "n":Наиболее удобен с точки зрения пользователя способ (1.2.), так как позволяет быстро проверить программу на различных числах, не меняя код программы.
2. Внешний вид программы и среда разработки.
2.1. BC 3.1 forDos - консольное приложение скомпилированное под MSDOS.
2.2. DevC++ -консольное приложение для MSWindows.
2.3. DevC++ - графическое, оконное приложение дляMSWindows.
Выбор внешнего вида программы: Наиболее удобным и достаточным можно считать консольное приложение для MSWindows (вариант 2.2.). Так как оно позволит вводить число и при этом позволит выводить сообщения на русском языке.
Вариант 2.1. не позволит использовать кириллицу. А вариант 2.3. будет избыточен для данной задачи (графический интерфейс в данной задаче не требуется).
Структура программы
Выделим функции программы:
-
Ввод данных.
-
Перевод числа в строку
-
Определение числа различных символов в строке
обобщенная структурная схема
функция определения числа различных символов в строке
-
Вывод данных.
начало int
rez=5;
scanf
("%d",&n); А,
пока i<strlen(b)
f=b[i];
itoa(n,
b, 10); B,
i+1<j<strlen(b)
a=d1.cifri()
b[j]==f да
printf(“%d
%d”, a); rez--;
нет
конец B
A
нет (rez==2) да нет rez=rez+3; (rez==2) да rez=rez+6; (rez==2)
да
rez++;
return(rez);
Код программы
/* подключение библиотек */ #include <cstdlib>
#include <iostream>
#include <string.h>
#include <ctype.h>
#include <stdio.h>
using namespace std; /* описание класса */
class deliteli
{
char b[7];
public:
deliteli(int a);
int cifri(void);
}; /* главная функция */ int main(int argc, char *argv[])
{
int n;
printf ("Vvedite chislo N\n");
scanf ("%d",&n);
if (!(n<100000))
{printf("chislo ne udovletvoryaet usloviyu\n");
return 1;
}
deliteli d1(n);
printf("v chisle %d raznih cifr(i)\n", d1.cifri());
system("pause");
return 0;
}
/* описание конструктора */
deliteli::deliteli(int a)
{
itoa(a, b, 10);
}
/* описание функции класса */
int deliteli::cifri(void)
{
int rez=5;
char f;
for(int i=0; i<strlen(b); i++)
{
f=b[i];
for(int j=i+1; j<strlen(b); j++)
{ if(b[j]==f) rez--;
}
}
if (rez==2) rez++;
if (rez==-1) rez=rez+3;
if (rez==-5) rez=rez+6;
return rez;}
Выводы
1. Разработана программа согласно техническому заданию.
1.1. Программа выполняет заданную операцию (определяет количество слов в строке и число слов, начинающихся на «В»).
1.2. Выбран вариант разработки программы как консольного приложения Windows.
1.3. Выбран алгоритм определения необходимых значений через обработку строки в цикле с определением соседних символов, он наиболее точен и универсален.
2. В результате работы над проектом составлена документация к проекту (данный отчет).
3. В результате работы над проектом приняты концептуальные решения, определившие внешний вид проекта, алгоритм работы и функционал программы.
Приложение 1: Тестовые примеры работы программы
Тестовый пример 1:
Введите число: ввести число <100000 и проверить правильность вставить скриншот со своей фамилией
программа выполнена успешно
Тестовый пример 2:
Введите число: ввести число >100000 и программа выдаст ошибку
ошибка