Курсовая информатика. Курсовая работа по дисциплине Информатика студент фаэс, гр. Ав71 В. М. Никитин
Скачать 478.33 Kb.
|
Федеральное агентство связи федеральное государственное бюджетное образовательное учреждение высшего образования «Сибирский государственный университет телекоммуникаций и информатики» (СибГУТИ) Кафедра Информатики 11.05.04 Инфокоммуникационные технологии и системы специальной связи Специальность: Системы коммутации и сети связи специального назначения (очная форма обучения) Вариант 16 Курсовая работа по дисциплине «Информатика» Выполнил: студент ФАЭС, гр. АВ-71 /В.М.Никитин/ «__»_________ 2017 г. (подпись) Проверила: //ПарначеваТ.И. «__»_________ 2017 г. (подпись) Новосибирск 2017 СодержаниеЗадание 3 Краткая теория по теме курсовой работы 4 При решении задач с большим количеством данных одинакового типа использование переменных с различными именами, не упорядоченных по адресам памяти, затрудняет программирование. В подобных случаях в языке C++ используют объекты, называемые массивами. 4 Блок-схема разработанной функции 7 7 Программная реализация 10 Результаты расчетов 13 13 13 14 Вывод 15 Библиография 16 ЗаданиеУпорядочить элементы каждого столбца матрицы по возрастанию. Найти количество положительных элементов в том столбце, где было меньше всего перестановок при упорядочивании, а затем, заменить элементы этого столбца на нули. Краткая теория по теме курсовой работыМАССИВ При решении задач с большим количеством данных одинакового типа использование переменных с различными именами, не упорядоченных по адресам памяти, затрудняет программирование. В подобных случаях в языке C++ используют объекты, называемые массивами. Массив – это непрерывный участок памяти, содержащий последовательность объектов одинакового типа, обозначаемый одним именем. Массив характеризуется следующими основными понятиями: Элемент массива (значение элемента массива) – значение, хранящееся в определенной ячейке памяти, расположенной в пределах массива, а также адрес этой ячейки памяти. Каждый элемент массива характеризуется тремя величинами: 1.адресом элемента – адресом начальной ячейки памяти, в которой расположен этот элемент; 2.индексом элемента (порядковым номером элемента в массиве); 3.значением элемента. Адрес массива – адрес начального элемента массива. Имя массива – идентификатор, используемый для обращения к элементам массива. Размер массива – количество элементов массива Размер элемента – количество байт, занимаемых одним элементом массива. Длина массива – количество байт, отводимое в памяти для хранения всех элементов массива. МАТРИЦА Матрица – это двумерный массив, каждый элемент которого имеет два индекса: номер строки и номер столбца, поэтому для работы с элементами матрицы необходимо использовать два цикла. Если значениями параметра первого цикла будут номера строк матрицы, то значениями параметрами второго – столбцы (или наоборот). Обработка матрицы заключается в том, что вначале поочередно рассматриваются элементы первой строки (столбца), затем второй и т.д. до последней. Двумерный массив можно объявить так: тип имя_переменной [i] [j]; Здесь тип определяет тип элементов массива, имя_переменной – имя матрицы, i – количество строк, j – количество столбцов. Строки нумеруются от 0 до i-1, столбцы от 0 до j-1. ВВОД-ВЫВОД МАТРИЦ Матрицы, как и одномерные массивы, нужно выводить поэлементно. Для того, чтобы ускорить процесс ввода данных или итераций какого-либо действия используются циклы. В языке Cи предусмотрены три оператора, реализующих циклический процесс: for, while и do..while. Цикл for (цикл со счётчиком) – цикл, в котором некоторая переменная изменяет своё значение от заданного начального значения до конечного значения с некоторым шагом, и для каждого значения этой переменной тело цикла выполняется один раз. Цикл while (цикл с предусловием) — цикл, который выполняется пока истинно некоторое условие, указанное перед его началом. Это условие проверяется до выполнения тела цикла, поэтому тело может быть не выполнено ни разу (если условие с самого начала ложно). Цикл do while (цикл с постусловием) – цикл, в котором условие проверяется после выполнения тела цикла. Отсюда следует, что тело всегда выполняется хотя бы один раз. Квадратная матрица-матрица, у которой количество строк равно количеству столбцов. Некоторые свойства матриц: если номер строки элемента совпадает с номером столбца (i = j), это означает , что элемент лежит на главной диагонали матрицы; если номер строки превышает номер столбца (i > j), то элемент находиться ниже главной диагонали; если номер столбца больше номера строки (i < j), то элемент находиться выше главной диагонали; элемент лежит на побочной диагонали, если его индексы удовлетворяют равенству i+j+1=n; неравенство i+j+1 соответственно, элементу, лежащему ниже побочной диагонали, соответствует выражение i+j+1>n. Ввод и вывод в Си Приложение, написанное на любом языке программирования, должно взаимодействовать с окружающим миром. Как правило, такое взаимодействие осуществляется посредством ввода-вывода информации на монитор или в файл. В стандартном C++ существует два основных пути ввода-вывода информации: с помощью потоков, реализованных в STL (Standard Template Library) и посредством традиционной системы ввода-вывода, унаследованной от Cи. И потоки, и традиционная система ввода-вывода для осуществления необходимых действий используют вызовы операционной системы. Для традиционного ввода-вывода используется библиотека <stdio.h> или <cstdio>. Основные команды традиционного ввода-вывода: Scanf – чтение с клавиатуры, printf – вывод на экран. Fscanf – чтение с клавиатуры, fprintf – вывод на файл. Для поточного ввода – вывода используется библиотека <iostream>. Основные команды поточного ввода-вывода: Std::cin – чтение с клавиатуры, std::cout – вывод на экран. Блок-схема разработанной функцииПрограммная реализация#include "stdafx.h" #include "math.h" #include "iostream" #include "stdio.h" #include "time.h" #include "fstream" #include "conio.h" #define z 100 using namespace std; int main() { srand(time(NULL)); setlocale(0, "RUS"); int i, j, k, kol = 0, n, r, min, g, t=0, b = 0; int a[z], c[z]; int x[z][z]; cout << "Курсовая работа по информатике" << endl; cout << "Факультет АЭС" << endl; cout << "Группа АB-71" << endl; cout << "Вариант 16" << endl; cout << "Никитин В.М." << endl; cout << "Выберите способ введения матрицы" << endl; cout << "Нажмите 1, чтобы заполнить с клвиатуры" << endl; cout << "Нажмите 2, чтобы заполнить матрицу случайными числами" << endl; cout << "Нажмите 3, чтобы заполнить матрицу из файла" << endl; while ((b!= 1) && (b!= 2) && (b!= 3)) { cin >> b; if (b == 1) { cout << "Введите матрицу:" << endl; cout << "Введите размер квадратной матрицы:"; cin >> n; for (i = 0; i < n; i++) for (j = 0; j < n; j++) cin >> x[i][j]; } if (b == 2) { cout << "Введите размер квадратной матрицы:"; cin >> n; for (i = 0; i < n; i++) for (j = 0; j < n; j++) x[i][j] = rand() % 41 - 20; } if (b == 3) { ifstream in("open.txt"); in >> n; for (i = 0; i < n; i++) for (j = 0; j < n; j++) in >> x[i][j]; } } cout << "=================================================================" << endl; cout << "Исходная матрица:" << endl; cout << "=================================================================" << endl; for (i = 0; i < n; i++) { for (j = 0; j < n; j++) { cout << x[i][j] << "\t"; } cout << "\n"; } for (j = 0;j < n;j++) { for (i = 0;i < n;i++) { for (r = n - 1;r >= i;r--) { if (x[r][j] < x[r - 1][j]) { g = x[r][j]; x[r][j] = x[r - 1][j]; x[r - 1][j] = g; kol++; } } } a[j] = kol; kol = 0; } cout << "=================================================================" << endl; cout << "упорядоченная матрица" << endl; cout << "=================================================================" << endl; for (i = 0; i < n; i++) { for (j = 0; j < n; j++) { cout << x[i][j] << "\t"; } cout << "\n"; } min = a[0]; for (j = 0;j < n;j++) { if (min > a[j]) { min = a[j]; k = j; } } cout << "столбец с наибольшим количеством перестановок: " << k << endl; for (i = 0; i < n; i++) { for (j = 0; j < n; j++) { if (j == k) { if (x[i][j]>0) { t++; } x[i][j] = 0; } } } cout << "Количество положительных элементов матрицы в " << k << " столбце равно: " << t << endl; cout << endl; cout << "=================================================================" << endl; cout << "новая матрица:" << endl; cout << "=================================================================" << endl; for (i = 0; i < n; i++) { for (j = 0; j < n; j++) { cout << x[i][j] << "\t"; } cout << "\n"; } return 0; } Результаты расчетовВыводМы научились вводить матрицу тремя разными способами. Упорядочивать элементы каждого столбца массива по возрастанию. Находить количество положительных элементов в том столбце, где было меньше всего перестановок при упорядочивании матрицы, и заменять элементы на нули. БиблиографияВвод и вывод массива [Электронный ресурс] // proginfo.ru. – URL: http://proginfo.ru/arrays-input-output/ (дата обращения: 18.11.17). 2.Массивы в языке Си [Электронный ресурс] // prog-cpp.ru. – URL: https://prog-cpp.ru/c-massiv/ (дата обращения: 18.11.17). 3. Массивы в языке С (Си) [Электронный ресурс] // studepedia.org. – URL: http://studepedia.org/index.php?vol=1&post=87565 (дата обращения 18.11.2017) |