Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Лабы / Отчет Лаба 13

.docx
Скачиваний:
0
Добавлен:
31.12.2025
Размер:
1 Mб
Скачать

13.1

Схема алгоритма

#include <stdio.h>

#include <locale.h>

#include "geo.h"

#define SIZE_A 6

#define SIZE_B 8

#define SIZE_C 7

int main() {

setlocale(LC_ALL, "RUS");

double A[SIZE_A] = { 1.0, -2.0, 3.0, 4.0, -5.0, 6.0 };

double B[SIZE_B] = { 0.5, 2.5, -1.0, 8.0, 3.0, -3.0, 9.0, 4.0 };

double C[SIZE_C] = { -1.0, -2.0, -3.0, -4.0, -5.0, 10.0, 12.0 };

double mA = geo(A, SIZE_A);

double mB = geo(B, SIZE_B);

double mC = geo(C, SIZE_C);

if (mA >= 0)

printf("Среднее геометрическое положительных элементов массива A:%.2f", mA);

else

printf("В массиве A нет положительных элементов\n");

if (mB >= 0)

printf("Среднее геометрическое положительных элементов массива B:%.2f",mB);

else

printf("В массиве B нет положительных элементов\n");

if (mC >= 0)

printf("Среднее геометрическое положительных элементов массива C:%.2f",mC);

else

printf("В массиве C нет положительных элементов\n");

return 0; }

#include <math.h>

#include "geo.h"

double geo(double a[], int size) {

double pr = 1.0;

int c = 0;

for (int i = 0; i < size; i++) {

if (a[i] > 0) {

pr *= a[i];

c++;}}

if (c > 0) {

return pow(pr, 1.0 / c);

}

else {

return -1; }}

13.2

Схема алгоритма

#include <locale.h>

#include <stdio.h>

#include "logic.h"

int main() {

setlocale(LC_ALL, "RUS");

int A[6] = { 3, -1, 2, -4, 5, -6 };

int B[8] = { -7, 4, 6, -2, -1, 3, 2, -8 };

int A_pos[6], A_neg[6], B_pos[8], B_neg[8];

int A_pos_c, A_neg_c, B_pos_c, B_neg_c;

split(A, 6, A_pos, &A_pos_c, A_neg, &A_neg_c);

split(B, 8, B_pos, &B_pos_c, B_neg, &B_neg_c);

int s1, p1, s2, p2;

sp(A_pos, A_pos_c, &s1, &p1);

sp(B_pos, B_pos_c, &s2, &p2);

printf("Массив A положительные элементы: ");

for (int i = 0; i < A_pos_c; i++) {

printf("%d ", A_pos[i]); }

printf("\nСумма A: %d Произведение A: %d\n", s1, p1);

printf("\nМассив B положительные элементы: ");

for (int i = 0; i < B_pos_c; i++) {

printf("%d ", B_pos[i]); }

printf("\nСумма B: %d Произведение B: %d\n", s2, p2);

printf("\nМассив A отрицательные элементы: ");

for (int i = 0; i < A_neg_c; i++) {

printf("%d ", A_neg[i]); }

printf("\nМассив B отрицательные элементы: ");

for (int i = 0; i < B_neg_c; i++) {

printf("%d ", B_neg[i]); }

return 0; }

#include "logic.h"

void sp(int* a, int size, int* s, int* p) {

*s = 0;

*p = 1;

for (int i = 0; i < size; i++) {

*s += a[i];

*p *= a[i];

}

}

void split(int* pn, int size, int* pos, int* pos_c, int* neg, int* neg_c) {

*pos_c = 0;

*neg_c = 0;

for (int i = 0; i < size; i++) {

if (pn[i] > 0)

pos[(*pos_c)++] = pn[i];

else

neg[(*neg_c)++] = pn[i];

}

}

13.3

Схема алгоритма

#include <stdio.h>

#include "matrixutils.h"

#include <locale.h>

int main() {

setlocale(LC_ALL, "RUS");

printf(" Матрица №1:\n");

for (int i = 0; i < S; i++) {

for (int j = 0; j < S; j++) {

printf("%4d", m1[i][j]); }}

print_md(m1);

printf("Сумма элементов на главной диагонале: %d\n", sum_md(m1));

print_sd(m1);

printf("Сумма элементов на побочной диагонале: %d\n\n", sum_sd(m1));

printf(" Матрица №2:\n");

for (int i = 0; i < S; i++) {

for (int j = 0; j < S; j++) {

printf("%4d", m2[i][j]); }}

print_md(m2);

printf("Сумма элементов на главной диагонале: %d\n", sum_md(m2));

print_sd(m2);

printf("Сумма элементов на побочной диагонале: %d\n", sum_sd(m2));

return 0;}

// matrix_utils.c

#include <stdio.h>

#include "matrixutils.h"

int m1[S][S] = {

{ 1, 2, 3, 4, 5, 6},

{ 7, 8, 9, 10, 11, 12},

{13, 14, 15, 16, 17, 18},

{19, 20, 21, 22, 23, 24},

{25, 26, 27, 28, 29, 30},

{31, 32, 33, 34, 35, 36}

};

int m2[S][S] = {

{ 6, 5, 4, 3, 2, 1},

{12, 11, 10, 9, 8, 7},

{18, 17, 16, 15, 14, 13},

{24, 23, 22, 21, 20, 19},

{30, 29, 28, 27, 26, 25},

{36, 35, 34, 33, 32, 31}

};

void print_md(int m[S][S]) {

printf("Главная диагональ: ");

for (int i = 0; i < S; i++) {

printf("%d ", m[i][i]);

}

printf("\n");

}

void print_sd(int m[S][S]) {

printf("Побочная диагональ: ");

for (int i = 0; i < S; i++) {

printf("%d ", m[i][S - 1 - i]);

}

printf("\n");

}

int sum_md(int m[S][S]) {

int s = 0;

for (int i = 0; i < S; i++) {

s += m[i][i];

}

return s;

}

int sum_sd(int m[S][S]) {

int s = 0;

for (int i = 0; i < S; i++) {

s += m[i][S - 1 - i];

}

return s;

}

Соседние файлы в папке Лабы