Добавил:
Лабы/курсовые по программированию (С++/Verilog HDL), Теория и Практика Помехоустойчивого Кодирования Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

1сем Дагаев / ЛР7 / Отчет

.docx
Скачиваний:
21
Добавлен:
09.03.2022
Размер:
202.3 Кб
Скачать

ФЕДЕРАЛЬНОЕ АГЕНТСТВО СВЯЗИ

ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ

«САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ТЕЛЕКОММУНИКАЦИЙ ИМ. ПРОФ. М.А. БОНЧ-БРУЕВИЧА»

(СПбГУТ)

Факультет инфокоммуникационных Сетей и систем (иксс)

кафедра программной инженерии и вычислительной техники

(пи и вт)

Дисциплина: «Программирование»

Лабораторная работа №7.

Тема: «Обработка одномерных массивов»

вариант №20

Выполнил: Студент группы ИКВТ-03

Ситников Д.Г.

Подпись____________

Принял: к.т.н, доцент кафедры ПИиВТ

Дагаев А.В.

Подпись____________

«_____»________ 2020

Санкт-Петербург

2020г

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

Даны три числовые последовательности a, b и c. Сформировать две новые последовательности x и y в соответствии со следующими правилами

Рис.1 Поставленная задача.

Разработка алгоритма

Программа состоит из основной программы -- функции main() и файла с двумя функциями, распределенными по выполнению следующих операций:

1) Ввод исходных числовых последовательностей,

2) Формирование выходных числовых последовательностей и вывод результатов вычислений

Рис.2 Функция ввода исходных элементов.

Рис.3 Функция формирования и вывода элементов.

Рис.4 Основная программа.

В программе должно быть предусмотрено формирование исходных данных случайным образом (функцией «rand()»); формирование новых массивов благодаря условному отбору; вывод сформированных последовательностей.

Таблица идентификаторов

Табл.1. Таблица идентификаторов

N

Обозначения в задаче

Идентификатор

Назначение

1

a[]

a

Исходные данные

2

b[]

b

3

c[]

c

4

x[]

x

Результаты вычислений

5

y[]

y

6

i

i

Операторы инкремента

7

j

j

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

Программа разработана при помощи среды разработки Microsoft Visual Studio, в которой предоставлены все необходимые библиотеки, заголовки, необходимые компилятором C и C++ для работы в системе Windows, написана на языке C++. Программа собрана при помощи системы сборки компилятор C++ Visual Studio includes a command-line C, набора инструментов .NET Framework 4.5, тестировалась на Windows 10. Были подключены библиотеки iostream, windows.h, math.h, time.h; были использованы функции cout, system, rand. Был подключен файл Function.cpp.

Результаты работы программы

Далее предоставлены результаты выполнения программы.

Рис.5 Вывод элементов массивов.

Контрольный расчет

Для тестирования программы выбираем контрольный набор исходных данных: N=20.

Расчет, выполненный вручную, дал следующие результаты:

Рис.6 Результаты расчетов функции y.

Таблица вычислений

Табл.2. Таблица вычислений

Назначение набора данных

Набор данных

Результаты вычислений

N

a

b

c

Ручных

Машинных

x

y

x

y

Контрольный набор данных (тест)

5

-54

0

34

44

5

43

-21

0

2

1

0

3

-3

-23

-5

43

0

0

0

0

0

3

0

2

1

43

0

0

0

0

0

3

0

2

1

Рабочий набор данных

1

5

-6

0

5

0

5

0

Текст программы на C++

Function.cpp:

#include <windows.h>

#include <time.h>

#include <math.h>

#include <iostream>

#define N 20

using namespace std;

inline void Vvod(double a[], double b[], double c[]) {

int j,k;

for (int i = 0; i < N; i++) {

j = i+1;

//a[i] = rand() % 100 - 50;

cin >> a[i];

cout << "a[" << j << "] = " << a[i] << " ";

k = j % 8;

if (k == 0) cout << "\n";

}

cout << "\n\n";

for (int i = 0; i < N; i++) {

j = i+1;

//b[i] = rand() % 100 - 50;

cin >> b[i];

cout << "b[" << j << "] = " << b[i] << " ";

k = j % 8;

if (k == 0) cout << "\n";

}

cout << "\n\n";

for (int i = 0; i < N; i++) {

j = i+1;

//c[i] = rand() % 100 - 50;

cin >> c[i];

cout << "c[" << j << "] = " << c[i] << " ";

k = j % 8;

if (k == 0) cout << "\n";

}

cout << "\n\n\n";

}

inline void Neww(double a[], double b[], double c[]) {

double x[N];

int j,k;

for (int i = 0; i < N; i++) {

if (a[i] > 0 && b[i] < 0) x[i] = a[i];

else if (a[i] < 0 && b[i] > 0) x[i] = b[i];

else x[i] = 0;

}

cout << endl;

for (int i = 0; i < N; i++) {

j = i+1;

cout << "x[" << j << "] = " << x[i] << " ";

k = j % 8;

if (k == 0) cout << "\n";

}

cout << "\n\n";

double y[N];

for (int i = 0; i < N; i++) {

if (b[i] > 0 && c[i] < 0) y[i] = b[i];

else if (b[i] < 0 && c[i] > 0) y[i] = c[i];

else y[i] = 0;

}

for (int i = 0; i < N; i++) {

j = i+1;

cout << "y[" << j << "] = " << y[i] << " ";

k = j % 8;

if (k == 0) cout << "\n";

}

cout << "\n\n";

}

Source.cpp:

#include "Function.cpp"

void main() {

setlocale(LC_ALL, "RUS");

double a[N], b[N], c[N];

system("cls");

Vvod(a,b,c);

Neww(a,b,c);

system("pause");

}

Выводы

В ходе выполнения работы были получены следующие результаты:

1. Изучены алгоритмы написания функций в сторонних файлах;

2. Программа разработана для заданной обработки массива на языке C++;

3. Использование функций для передачи в качестве аргумента массивов.

Соседние файлы в папке ЛР7