Программирование математических задач
Формулировка, спецификация и математическая постановка задачи. Описание схемы алгоритма. Рассмотрение результата машинного тестирования программы. Получение на занятиях навыков алгоритмизации и программирования задач на языке высокого уровня C#.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 22.03.2015 |
Размер файла | 268,2 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
ПОЯСНИТЕЛЬНАЯ ЗАПИСКА
к курсовой работе
по дисциплине Программирование и алгоритмизация
на тему Программирование математических задач
Содержание
- Нормативные ссылки
- Введение
- 1. Задание №1
- 1.1 Формулировка задачи
- 1.2 Спецификации задачи
- 1.3 Математическая постановка задачи
- 1.4 Схема алгоритма. Описание
- 1.5 Текст программы и схема алгоритма
- 1.6 Результат машинного тестирования программы
- 2. Задание №2
- 2.1 Формулировка задачи
- 2.2 Спецификация задачи
- 2.3 Математическая постановка задачи
- 2.4 Схема алгоритма. Описание
- 2.5 Текст программы и схема алгоритма
- 2.6 Результат машинного тестирования программы
- Заключение
- Список рекомендуемой литературы
задача алгоритм программа язык
Нормативные ссылки
В настоящей пояснительной записке используются ссылки на следующие нормативные документы:
ГОСТ 7.32-2001 "Отчет о научно-исследовательской работе. Структура и правила оформления".
ГОСТ 2.105-95 "Общие требования к текстовым документам"
ГОСТ Р 7.0.5-2008 "Библиографическая ссылка. Общие требования и правила составления"
ГОСТ 7.1-2003 "Библиографическая запись. Библиографическое описание. Общие требования и правила составления"
ГОСТ 7.80-2000. "Библиографическая запись. Заголовок. Общие требования и правила составления"
ГОСТ 19.701-80 - ЕСПД. Схемы алгоритмов, программ, данных и систем.
Введение
Класс является основой языка С#, так как все действия в любой программе на этом языке происходят внутри класса. Реализация механизма подпрограмм в C# возложена на функциональный член класса, который именуется методом и реализует вычисления или другие действия, выполняемые классом или экземпляром. Методы определяют поведение класса.
Данная курсовая работа направлена на подробное изучение классов и методов языка C#. С этой целью будет реализовано программирование математических задач. Также данная курсовая работа способствует закреплению полученных на занятиях навыков алгоритмизации и программирования задач на языке высокого уровня C#.
1. Задание №1
1.1 Формулировка задачи
Получить все четырехзначные натуральные числа, в записи которых нет одинаковых цифр. Вывести последнее число в виде гистограммы.
1.2 Спецификации задачи
Входные данные:
- четырехзначные натуральные числа.
Выходные данные:
- Получить все четырехзначные натуральные числа, в записи которых нет одинаковых цифр;
- Вывести последнее число в виде гистограммы.
1.3 Математическая постановка задачи
Таблица 1- Характеристика переменных.
Характеристика переменных |
||||
Имя переменной |
Смысл переменной |
Назначение переменной |
Ограничения |
|
T |
Переменная, в которой останется последнее число |
Исходная |
||
А1 |
первая цифра числа |
Результат |
||
А2 |
вторая цифра числа |
Результат |
||
А3 |
третья цифра числа |
Результат |
||
А4 |
четвертая цифра числа |
Результат |
||
p |
Вспомогательная |
Промежуточная |
1000 |
|
w |
Переменная, в которой останется последняя цифра |
Результат |
В таблице 1 приведен ряд переменных, представляющих исходные данные и результаты работы программы. Этот ряд может быть дополнен на стадии разработки алгоритма.
После запуска программы она ищет первую цифру А1, вторую А2, третью А3 и четвертую А4 . Затем программа сравнивает все эти цифры, нет ли там повторений и записывает все полученные цифры в одно число, в переменную T.
1.4 Схема алгоритма. Описание
Схема алгоритма содержит следующие типовые структурные элементы: внутренний цикл, ветвление, внешний цикл. При выполнении внешнего цикла, мы последовательно, начиная с 1000 элемента, сравниваем их с 10000 элементом. В этом же цикле находим первую цифру и записываем её в а1, затем ищем вторую цифру и записываем в а2, третью в а3 и четвертую в а4. Затем проверяем на сходство цифры если первая цифра не равна второй и если первая цифра не равна третьей и если первая цифра не равна четвертой и если вторая цифра не равна третьей и если вторая цифра не равна четвертой и если третья цифра не равна четвёртой, то записываем её в переменную T.
1.5 Текст программы и схема алгоритма
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
Console.BufferHeight = 5000;
Console.WriteLine("Натуральные числа:");
int t = 0;//переменная в которой останется последнее число
for (int i = 1000; i < 10000; i++)
{
int a1 = i / 1000;//первая цифра числа
int a2 = (i % 1000) / 100;//вторая цифра числа
int a3 = (i % 100) / 10;//третья цифра числа
int a4 = i % 10;//четвертая цифра числа
//проверяем на сходство цифры
if (
a1 != a2 &&//если первая цифра не равна второй И
a1 != a3 &&//если первая цифра не равна третьей И
a1 != a4 &&//если первая цифра не равна четвертой И
a2 != a3 &&//если вторая цифра не равна третьей И
a2 != a4 &&//если вторая цифра не равна четвертой И
a3 != a4//если третья цифра не равна четвёртой
)
{
Console.WriteLine();
Console.Write(i);//выводим число на экран
t = i;
}
}
Console.WriteLine();
//строим гистограмму
Console.WriteLine("Вывод последнего числа в виде гистограммы");
int p = 1000, w;
for (int j = 0; j < 4; j++)
{
w = t / p;
for (int jj = 0; jj < w; jj++)
Console.Write("*");
t = t % p;
p = p / 10;
Console.WriteLine(+w);
}
Console.ReadKey();
}
}
}
1.6 Результат машинного тестирования программы
Вывод всех четырехзначных натуральных чисел, в записи которых нет одинаковых цифр. Вывод последнего числа в виде гистограмы
Рисунок 1- Результат программы № 1.
2. Задание №2
2.1 Формулировка задачи
Даны четыре матрицы размера m*n. Если элементы, стоящие на одинаковых позициях в этих матрицах, равны - поместить их в новую матрицу на соответствующие позиции. Остальные элементы новой матрицы приравнять к нулю. Нормализовать новой матрицы.
2.2 Спецификация задачи.
Входные данные:
- число m;
- число n;
Выходные данные:
- новая матрицы mnew[i, j];
- наибольший элемент в матрице max;
- нормализованная матрица mnew1[i, j];
2.3 Математическая постановка задачи
В таблице 2 приведен ряд переменных, представляющих исходные данные и результаты работы программы. Этот ряд будет дополнен на стадии разработки алгоритма. Переменная M - двумерный массив (матрица), элементы которого будут менять индексы по ходу работы программы, т.е. положение элементов в матрице будет меняться.
Общее описание алгоритма. Пользователь вводит с клавиатуры 4 матрицы размерностью строк n и столбцов m. Затем массив M1, M2, M1, M4 (матрицы) размером mxn заполняется случайным образом. Если элементы, стоящие на одинаковых позициях в этих матрицах, равны - поместить их в новую матрицу (Mnew) на соответствующие позиции. Остальные элементы новой матрицы приравнять к нулю. Для нормализации матрицы необходимо найти наибольший элемент (max) в новой матрице (Mnew) и разделить его на каждый элемент в новой матрице.
Таблица 2 - Характеристика переменных
Имя |
Смысл переменной |
Назначение |
Ограничения |
|
n |
Размер матрицы |
Исходная |
Целый тип данных |
|
m |
Размер матрицы |
Исходная |
Целый тип данных |
|
m1 |
Исходный массив |
Результат |
||
m2 |
Исходный массив |
Результат |
||
m3 |
Исходный массив |
Результат |
||
m4 |
Исходный массив |
Результат |
||
Mnew |
Новая матрица |
Результат |
||
max |
Наибольший элемент в новой матрице |
Результат |
||
Mnew1 |
Нормализованная матрица |
Результат |
||
i |
Счётчик цикла |
Промежуточная |
||
j |
Счётчик цикла |
Промежуточная |
||
r |
Счётчик цикла |
Промежуточная |
2.4 Схема алгоритма. Описание
Схема алгоритма содержит следующие типовые структурные элементы: внешний цикл и вложенные друг в друга структуры ветвления.
В первую очередь пользователь вводит с клавиатуры четыре матрицы с m столбцов и n строк. Затем при помощи метода Next объекта r - экземпляра класса Random массив M1, M2, M1, M4 заполняется случайным образом во вложенном цикле.
Далее над матрицами производится следующие действие:
Если элементы, стоящие на одинаковых позициях в этих матрицах, равны - поместить их в новую матрицу (Mnew) на соответствующие позиции. Остальные элементы новой матрицы приравнять к нулю.
Для того чтобы нормализовать матрицу Нам необходимо найти наибольший элемент в новой матрице. Для этого мы создаем еще один цикл, где выполняется условие: если элемент массива больше max, то записываем это значение в max. Затем мы каждый элемент новой матрицы (Mnew) делим на наибольший элемент в матрице (max). Результат выводим на экран.
2.5 Текст программы и схема алгоритма
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication2
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Ввод матрица 1");//вывод строки
Random r = new Random();//объявление переменной для генерации значений элементов массивов
int m = 10, n = 10;//максимальное количество строк и столбцов в масииве
int[,] m1 = new int[m, n];//объявление первого массива
Console.WriteLine("Введите значение m1 (строк) < 10:");//выводим запрос на ввод размерности строк первого массива
m = Convert.ToInt32(Console.ReadLine());//считываем количество строк в первом массиве
Console.WriteLine("Введите значение n1 (столбцов) < 10:");//выводим запрос на ввод размерности столбцов первого массива
n = Convert.ToInt32(Console.ReadLine());//считываем количество столбцов в первом массиве
Console.WriteLine("матрица 1");//выводим соответствующую надпись
for (int i = 0; i < m; ++i)// проходим по всем строкам
{
for (int j = 0; j < n; ++j)//проходим по всем столбцам
{
m1[i, j] = r.Next(1, 3);//заполняем первый массив случайными числами
Console.Write(" " + m1[i, j]);//выводим элемент массива на экран
}
Console.WriteLine();//перейти на строчку ниже
}
Console.WriteLine();//перейти на строчку ниже
Console.WriteLine("Ввод матрица 2");//вывод строки
int[,] m2 = new int[m, n];//объявление второго массива
Console.WriteLine("Введите значение m2 (строк) < 10:");//выводим запрос на ввод размерности строк второго массива
m = Convert.ToInt32(Console.ReadLine());//считываем количество строк во втором массиве
Console.WriteLine("Введите значение n2 (столбцов) < 10:");//выводим запрос на ввод размерности столбцов второго массива
n = Convert.ToInt32(Console.ReadLine());//считываем количество столбцов во втором массиве
Console.WriteLine("матрица 2");
for (int i = 0; i < m; ++i)// проходим по всем строкам
{
for (int j = 0; j < n; ++j)//проходим по всем столбцам
{
m2[i, j] = r.Next(1, 3);//заполняем второй массив случайными числами
Console.Write(" " + m2[i, j]);//выводим элемент массива на экран
}
Console.WriteLine();//перейти на строчку ниже
}
Console.WriteLine();//перейти на строчку ниже
Console.WriteLine("Ввод матрица 3");//вывод строки
int[,] m3 = new int[m, n];//объявление третьего массива
Console.WriteLine("Введите значение m3 (строк) < 10:");//выводим запрос на ввод размерности строк третьего массива
m = Convert.ToInt32(Console.ReadLine());//считываем количество строк в третьем массиве
Console.WriteLine("Введите значение n3 (столбцов) < 10:");//выводим запрос на ввод размерности столбцов третьего массива
n = Convert.ToInt32(Console.ReadLine());//считываем количество столбцов в третьем массиве
Console.WriteLine("матрица 3");//вывод строки
for (int i = 0; i < m; ++i)// проходим по всем строкам
{
for (int j = 0; j < n; ++j)//проходим по всем столбцам
{
m3[i, j] = r.Next(1, 3);//заполняем третий массив случайными числами
Console.Write(" " + m3[i, j]);//выводим элемент массива на экран
}
Console.WriteLine();//перейти на строчку ниже
}
Console.WriteLine();//перейти на строчку ниже
Console.WriteLine("Ввод матрица 4");//вывод строки
int[,] m4 = new int[m, n];//объявление четвертого массива
Console.WriteLine("Введите значение m4 (строк) < 10:");//выводим запрос на ввод размерности строк четвертого массива
m = Convert.ToInt32(Console.ReadLine());//считываем количество строк в четвертом массиве
Console.WriteLine("Введите значение n4 (столбцов) < 10:");//выводим запрос на ввод размерности столбцов четвертого массива
n = Convert.ToInt32(Console.ReadLine());//считываем количество столбцов в четвертом массиве
Console.WriteLine("матрица 4");//вывод строки
for (int i = 0; i < m; ++i)// проходим по всем строкам
{
for (int j = 0; j < n; ++j)//проходим по всем столбцам
{
m4[i, j] = r.Next(1, 3);//заполняем четвертый массив случайными числами
Console.Write(" " + m4[i, j]);//выводим элемент массива на экран
}
Console.WriteLine();//перейти на строчку ниже
}
Console.WriteLine();//перейти на строчку ниже
int[,] mnew = new int[m, n];//объявление вспомогательного массива
for (int i = 0; i < m; i++)// проходим по всем строкам
{
for (int j = 0; j < n; j++)//проходим по всем столбцам
{
if ((m1[i, j] == m2[i, j]) && (m2[i,j] == m3[i, j]) && (m3[i,j]== m4[i, j]))//если элементы стоящие на одном и том же месте в четырех массивах равны
{//то этот элемент заносим в вспомогательный массив
mnew[i, j] = m1[i, j];
}
else
{//иначе в вспомогательный массив вносим 0
mnew[i, j] = 0;
}
}
}
Console.WriteLine("Новая матрица");//вывод строки
for (int i = 0; i < m; i++)// проходим по всем строкам
{
for (int j = 0; j < n; j++)//проходим по всем столбцам
Console.Write(" " + mnew[i, j]);//выводим элемент вспомогательного массива
Console.WriteLine();//перейти на строчку ниже
}
Console.WriteLine();//перейти на строчку ниже
int max = mnew[0, 0];//объявлям переменную max
for (int i = 0; i < m; ++i)// проходим по всем строкам
{
for (int j = 0; j < n; ++j)//проходим по всем столбцам
if (mnew[i, j] > max) max = mnew[i, j];//если текущий элемент массива больше max, то записываем это значение в max
}
Console.WriteLine("Наибольший элемент в матрице " + max);//выводим Наибольший элемент в матрице
Console.Read();//ждем от пользователя нажатия на Enter
int[,] mnew1 = new int[m, n];//объявляем массив в которм будет находиься нормированный вспомогательный массив
for (int i = 0; i < m; ++i)// проходим по всем строкам
{
for (int j = 0; j < n; ++j)//проходим по всем столбцам
{
mnew1[i, j] = mnew[i, j] / max;//нормируем вспомогательный массив и заносим в массив значение
Console.Write(" " + mnew1[i,j]);//выводим на элемент нормированного массива на экран
}
Console.WriteLine();//перейти на строчку ниже
} Console.WriteLine();//перейти на строчку ниже
Console.ReadLine();
}
}
}
2.6 Результат машинного тестирования программы
Вводит с клавиатуры 4 матрицы размерностью строк n и столбцов m. Затем массив M1, M2, M1, M4 (матрицы) заполняется случайным образом. Если элементы, стоящие на одинаковых позициях в этих матрицах, равны - поместить их в новую матрицу (Mnew) на соответствующие позиции. Остальные элементы новой матрицы приравнять к нулю. Вывод наибольшего элемента матрицы. Затем вывод нормализованной матрицы.
Рисунок 2- Результат программы №2
Заключение
В ходе выполнения курсовой работы были реализованы алгоритмы решения поставленных задач и написаны соответствующие коды программ. Программы были написаны с использованием методов, что позволило значительно сократить и оптимизировать коды.
В результате были созданы две работоспособные программы по решению математических задач. Первая получить все четырехзначные натуральные числа, в записи которых нет одинаковых цифр. Выводит последнее число в виде гистограммы. Вторая создает четыре матрицы размера m*n. Если элементы, стоящие на одинаковых позициях в этих матрицах, равны - поместить их в новую матрицу на соответствующие позиции. Остальные элементы новой матрицы приравнивает к нулю. Нормализует новую матрицу.
Список рекомендуемой литературы
Павловская Т.А. C#. Программирование на языке высокого уровня: учебник для вузов. - СПб.: Питер, 2012. - 432 с.
Шилдт Г. C#. Серия "Полное руководство". Пер. с англ. - М.: ЭКОМ Паблишерз, 2009. - 976 с.
Фаронов В.В. Создание приложений с помощью C#. Руководство программиста. - М.: Эксмо, 2008. - 576 с.
Малыхина М.П. Программирование на языке высокого уровня: учеб. пособие. - СПб.: БХВ-Петербург, 2006.
Фролов А.В., Фролов Г.В. Язык C#. Самоучитель. - М.: ДИАЛОГ-МИФИ, 2012.
Шильд Г. Полный справочник по C#. Пер. с англ. - М.: Вильямс, 2009.
Размещено на Allbest.ru
Подобные документы
Основные особенности создания работоспособных программ по решению математических задач. Рассмотрение и характеристика типовых структурных элементов схемы алгоритма: внутренний цикл, ветвление. Анализ результатов машинного тестирования программы.
контрольная работа [502,8 K], добавлен 07.01.2013Приобретение теоретических и практических навыков программирования на языке Паскаль. Математическая формулировка задачи и выбор метода обработки информации. Разработка алгоритма и его описание. Описание программы. Форма представления исходных данных.
курсовая работа [224,3 K], добавлен 11.02.2016Разработана программа решения двух задач на языке программирования Turbo Pascal. Спецификация задания. Описание входных и выходных данных. Математическая постановка задачи. Алгоритм ее решения. Описание и блок-схема программы. Результаты тестирования.
курсовая работа [275,8 K], добавлен 28.06.2008Методы языка программирования C#. Алгоритмизация и программирование задач на языке высокого уровня C#. Внутренний цикл, ветвление, внешний цикл, вложенные друг в друга структуры ветвления. Вывод элементов массива на экран. Остальные элементы матрицы.
курсовая работа [250,2 K], добавлен 27.02.2015Вычисление значения интеграла функции, заданной графически. Постановка задач. Составление таблицы значений функции, заданной в виде разложения в ряд. Математическая формулировка. Численный метод решения. Схемы алгоритмов. Инструкции пользователям.
курсовая работа [56,3 K], добавлен 05.07.2008Методы численного интегрирования. Характеристика основных составляющих структурного программирования. Решение задания на языке высокого уровня Паскаль. Построение графического решения задачи в пакете Matlab. Решение задания на языке высокого уровня C.
курсовая работа [381,7 K], добавлен 10.05.2018Изучение функций и возможностей среды разработки языка программирования Pascal. Рассмотрение работы с одномерными и двумерными массивами, со строками и числами. Математическая формулировка задач. Разработка алгоритмов, описание структуры программ.
курсовая работа [879,8 K], добавлен 11.02.2016Исследование классификации компьютерных игр, двигателей прогресса индустрии для персональных компьютеров. Характеристика общей структуры, протокола и текста программы, сценария и процесса игры. Изучение алгоритмизации и программирования на языке Паскаль.
реферат [2,1 M], добавлен 16.09.2011Математическая формулировка задачи, принципиальная схема гидравлического демпфера. Структурная схема программы связи модулей, реализованной на языке высокого уровня Borland Delphi 7.0. Ее описание, руководство пользователя, особенности тестирования.
курсовая работа [140,0 K], добавлен 29.05.2013Особенности вывода на экран содержимого файла BAZA.txt. Анализ функций вывода информации о количестве каждой марки машин. Рассмотрение способов проектирования тестов программы методами черного ящика. Проблемы программирования на языке высокого уровня.
контрольная работа [1,6 M], добавлен 04.01.2015