отчет 1 семестр практика 6 13 вариант
.docxБалтийский государственный технический университет «ВОЕНМЕХ» им. Д. Ф. Устинова
Кафедра И5 «Информационные системы и программная инженерия»
Практическая работа №6 по дисциплине «Информатика: Основы программирования» на тему «Матрицы»
Вариант №13
Выполнил: Студент Тананыкина Надежда Андреевна Группа О401Б Преподаватель: Лазарева Татьяна Ильинична
Санкт-Петербург 2020 г.
Задача 1
Условие задачи:
Дана вещественная матрица C размером 4х3. В каждой строке определить
количество элементов, больших среднего арифметического этой строки.
Исходные данные:
Матрица С, обозначим С, тип int.
Результирующие данные:
Количество элементов больших среднего арифметического, обозначим k, тип int.
Дополнительные переменные:
Среднее арифметическое в каждой строке, обозначим sr, тип double.
Количество элементов больших среднего арифметического, обозначим k, тип int.
Структурная схема программы:
Текст программы:
#include <stdio.h>
#include <stdlib.h>
#define N 4
#define M 3
int main()
{
int i, j, k;
double sr[N];
int C[N][M];
for (i = 0; i < N; i++)
for (j = 0; j < M; j++)
scanf_s("%d", &C[i][j]);
printf("initial\n");
for (i = 0; i < N; i++)
{
sr[i] = 0;
for (j = 0; j < M; j++)
{
sr[i] += C[i][j];
printf("%5d", C[i][j]);
}
printf("\n");
}
printf("\nresult\n");
for (i = 0; i < N; i++)
{
k = 0;
for (j = 0; j < M; j++)
{
if (C[i][j] > sr[i] / M)
k++;
printf("%5d", C[i][j]);
}
printf("\tnumber %d\n", k);
}
}
Результат тестирования программы:
Вывод:
Ожидаемые результаты и результаты тестирования совпали. Поэтому можно сказать, что программа работает правильно.
Задача 2
Условие задачи:
Дана вещественная матрица C размером 7х8. Отсортировать вторую
строку матрицы в порядке возрастания.
Исходные данные:
Матрица С, обозначим С, тип double*.
Результирующие данные:
Измененная матрица С.
Результирующие данные:
Переменная для запоминания числа при замене, обозначим hold, тип double.
Структурная схема программы:
Текст программы:
#include <stdio.h>
#include <stdlib.h>
#define N 3
#define M 3
int main()
{
int i, j;
double hold;
double* c;
c = (double*)malloc(N * M * sizeof(double));
for (i = 0; i < N; i++)
for (j = 0; j < M; j++)
scanf_s("%lf", (c + i * N + j));
printf("initial\n");
for (i = 0; i < N; i++)
{
for (j = 0; j < M; j++)
{
printf("%lf\t", *(c + i * N + j));
}
printf("\n");
}
for (i = 1; i < M - 1; i++) // сортировка вставками
for (j = i + 1; j < M; j++)
if (*(c + M + i) > *(c + M + j))
{
hold = *(c + M + j);
*(c + M + j) = *(c + M + i);
*(c + M + i) = hold;
}
printf("result\n");
for (i = 0; i < N; i++)
{
for (j = 0; j < M; j++)
{
printf("%lf\t", *(c + i * N + j));
}
printf("\n");
}
}
Результат тестирования программы:
Вывод:
Ожидаемые результаты и результаты тестирования совпали. Поэтому можно сказать, что программа работает правильно.