В ходе выполнения работы изучил правила составления и написания функций и интерфейса функционального модуля.
Министерство образования Российской Федерации
Пензенский государственный университет
Кафедра «Вычислительная техника»
ОТЧЕТ
по лабораторной работе №8
по курсу «Программирование»
на тему «ФУНКЦИИ»
Выполнил:
студенты группы 20ВВ1
DD
Принял:
к.т.н., доцент Юрова О.В.
Пенза 2020
Цель работы:
Изучение правил составления и написания функций и интерфейса функционального модуля.
Лабораторное задание
Лабораторная работа 8 выполняется на основе заданий к лабораторной работе 6.
1. (Вариант №2)
а) Задан массив А(20). Вывести на экран сначала его неотрицательные элементы, затем отрицательные.
б) Вычислить среднее арифметическое элементов каждого столбца матрицы М(10,10).
2. Составить программу, которая выполняет следующие действия:
а) ввод исходных массивов;
б) вывод исходных массивов;
в) обработку массивов в соответствии с заданием;
г) вывод результатов с соответствующими комментариями.
Пункты а), б), в), г) оформить в виде функций. Глобальные данные в программе не использовать.
3. Выполнить программу и оценить правильность ее работы.
Листинг программы .
#define _CRT_SECURE_NO_WARNINGS
#define _CRT_NONSTDC_NO_WARNINGS
#include <stdio.h>
#include <conio.h>
#include <math.h>
#include <stdlib.h>
#include <locale.h>
#include <time.h>
void InputA(int* ppA);
void printA(int* ppA);
void vivodA1(int* ppA);
void vivodA2(int* ppA);
|
|
void InputB(int MM[10][10]);
void printM(int MM[10][10]);
double suMM(int pMM[10][10], int k);
void vivodM(int MM[10][10]);
void main()
{
setlocale(0, "");
//Задание а
int A[20];
int* pA = A;
InputA(&A[0]);
printf("Исходный массив: \n");
printA(&A[0]);
printf("\n\nПреобразованный массив: \n");
vivodA1(A);
vivodA2(A);
printf("\n\n");
//Задание б
int M[10][10];
int sum = 0;
InputB(M);
printf("Исходная матрица: \n");
printM(M);
printf("Суммы по столбцам: \n");
vivodM(M);
getchar();
}
void InputA(int* ppA)
{
srand(time(NULL));
for (int i = 0; i < 20; i++)
{
*ppA = rand() % 20 - 10;
ppA++;
}
}
void printA(int* ppA)
{
for (int i = 0; i < 20; i++)
{
printf("%4d", *ppA);
ppA++;
}
}
void vivodA1(int* ppA)
{
for (int i = 0; i < 20; i++)
{
if (*ppA >= 0)
printf("%4d", *ppA);
ppA++;
}
}
void vivodA2(int* ppA)
{
for (int i = 0; i < 20; i++)
{
if (*ppA < 0)
printf("%4d", *ppA);
ppA++;
}
}
void InputB(int MM[10][10])
{
for (int i = 0; i < 10; i++) {
for (int j = 0; j < 10; j++) {
*(*(MM + i) + j) = rand() % 20 - 10;
//MM[i][j] = rand() % 20 - 10;
}
}
}
void printM(int MM[10][10])
{
for (int i = 0; i < 10; i++) {
for (int j = 0; j < 10; j++) {
printf("%6d", *(*(MM + i) + j));
}
printf("\n");
}
}
double suMM(int pMM[10][10], int k)
{
double sum;
sum = 0;
for (int i = 0; i < 10; i++) {
//printf("%4d", sum);
|
|
}
return (sum / 10);
}
void vivodM(int MM[10][10])
{
for (int j = 0; j < 10; j++) {
printf("%6.1lf", suMM(MM, j));
}
}
Схема программы
Рисунок 1 – Рисунок 2 – Рисунок 3 –
Схема функции main() Схема функции InputA() Схема функции printA()
Рисунок 4 – Рисунок 5 –
Схема функции vivodA1() Схема функции vivodA2()
Рисунок 6 – Рисунок 7 –
Схема функции InputB() Схема функции printM()
Рисунок 8 – Рисунок 9 –
Схема функции vivodM() Схема функции suMM()
Результаты работы программы
Результаты работы программы показаны на рисунке 10.
Рисунок 10 – Результат работы программы.
На рисунках 11, 12, 13 показан протокол трассировки.
Рисунок 11 - Протокол трассировки.
Рисунок 12 - Протокол трассировки.
Рисунок 13 - Протокол трассировки.
Вывод:
В ходе выполнения работы изучил правила составления и написания функций и интерфейса функционального модуля.
Дата добавления: 2021-01-20; просмотров: 205; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!