- •Реферат
- •Нормативные ссылки
- •Введение
- •1 Задание №1
- •1.1 Формулировка задачи
- •1.2 Спецификации задачи
- •1.3 Математическая постановка задачи
- •1.4 Описание вычислительных методов
- •1.5 Схема алгоритма. Описание
- •1.6 Текст программы
- •1.7 Ручной подсчёт отладочного варианта
- •1.8 Результат машинного тестирования программы
- •2 Задание №2
- •2.1 Формулировка задачи
- •2.2 Спецификации задачи
- •2.3 Математическая постановка задачи
- •2.4 Схема алгоритма. Описание
- •2.5 Текст программы
- •2.6 Результат машинного тестирования программы
- •Заключение
2.4 Схема алгоритма. Описание
После запуска программы пользователю предлагается заполнить массив, хранящий информацию о студентах. Производится ввод данных о студентах, а именно имя, фамилия, группа, оценки за последнюю сессию. После заполнения всех данных, на экран с помощью метода Output() распечатывается вся полученная информация, а именно группа, количество студентов в группе, массив с фамилиями студентов (отсортированный по алфавиту), средний балл группы за сессию, лучшая по успеваемости группа.
Если на стадии ввода названия групп обнаружено, что такая группа уже содержится в списке, в ней происходит обновление данных.
Схема алгоритма приведена в приложении Б.
2.5 Текст программы
Т.к. текст программы занимает достаточно большой объём, он приведен в приложении В (листинг 2).
2.6 Результат машинного тестирования программы
Результат работы данной программы представлен на рисунке 2.
Рисунок 2 – Результат тестирования программы
Заключение
В ходе выполнения курсовой работы были разработаны алгоритмы решения поставленных задач и написаны соответствующие коды программ. Коды были написаны с использованием созданных классов и их методов, что позволило значительно сократить и оптимизировать коды.
В результате были созданы две работоспособных программы по решению математических задач. Первая выполняет построение графиков функций и поиск точек их пересечения. Вторая позволяет ввести данные студентов, а затем выполняет работу с этими данными.
СПИСОК ИСПОЛЬЗУЕМЫХ ИСТОЧНИКОВ
Павловская Т.А. C#. Программирование на языке высокого уровня: учебник для вузов. – СПб.: Питер, 2007. – 432 с.
Шилдт Г. C# 4.0: полное руководство. Пер. с англ. – М.: Вильямс, 2011.
Письменный Д. Т. Конспект лекций по высшей математике. Полный курс. — М.: Айрис-пресс, 2006. — 608 с.
ПРИЛОЖЕНИЕ А
Блок-схема к заданию №1
Метод solve
Метод binarysearch
ПРИЛОЖЕНИЕ Б
Блок-схема к заданию №2
ПРИЛОЖЕНИЕ В
Листинг 2 – код программы к заданию 2
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Task2
{
class Program
{
// Класс для студента.
class Student
{
// Поля.
public string fname, lname, group;
public int mark;
// Ввод.
public void Input()
{
Console.WriteLine("Введите имя: ");
fname = Console.ReadLine();
Console.WriteLine("Введите фамилию: ");
lname = Console.ReadLine();
Console.WriteLine("Введите группу: ");
group = Console.ReadLine();
Console.WriteLine("Введите оценку: ");
mark = Convert.ToInt32(Console.ReadLine());
}
}
// Класс группы.
class Group
{
// Поля.
public string name;
public int count, sum;
public List<string> students;
// Конструктор.
public Group()
{
students = new List<string>();
}
// Добавка студента в группу.
public void AddStudent(Student a)
{
count++;
students.Add(a.lname);
sum += a.mark;
}
// Вычисление среднего арифметического по группе.
public double Average()
{
if (count == 0)
return -1;
return (double)sum / count;
}
// Вывод данных.
public void Output()
{
Console.WriteLine("Название: " + name + ".");
Console.WriteLine("Количество студентов: " + count + ".");
Console.WriteLine("Список студентов: ");
students.Sort();
foreach (string student in students)
Console.WriteLine(student);
Console.WriteLine("Средний бал: " + Average().ToString() + ".");
Console.WriteLine();
}
}
static void Main(string[] args)
{
// Инициализация.
List<Student> stud = new List<Student>();
Console.WriteLine("Введите количество студентов: ");
int studCount = Convert.ToInt32(Console.ReadLine());
// Ввод всех студентов.
for (int i = 0; i < studCount; i++)
{
Student t = new Student();
t.Input();
stud.Add(t);
}
// Заполнение групп.
List<Group> groups = new List<Group>();
for (int i = 0; i < studCount; i++)
{
int index = -1;
// Ищем существующую группу с таким названием.
for (int j = 0; j < groups.Count(); j++)
if (groups[j].name.Equals(stud[i].group))
index = j;
// Если не нашли,
if (index == -1)
{
// Создаем её и добавляем.
Group g = new Group();
g.name = stud[i].group;
groups.Add(g);
index = groups.Count() - 1;
}
// Добавляем студента в эту группу.
groups[index].AddStudent(stud[i]);
}
// Выводим все группы.
for (int i = 0; i < groups.Count(); i++)
groups[i].Output();
// Ищем группу с наилучшей успеваемостью.
int mx = 0;
for (int i = 0; i < groups.Count(); i++)
if (groups[i].Average() > groups[mx].Average())
mx = i;
// Выводим.
Console.WriteLine("Лучшая группа по успеваемости:");
groups[mx].Output();
Console.ReadKey();
}
}
}
