Главная страница

Курсовая информатика. Курсовая работа по дисциплине Информатика студент фаэс, гр. Ав71 В. М. Никитин


Скачать 478.33 Kb.
НазваниеКурсовая работа по дисциплине Информатика студент фаэс, гр. Ав71 В. М. Никитин
АнкорКурсовая информатика
Дата16.11.2022
Размер478.33 Kb.
Формат файлаdocx
Имя файлаkursovaya_inf-ka.docx
ТипКурсовая
#791061

Федеральное агентство связи

федеральное государственное бюджетное образовательное учреждение

высшего образования

«Сибирский государственный университет телекоммуникаций и

информатики»

(СибГУТИ)

Кафедра Информатики
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;
}

Результаты расчетов



Вывод


Мы научились вводить матрицу тремя разными способами. Упорядочивать элементы каждого столбца массива по возрастанию. Находить количество положительных элементов в том столбце, где было меньше всего перестановок при упорядочивании матрицы, и заменять элементы на нули.

Библиография





  1. Ввод и вывод массива [Электронный ресурс] // 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)







написать администратору сайта