Добавил:
СПбГУТ * ИКСС * Программная инженерия Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
58
Добавлен:
01.10.2019
Размер:
125.13 Кб
Скачать

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

ОБРАБОТКА ОДНОМЕРНЫХ МАССИВОВ

Студент гр. ИКПИ-81

Коваленко Л. А.

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

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

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

,

,

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 (x)

a

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

4

b (y)

b

5

с

с

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

6

i

Промежуточные данные пользовательской функции

7

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

InputFunc(*a, n, m)

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

8

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

DevMeanFunc(*a, n, m)

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

9

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

OutputFunc(*a, n, m)

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

0

Г. Схемы алгоритма

Начало

Ввод n

1

2

3

4

5

6

7

8

9

Останов

Конец

Ввод a[i]

Конец

Вывод a[i]

Вывод a[n-1]

3

1

0

2

0

2

3

4

0

1

2

3

Конец

4

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

Контрольный набор с , .

Результаты вычислений приведены ниже в таблице вычислений.

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

Набор данных

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

n

a

b

c

Ручные

Машинные

x

y

x (a)

y (b)

Контрольный набор

3

1

2

6

5

2

5

2

5

3

8

8

11

8

11

7

4

0

9

10

9

10

4

3

1

0

10

1

10

1

5

9

2

9

17

9

17

5

4

8

14

6

14

6

6

7

0

7

7

7

7

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

/* Файл Lab7.c */

#include <stdio.h>

#include "funcLib.h"

/*

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

ОБРАБОТКА ОДНОМЕРНЫХ МАССИВОВ

Студент гр. ИКПИ-81

Коваленко Л. А.

*/

int main(int argc, char **argv)

{

int n;

double a[20] = {0.0}, b[20] = {0.0}, c[20] = {0.0};

/* Ввод N */

printf("Input n: ");

scanf("%d", &n);

/* Ввод последовательностей */

printf("Enter the sequence a, b and c.\n");

InputFunc(a, n);

InputFunc(b, n);

InputFunc(c, n);

/* Вычисления */

ConvFunc(a, b, n);

ConvFunc(b, c, n);

/* Вывод результатов */

printf("x: ");

OutputFunc(a, n);

printf("y: ");

OutputFunc(b, n);

return 0;

}

/* Файл funcLib.h */

#include <stdio.h>

void InputFunc (double *a, int n) {

printf("Enter the sequence (%d items): ", n);

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

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

}

void ConvFunc (double *a, double *b, int n) {

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

a[i] = a[i] + b[n-i-1];

}

void OutputFunc (double *a, int n) {

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

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

printf("%.3lf\n", a[n-1]);

}

Ж. Выводы

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

Соседние файлы в папке Примеры отчетов