отчет 1 семестр практика 6 16 вариант
.docxБалтийский государственный технический университет «ВОЕНМЕХ» им. Д. Ф. Устинова
Кафедра И5 «Информационные системы и программная инженерия»
Практическая работа №6 по дисциплине «Информатика: Основы программирования» на тему «Матрицы»
Вариант №16
Выполнил: Студент Эрмекбаев Рустам Хурваевич Группа О401Б Преподаватель: Лазарева Татьяна Ильинична
Санкт-Петербург 2020 г.
Задача 1
Условие задачи:
В каждой строке заданной вещественной матрицы В размером 9х8
поменять знак у максимального по модулю элемента на противоположный
Исходные данные:
Матрица В, обозначим В, тип int.
Результирующие данные:
Измененная матрица В.
Дополнительные переменные:
Максимальный по модулю элемент в каждой строке, обозначим max, тип int.
Структурная схема программы:
Текст программы:
#include <stdio.h>
#include <stdlib.h>
#define N 3
#define M 3
int main()
{
int i, j;
int B[N][M];
int* max;
for (i = 0; i < N; i++)
for (j = 0; j < M; j++)
scanf_s("%d", &B[i][j]);
printf("\ninitial\n");
for (i = 0; i < N; i++)
{
for (j = 0; j < M; j++)
printf("%6d", B[i][j]);
printf("\n");
}
for (i = 0; i < N; i++)
{
max = &B[i][1];
for (j = 0; j < M; j++)
if (B[i][j] * B[i][j] > (*max) * (*max))
max = &B[i][j];
*max = -(*max);
}
printf("\nresult\n");
for (i = 0; i < N; i++)
{
for (j = 0; j < M; j++)
printf("%6d", B[i][j]);
printf("\n");
}
}
Результат тестирования программы:
Входные данные |
Ожидаемый результат |
Результат программы |
3 6 7 -6 5 -88 22 -33 55 |
initial 3 6 7 -6 5 -88 22 -33 55
result 3 6 -7 -6 5 88 22 -33 -55 |
initial 3 6 7 -6 5 -88 22 -33 55
result 3 6 -7 -6 5 88 22 -33 -55 |
-33 66 7 65 10 -3 -6 33 99 |
initial -33 66 7 65 10 -3 -6 33 99
result -33 -66 7 -65 10 -3 -6 33 -99 |
initial -33 66 7 65 10 -3 -6 33 99
result -33 -66 7 -65 10 -3 -6 33 -99 |
77 77 77 66 22 44 -55 -55 -55 |
initial 77 77 77 66 22 44 -55 -55 -55
result 77 -77 77 -66 22 44 -55 55 -55 |
initial 77 77 77 66 22 44 -55 -55 -55
result 77 -77 77 -66 22 44 -55 55 -55 |
Вывод:
Ожидаемые результаты и результаты тестирования совпали. Поэтому можно сказать, что программа работает правильно.
Задача 2
Условие задачи:
Вычислить среднее арифметическое значение элементов, лежащих
выше главной диагонали квадратной матрицы.
Исходные данные:
Матрица B, обозначим B, тип int.
Результирующие данные:
Среднее арифметическое элементов лежащих выше главной диагонали, обозначим average, тип double.
Исходные данные:
Количество элементов выше диагонали, обозначим num, тип double.
Структурная схема программы:
Текст программы:
#include <stdio.h>
#include <stdlib.h>
#define N 3
int main()
{
int i, j;
int B[N][N];
double average, num;
for (i = 0; i < N; i++)
for (j = 0; j < N; j++)
scanf_s("%d", &B[i][j]);
average = 0;
num = 0;
printf("\ninitial\n");
for (i = 0; i < N; i++)
{
for (j = 0; j < N; j++)
{
printf("%6d", B[i][j]);
if (j > i)
{
average += B[i][j];
num++;
}
}
printf("\n");
}
average /= num;
printf("average = %lf", average);
}
Результат тестирования программы:
Входные данные |
Ожидаемый результат |
Результат программы |
3 3 3 3 3 3 3 3 3 |
initial 3 3 3 3 3 3 3 3 3 average = 3.000000 |
initial 3 3 3 3 3 3 3 3 3 average = 3.000000 |
6 1 2 3 1 4 1 24 5
|
initial 6 1 2 3 1 4 1 24 5 average = 2.333333 |
initial 6 1 2 3 1 4 1 24 5 average = 2.333333 |
9 3 5 6 54 21 0 3 4 |
initial 9 3 5 6 54 21 0 3 4 average = 9.666667 |
initial 9 3 5 6 54 21 0 3 4 average = 9.666667 |
Вывод:
Ожидаемые результаты и результаты тестирования совпали. Поэтому можно сказать, что программа работает правильно.