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

Методы языка программирования C#. Алгоритмизация и программирование задач на языке высокого уровня C#. Внутренний цикл, ветвление, внешний цикл, вложенные друг в друга структуры ветвления. Вывод элементов массива на экран. Остальные элементы матрицы.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 27.02.2015
Размер файла 250,2 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

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

Размещено на http://www.allbest.ru/

Размещено на http://www.allbest.ru/

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

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

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

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

НОРМАТИВНЫЕ ССЫЛКИ

В настоящей пояснительной записке используются ссылки на следующие нормативные документы:

ГОСТ 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.

язык программирование массив матрица

Размещено на http://www.allbest.ru/

Размещено на http://www.allbest.ru/

Размещено на http://www.allbest.ru/

Размещено на http://www.allbest.ru/

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

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). Результат выводим на экран.

Размещено на http://www.allbest.ru/

Размещено на http://www.allbest.ru/

Размещено на http://www.allbest.ru/

Размещено на http://www.allbest.ru/

Размещено на http://www.allbest.ru/

Размещено на http://www.allbest.ru/

Размещено на http://www.allbest.ru/

Размещено на http://www.allbest.ru/

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

Заключение

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

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

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

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

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

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

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

Малыхина М.П., Частикова В.А., Миклашевская Л.Н. Программирование на языке высокого уровня. Методические указания к курсовой работе по дисциплине «Программирование на языке высокого уровня» для студентов всех форм обучения специальности 220400. -Краснодар: Изд. КубГТУ, 2004.

Размещено на Allbest.ur


Подобные документы

  • Основные особенности создания работоспособных программ по решению математических задач. Рассмотрение и характеристика типовых структурных элементов схемы алгоритма: внутренний цикл, ветвление. Анализ результатов машинного тестирования программы.

    контрольная работа [502,8 K], добавлен 07.01.2013

  • Алгоритмизация и структурное программирование на языке С/С++. Создание справочника в памяти (ввод данных), вывод справочника на экран с использованием потоковых классов, сортировка методом Шелла. Циклы, описание применяемых специальных алгоритмов.

    курсовая работа [1,0 M], добавлен 26.02.2012

  • Формулировка, спецификация и математическая постановка задачи. Описание схемы алгоритма. Рассмотрение результата машинного тестирования программы. Получение на занятиях навыков алгоритмизации и программирования задач на языке высокого уровня C#.

    курсовая работа [268,2 K], добавлен 22.03.2015

  • Изучение функций и возможностей среды разработки языка программирования Pascal. Рассмотрение работы с одномерными и двумерными массивами, со строками и числами. Математическая формулировка задач. Разработка алгоритмов, описание структуры программ.

    курсовая работа [879,8 K], добавлен 11.02.2016

  • Особенности вывода на экран содержимого файла BAZA.txt. Анализ функций вывода информации о количестве каждой марки машин. Рассмотрение способов проектирования тестов программы методами черного ящика. Проблемы программирования на языке высокого уровня.

    контрольная работа [1,6 M], добавлен 04.01.2015

  • Методы численного интегрирования. Характеристика основных составляющих структурного программирования. Решение задания на языке высокого уровня Паскаль. Построение графического решения задачи в пакете Matlab. Решение задания на языке высокого уровня C.

    курсовая работа [381,7 K], добавлен 10.05.2018

  • Использование объектно-ориентированной методологии при программировании математических процессов. Среда языка программирования Delphi для решения математических задач. Объектно-ориентированные, декларативные и императивные языки программирования.

    дипломная работа [1,8 M], добавлен 14.09.2011

  • Изучение приемов использования операторов ветвления и операторов циклов в С. Управляющие структуры или операторы управления: их значение для управления последовательностью вычислений в программе. Блоки и составные операторы. Универсальный оператор цикла.

    лабораторная работа [17,7 K], добавлен 06.08.2010

  • Свойства алгоритма как определенного содержания и порядка действий над объектами. Базовые алгоритмические структуры: следование, ветвление, повторение. Структурированные типы данных. Реализация на языке программирования задач при помощи алгоритмов.

    контрольная работа [598,6 K], добавлен 06.12.2014

  • Изучение классов и методов языка программирования C#. Реализация программирования математических задач. Поиск корня на монотонном интервале квадратичного полинома. Ручной подсчёт отладочного варианта. Заполнение массива, хранящего информацию о студентах.

    курсовая работа [752,1 K], добавлен 27.02.2015

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.