На нашем сайте Вы сможете найти готовые курсовые и дипломные работы по программированию
Сейчас работаем

Поиск медиан массива(C++)

Постановка задачи:

Напишите программу, находящую медиану массива. То есть индекс ячейки массива, сумма элементов слева от которой минимально отличается от суммы элементов справа.

Особенности программы:

  • Обработка ошибок;
  • Работа с файлами + проверка на запрещённые ОС Windows имена (con, nul, aux, com1...);
  • Модульные тесты;
  • Зацикленный интерфейс

Работа содержит:

  • Отчёт по лабораторной работе;
  • Код программы + комментарии.
  • Проект в Visual Studio(С++).

Отчёт по лабораторной работе содержит:

  • Постановка задачи;
  • Исходные данные, подаваемые программе;
  • Особые ситуации;
  • Математические методы и алгоритмы решения задачи;
  • Форматы представления данных в программе;
  • Структура программы;
  • Описание хода выполнения лабораторной работы;
  • Исходный код программы.

Общий алгоритм выполнения программы:

Предлагается выбрать команду(1-Ввод  с клавиатуры, 2- Ввод из файла, 3-Модульное тестирование):

  • При выборе ввода с клавиатуры необходимо ввести длину массива и ввести сам массив, после чего программа выведет индекс медианы массива.
  • При выборе ввода из файла необходимо указать путь к файлу(ознакомиться с особыми ситуациями из отчёта). В самом файле первое входное число отвечает за длину считываемого массива, остальное - сам массив. 
  • Модульные тесты подразумевают корректное выполнение программы.

Часть кода:

// Функция определяет позиции медиан массива;
// Параметра: *arr-массив, size-размер массива;
void MedianArray(int *arr, int size) {
    // Находим min и max массива,
    // чтобы получить наибольшую разность;
    int max = -1;
    int min = arr[0];
    int left_sum = 0;
    int right_sum = 0;
    for (int i = 1;i < size - 1;i++) {  // Минимальная разность		 
		left_sum = 0;
		right_sum = 0;
		for (int j = 0;j < i;j++)
		    left_sum += arr[j];
		for (int k = i + 1;k < size;k++)
		    right_sum += arr[k];
		if (abs(left_sum - right_sum) >= max)
		    max = abs(left_sum - right_sum);  
    } 
    for (int i = 1;i < size - 1;i++) {
	left_sum = 0;
	right_sum = 0;
	for (int j = 0;j < i;j++)
	    left_sum += arr[j];
	for (int k = i + 1;k < size;k++)
	    right_sum += arr[k];
	if (abs(left_sum - right_sum) <= max)
	    max = abs(left_sum - right_sum);
    }
    cout << endl << "The median of the array has an index:" << endl;
    for (int i = 1;i < size - 1;i++) {
	left_sum = 0;
	right_sum = 0;
	for (int j = 0;j < i;j++)
	    left_sum += arr[j];
	for (int k = i + 1;k < size;k++)
	    right_sum += arr[k];
	if (abs(left_sum - right_sum) == max)
	    cout << i << " ";
    }
}
Комментарии (0)

kostyaLem

/ /

Оставить комментарий

Ты не можешь комментировать

Только зарегистрированые пользователи имеют возможность комментировать работы
Похожие работы
Тип Название Рейтинг Категория Стоимость
Лабораторная Алгоритмы поиска данных C# 16 .NET (C#) 800,00
Лабораторная Java - коллекции, поиск в коллекциях 1 Java 900,00
Курсовая Графическая реализация бинарного дерева поиска С++ 0 C/C++ 2 500,00
Курсовая Автоматизированная информационная система «Поиск пропавших людей» C# 0 .NET (C#) 2 500,00
Исходник Чётные и нечётные элементы массива C# 61 .NET (C#) бесплатно
Другие работы автора
Тип Название Рейтинг Категория Стоимость
Исходник АИС База данных "Настольные игры" (C#, WinFroms, SQLite) 0 .NET (C#) 3 000,00
Курсовая АИС Складского учета (C#, WinForms) 14 .NET (C#) 2 500,00
Курсовая АИС Учёта заказов станции технического обслуживания (C#,WinForms,SQL Server) 0 .NET (C#) 4 000,00
Лабораторная Алгоритм Банкира C# 0 .NET (C#) 450,00
Лабораторная База данных Книг (C#/WPF/SQLite) 0 .NET (C#) 2 600,00
Новые работы
Тип Название Рейтинг Категория Стоимость
Диплом Разработка Telegram-бота для колледжа АГУ (Python) new 0 Python 10 000,00
Исходник Учёт товаров (Python, Tkinter, Sqlite) new 0 Python 3 000,00
Курсовая АИС "Авиакасса" (C#, WPF, WinForms, SQLite, SQL Server, Access) new 0 .NET (C#) 5 500,00
Курсовая Курсовая работа разработка мобильных приложений "FTP клиент для Android" new 0 Сетевые протоколы 6 500,00
Исходник Транспонирование матрицы new 0 .NET (C#) 150,00
Поиск медиан массива(C++)
Напишите программу, находящую медиану массива. То есть индекс ячейки массива, сумма элементов слева от которой минимально отличается от суммы элементов справа.
Категория: Образование
Стоимость: Бесплатно