Язык Си. Лабораторные работы / Примеры отчетов / Lab7
.docx
Лабораторная работа №7
ОБРАБОТКА ОДНОМЕРНЫХ МАССИВОВ
Студент гр. ИКПИ-81
Коваленко Л. А.
А. Постановка задачи
Требуется выполнить обработку одномерного массива. Все основные действия (ввод исходных массивов, формирование новых массивов, вывод массивов) следует выполнять с помощью функций.
Даны три числовые последовательности (a, b и c), состоящие из n элементов вещественного типа (n <= 20). Сформировать две новые числовые последовательности в соответствии с заданным правилом:
,
,
i = 1, 2, …, n.
Лабораторная работа выполняется в виде проекта, состоящего из двух файлов: один содержит функции для работы с массивами, второй содержит функцию main(), в которой происходит обращение к функциям из первого файла.
Б. Разработка алгоритма
Как видно из условия, проект должен состоять из двух файлов.
В первом файле будет размещаться основная функция main(). Во втором вспомогательные функции (для работы с массивами):
-
Ввод исходных числовых последовательностей.
-
Формирование выходных числовых последовательностей.
-
Вывод результатов вычислений.
В программе используются массивы, применение которых оправдано, во-первых, тем, что количество входных данных относительно велико (достигает 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]);
}
Ж. Выводы
Тот факт, что результаты контрольных расчетов, выполненных вручную, достаточно совпадают с результатами контрольных расчетов, выполненных на ЭВМ, свидетельствуют о том, что программа составлена правильно.