Программирование математических задач

  • Вид работы:
    Курсовая работа (т)
  • Предмет:
    Информационное обеспечение, программирование
  • Язык:
    Русский
    ,
    Формат файла:
    MS Word
    82,85 Кб
  • Опубликовано:
    2014-09-23
Вы можете узнать стоимость помощи в написании студенческой работы.
Помощь в написании работы, которую точно примут!

Программирование математических задач













ПОЯСНИТЕЛЬНАЯ ЗАПИСКА

к курсовой работе

по дисциплине Программирование и алгоритмизация

на тему Программирование математических задач

Содержание


Нормативные ссылки

Введение

. Задание №1

1.1       Формулировка задачи

.2         Спецификации задачи

.3         Математическая постановка задачи

.4         Схема алгоритма. Описание

.5         Текст программы и схема алгоритма

.6         Результат машинного тестирования программы

2. Задание №2

2.1       Формулировка задачи

.2         Спецификация задачи

.3         Математическая постановка задачи

.4         Схема алгоритма. Описание

.5         Текст программы и схема алгоритма

.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.

namespace ConsoleApplication1

{Program

{void Main(string[] args)

{

Console.BufferHeight = 5000;.WriteLine("Натуральные числа:");

int t = 0;//переменная в которой останется последнее число

for (int i = 1000; i < 10000; i++)

{a1 = i / 1000;//первая цифра числа

int a2 = (i % 1000) / 100;//вторая цифра числаa3 = (i % 100) / 10;//третья цифра числаa4 = i % 10;//четвертая цифра числа

//проверяем на сходство цифры(!= a2 &&//если первая цифра не равна второй И!= a3 &&//если первая цифра не равна третьей И!= a4 &&//если первая цифра не равна четвертой И!= a3 &&//если вторая цифра не равна третьей И!= a4 &&//если вторая цифра не равна четвертой И!= a4//если третья цифра не равна четвёртой

)

{.WriteLine();.Write(i);//выводим число на экран= i;

}

}.WriteLine();

//строим гистограмму.WriteLine("Вывод последнего числа в виде гистограммы");

int p = 1000, w;(int j = 0; j < 4; j++)

{= t / p;(int jj = 0; jj < w; jj++).Write("*");= t % p;= p / 10;.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;System.Collections.Generic;System.Linq;System.Text;ConsoleApplication2

{Program

{void Main(string[] args)

{.WriteLine("Ввод матрица 1");//вывод строки

Random r = new Random();//объявление переменной для генерации значений элементов массивовm = 10, n = 10;//максимальное количество строк и столбцов в масииве[,] m1 = new int[m, n];//объявление первого массива.WriteLine("Введите значение m1 (строк) < 10:");//выводим запрос на ввод размерности строк первого массива= Convert.ToInt32(Console.ReadLine());//считываем количество строк в первом массиве.WriteLine("Введите значение n1 (столбцов) < 10:");//выводим запрос на ввод размерности столбцов первого массива= Convert.ToInt32(Console.ReadLine());//считываем количество столбцов в первом массиве.WriteLine("матрица 1");//выводим соответствующую надпись

   for (int i = 0; i < m; ++i)// проходим по всем строкам

{(int j = 0; j < n; ++j)//проходим по всем столбцам

{[i, j] = r.Next(1, 3);//заполняем первый массив случайными числами.Write(" " + m1[i, j]);//выводим элемент массива на экран

}.WriteLine();//перейти на строчку ниже

}.WriteLine();//перейти на строчку ниже.WriteLine("Ввод матрица 2");//вывод строки[,] m2 = new int[m, n];//объявление второго массива.WriteLine("Введите значение m2 (строк) < 10:");//выводим запрос на ввод размерности строк второго массива= Convert.ToInt32(Console.ReadLine());//считываем количество строк во втором массиве.WriteLine("Введите значение n2 (столбцов) < 10:");//выводим запрос на ввод размерности столбцов второго массива= Convert.ToInt32(Console.ReadLine());//считываем количество столбцов во втором массиве.WriteLine("матрица 2");(int i = 0; i < m; ++i)// проходим по всем строкам

{(int j = 0; j < n; ++j)//проходим по всем столбцам

{[i, j] = r.Next(1, 3);//заполняем второй массив случайными числами.Write(" " + m2[i, j]);//выводим элемент массива на экран

}.WriteLine();//перейти на строчку ниже

}.WriteLine();//перейти на строчку ниже.WriteLine("Ввод матрица 3");//вывод строки[,] m3 = new int[m, n];//объявление третьего массива.WriteLine("Введите значение m3 (строк) < 10:");//выводим запрос на ввод размерности строк третьего массива= Convert.ToInt32(Console.ReadLine());//считываем количество строк в третьем массиве.WriteLine("Введите значение n3 (столбцов) < 10:");//выводим запрос на ввод размерности столбцов третьего массива= Convert.ToInt32(Console.ReadLine());//считываем количество столбцов в третьем массиве.WriteLine("матрица 3");//вывод строки(int i = 0; i < m; ++i)// проходим по всем строкам

{(int j = 0; j < n; ++j)//проходим по всем столбцам

{[i, j] = r.Next(1, 3);//заполняем третий массив случайными числами.Write(" " + m3[i, j]);//выводим элемент массива на экран

}.WriteLine();//перейти на строчку ниже

}.WriteLine();//перейти на строчку ниже.WriteLine("Ввод матрица 4");//вывод строки[,] m4 = new int[m, n];//объявление четвертого массива.WriteLine("Введите значение m4 (строк) < 10:");//выводим запрос на ввод размерности строк четвертого массива= Convert.ToInt32(Console.ReadLine());//считываем количество строк в четвертом массиве.WriteLine("Введите значение n4 (столбцов) < 10:");//выводим запрос на ввод размерности столбцов четвертого массива= Convert.ToInt32(Console.ReadLine());//считываем количество столбцов в четвертом массиве.WriteLine("матрица 4");//вывод строки(int i = 0; i < m; ++i)// проходим по всем строкам

{(int j = 0; j < n; ++j)//проходим по всем столбцам

{[i, j] = r.Next(1, 3);//заполняем четвертый массив случайными числами.Write(" " + m4[i, j]);//выводим элемент массива на экран

}.WriteLine();//перейти на строчку ниже

}.WriteLine();//перейти на строчку ниже[,] mnew = new int[m, n];//объявление вспомогательного массива(int i = 0; i < m; i++)// проходим по всем строкам

{(int j = 0; j < n; j++)//проходим по всем столбцам

{((m1[i, j] == m2[i, j]) && (m2[i,j] == m3[i, j]) && (m3[i,j]== m4[i, j]))//если элементы стоящие на одном и том же месте в четырех массивах равны

{//то этот элемент заносим в вспомогательный массив

mnew[i, j] = m1[i, j];

}

{//иначе в вспомогательный массив вносим 0[i, j] = 0;

}

}

}.WriteLine("Новая матрица");//вывод строки(int i = 0; i < m; i++)// проходим по всем строкам

{(int j = 0; j < n; j++)//проходим по всем столбцам.Write(" " + mnew[i, j]);//выводим элемент вспомогательного массива.WriteLine();//перейти на строчку ниже

}.WriteLine();//перейти на строчку нижеmax = mnew[0, 0];//объявлям переменную max(int i = 0; i < m; ++i)// проходим по всем строкам

{(int j = 0; j < n; ++j)//проходим по всем столбцам(mnew[i, j] > max) max = mnew[i, j];//если текущий элемент массива больше max, то записываем это значение в max

}.WriteLine("Наибольший элемент в матрице " + max);//выводим Наибольший элемент в матрице.Read();//ждем от пользователя нажатия на Enter[,] mnew1 = new int[m, n];//объявляем массив в которм будет находиься нормированный вспомогательный массив(int i = 0; i < m; ++i)// проходим по всем строкам

{(int j = 0; j < n; ++j)//проходим по всем столбцам

{[i, j] = mnew[i, j] / max;//нормируем вспомогательный массив и заносим в массив значение.Write(" " + mnew1[i,j]);//выводим на элемент нормированного массива на экран

}.WriteLine();//перейти на строчку ниже

} Console.WriteLine();//перейти на строчку ниже.ReadLine();

}

}

}

2.6     Результат машинного тестирования программы


Вводит с клавиатуры 4 матрицы размерностью строк n и столбцов m. Затем массив M1, M2, M1, M4 (матрицы) заполняется случайным образом. Если элементы, стоящие на одинаковых позициях в этих матрицах, равны - поместить их в новую матрицу (Mnew) на соответствующие позиции. Остальные элементы новой матрицы приравнять к нулю. Вывод наибольшего элемента матрицы. Затем вывод нормализованной матрицы.

Рисунок 2- Результат программы №2

 


Заключение


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

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

Список рекомендуемой литературы


1. Павловская Т.А. C#. Программирование на языке высокого уровня: учебник для вузов. - СПб.: Питер, 2012. - 432 с.

2. Шилдт Г. C#. Серия "Полное руководство". Пер. с англ. - М.: ЭКОМ Паблишерз, 2009. - 976 с.

3. Фаронов В.В. Создание приложений с помощью C#. Руководство программиста. - М.: Эксмо, 2008. - 576 с.

4. Малыхина М.П. Программирование на языке высокого уровня: учеб. пособие. - СПб.: БХВ-Петербург, 2006.

5. Фролов А.В., Фролов Г.В. Язык C#. Самоучитель. - М.: ДИАЛОГ-МИФИ, 2012.

6. Шильд Г. Полный справочник по C#. Пер. с англ. - М.: Вильямс, 2009.

Похожие работы на - Программирование математических задач

 

Не нашли материал для своей работы?
Поможем написать уникальную работу
Без плагиата!