
Министерство образования и науки Российской Федерации
Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования
«КУБАНСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНОЛОГИЧЕСКИЙ
УНИВЕРСИТЕТ»
Кафедра ___________________________________________________
ПОЯСНИТЕЛЬНАЯ ЗАПИСКА
к курсовой работе
по дисциплине ______________________________________________
(наименование дисциплины)
на тему ____________________________________________________
(тема курсовой работы)
Выполнил(а) студент(ка) группы________________________________
____________________________________________________________
(ф.и.о.)
Допущен к защите __________________________________________
Руководитель проекта ________________________________________
Защищен _______________ Оценка ________________________
(дата)
Члены комиссии _____________________________________________ ____________________________________________________________
(подпись, дата, расшифровка подписи)
20__ г.
Нормативные ссылки
В настоящих методических указаниях используются ссылки на следующие нормативные документы:
ГОСТ Р 7.05-2008 – СИБИД. Библиографическая ссылка. Общие требования и правила составления.
ГОСТ 2.105-95 – ЕСКД. Общие требования к текстовым документам.
ГОСТ 7.9-95 – СИБИД. Реферат и аннотация. Общие требования.
ГОСТ 19.701-80 – ЕСПД. Схемы алгоритмов, программ, данных и систем.
Введение
Целью курсовой работы является закрепление теоретического материала, приобретение практических навыков проектирования и отладки консольных приложений написанных на языке высокоуровневого программирования С#, предназначенного для платформы .NET. Данная курсовая работа направлена на подробное изучение методов языка C# и на совместное использование всех базовых конструкций языка. С этой целью будет реализовано программирование математических задач. Знания, полученные на занятиях, заложили фундамент для дальнейшего изучения возможностей C#.
Формулировка задачи
Дано натуральное число N. Определить длину периода 1/n. Период дроби равен периоду в последовательности остатков. Построить график зависимости периода от N.
Спецификация задачи
Входные данные:
- число N.
Выходные данные:
- получить значение частного 1/N;
- определить период в последовательности остатков.
Математическая постановка задачи
-
Характеристика переменных
Имя переменной
Смысл переменной
Назначение переменной
Ограничения
N
Десятичная число
Исходная
От 1 до ….
S
Десятичное число
Промежуточная
После ввода числа N, производим деление 1 на N, результат которой записываем в переменной S. Потом берем из этого числа остаток от деления и перезаписываем его в переменную S. Далее каждую цифру числа S, мы помещаем в целочисленный массив m. Следом идет ряд условных операторов, определяющих период числа S.
Схема алгоритма. Описание
Схема алгоритма содержит следующие типовые структурные элементы: внутренний цикл, ветвление, внешний цикл. При выполнении внешнего цикла, мы последовательно, начиная с первого элемента, сравниваем их с 0 элементом. Если значение какого-либо элемента равняется 0-ому элементу, мы запоминаем его порядковый номер и записываем в переменную index. В переменную P записываем значение переменной index. Во внутреннем цикле идет сравнение элементов от 0 по inedex – 1 с элементами от index до длины массива m.length – 1. В результате в зависимости от наличия или отсутствия периода выводится, то или иное сообщение.
Код программы и схема алгоритма
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
/*Вариант 2 Дано натуральное число N. Определить длину периода 1/n. Период дроби равен периоду в последовательности
остатков. Построить гра-фик зависимости периода от N. */
int n = Convert.ToInt32(Console.ReadLine());
string s = (1.0 / n).ToString(); // Результат от деления записываем в стороковую переменную s
Console.WriteLine(s);
s = s.Substring(2, s.Length - 2); // Убираем целую часть и запятую и перезаписываем значение в переменную s
Console.WriteLine(s);
int[] m = new int[s.Length];
for (int i = 0; i < s.Length; i++) // Каждую цифру числа, записываем в массив m
{
m[i] = Convert.ToInt32(s.Substring(i, 1));
Console.Write(m[i]);
} Console.ReadLine();
for (int i = 1; i < m.Length; i++) // Сравниваем числа с 0 элементом
{
if (m[i] == m[0])
{
int index = i; // Запоминаем его порядковый номер
int P = index;
for (i = 0; i < index; i++) // Сравниваем числа от 0 до index - 1 с элементами от index до m.length - 1
{
if (m[i] == m[index])
{
if (index < m.Length - 1)
{
index++;
Console.WriteLine("Период равен P=" + P);
Console.ReadLine();
}
}
}
}
else
{
{
Console.WriteLine("Периода нет");
Console.ReadLine();
}
}
}
}
}
}
начало
Введите N
S = 1/N
I =0; i<s.Length; i++

M[i]
I=1; i<m.Length; i++
M[i]==m[0]
Периода нет
Конец
Index = I;
P = index;
1
2
I=0; i<index; i++;
1
2
M[i]==m[index]
Index<m.length-1
Index ++;
P
Результат машинного тестирования программы
При N равное 3, период остатка от деления 1/N будет равняться 1.
Формулировка задачи.
Даны два массива: x[1] ≤… ≤ x[k], y[1] ≤ … ≤ y[l] и число q. Найти сумму вида x[i] + y[j], наиболее близкую к числу q (число действий порядка k + l, дополнительная память – фиксированное число переменных, массивы не изменять).
Спецификация задачи.
Входные данные:
- число q;
- массив x;
- массив y.
Выходные данные:
- значение суммы самой близкой к числу q;
- порядковый номер числа q в массиве.
Математическая постановка задачи.
Характеристика переменных |
|||
Имя переменной |
Смысл переменной |
Назначение переменной |
Ограничения |
q |
Десятичное число |
Исходная |
|
k |
Размерность массива x |
Исходная |
|
x |
Одномерный массив |
Исходная |
|
l |
Размерность массива y |
Исходная |
|
y |
Одномерный массив |
Исходная |
|
z |
Одномерный массив |
Промежуточная |
|
we |
Булева переменная |
Промежуточная |
|
nomer |
Порядковый номер числа q |
Промежуточная |
|
v, v1 |
Определяют ближайшую сумму к числу q |
Результат |
|
Как только ввели число q, начинаем складывать элементы массивов x и y. Результат суммы записываем в массив z. Далее сортируем элементы массива по возрастанию и перезаписываем их. Следующим шагов выполняется ряд условий, которые и находят самую близкую сумму двух массивов x и y к числу q.
Схема алгоритма. Описание
Схема алгоритма содержит следующие типовые структурные элементы: внешний цикл и вложенные друг в друга структуры ветвления. В цикле начинается перебор массива z, до тех пор пока не найдем число q в массиве z. Далее проверяем, если число q - это последний элемент массива, то самой близкой суммой к числу q будет равняться стоящий перед ним элемент. Если же это не так, то в следующем условии проверяем, не является ли число q нулевым элементов массива. Тогда ближайшей к нему суммой будет следующий после него элемент. В конце задаем структуры ветвления, на случай если наше число q стоит в середине массива. В них сравнивается число, стоящее перед и после значения q. В зависимости от их значения, выводится ближайшая сумма элементов массива x и y к числу q.