Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

лабы для 28 варианта / Лабораторная работа№7

.docx
Скачиваний:
16
Добавлен:
21.12.2020
Размер:
41.54 Кб
Скачать

Санкт-Петербургский государственный университет телекоммуникаций им. проф. М.А. Бонч-Бруевича

ПРОГРАММИРОВАНИЕ

Отчёт по Лабораторной Работе №7

тема: ОБРАБОТКА ОДНОМЕРНЫХ МАССИВОВ

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

А. Постановка задачи(28 ВАРИАНТ)

Требуется выполнить обработку одномерного массива. Все основные действия (ввод исходных массивов, формирование новых массивов, вывод массивов) следует выполнять с помощью функций.

Даны три числовые последовательности (a, b и c), состоящие из n элементов вещественного типа (n <= 20).

Сформировать две новые последовательности x и y в соответствии со следующим правилом

= ,

= ,

i = 1, 2, …, n

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

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

Как видно из условия, проект должен состоять из двух файлов.

В первом файле будет размещаться основная функция main(). Во втором вспомогательные функции (для работы с массивами):

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

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

  3. Вывод результатов вычислений.

В программе используются массивы, применение которых оправдано, во-первых, тем, что количество входных данных относительно велико (достигает 20; использование переменных затрудняет удобочитаемость кода программы), во-вторых, упрощением вычислений. Оптимальное количество массивов для работы программы — 3, потому что, во-первых, количество входных последовательностей — 3, во-вторых, последовательность x зависит от последовательностей a и b, а y от b и c, а зависит от ( зависит от ), что означает, что можно использовать a и b в качестве x и y и не заводить дополнительные массивы.

Входные данные состоят из величины n (количества элементов во входных последовательностях) и числовых последовательностей. Значение n вводится в основной части программы.

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

N

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

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

Назначение

1

n

n

Входные данные

2

c

c

Входные данные

3

a

a

Входные и выходные данные

4

b

b

5

с

с

Входные данные

7

-

VvodFunc

Функция ввода массива

8

-

SecFunc

Функция обработки массива

9

-

VivodFunc

Функция вывода массива

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

Назначение

набора

данных

Набор данных

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

n

a

b

c

Ручные

Машинные

x

y

x

y

Контрольный

набор

3

5

7

2

6.325

5.916

1.414

7.483

6.325

1.732

6.325

5.916

1.414

7.483

6.325

1.732

8

5

1

7

8

3

Е. Программа на языке Си

#include <stdio.h>

#include "laba7.7.h"

int main()

{

int n;

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

printf("Input n: ");

scanf("%d", &n);

printf(" a, b and c \n");

VvodFunc(a, n);

VvodFunc(b, n);

VvodFunc(c, n);

SecFunc(a, b, n);

SecFunc(b, c, n);

printf("x: ");

VivodFunc(a, n);

printf("y: ");

VivodFunc(b, n);

return 0;

}

/* laba7_7.h */

#ifndef LABA7_7_H_INCLUDED

#define LABA7_7_H_INCLUDED

#include <stdio.h>

void VvodFunc (double *a, int n)

{

printf("Enter value(%d): ", n);

for (int i = 0; i < n; i++)

scanf("%lf", &a[i]);

}

void SecFunc (double *a, double *b, int n)

{

for (int i = 0; i < n; i++)

a[i] = sqrt(fabs(a[i] * b[i]));

}

void VivodFunc (double *a, int n)

{

for (int i = 0; i < n; i++)

printf("%.3lf, ", a[i]);

printf("\n");

}

#endif // LABA7_7_H_INCLUDED

Ж. Выводы

Тот факт, что результаты контрольных расчетов, выполненных вручную, достаточно совпадают с результатами контрольных расчетов, выполненных на ЭВМ, свидетельствуют о том, что программа составлена правильно.