Untitled

 avatar
unknown
c_cpp
3 years ago
2.0 kB
9
Indexable
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <malloc.h>
#include <locale.h>

float** createMatrix(int size, int type) {
	int i, j, check = 1;
	float** matrix;
	matrix = (float**)malloc(sizeof(float*) * size);

	for (i = 0; i < size; i++) {
		matrix[i] = (float*)malloc(sizeof(float) * size);

		if (type == 'B') continue;

		for (j = 0; j < size; j++) {
			printf("[%d][%d]: ", i, j);
			check = scanf("%f", &matrix[i][j]);

			if (check != 1){
				printf("Вы ввели неверное значение элемента матрицы. Перезапустите программу.");
				return 0;
			}
		}
	}

	return matrix;
}

void printMatrix(float** matrix, int matrixSize) {
	int i, j;

	for (i = 0; i < matrixSize; i++) {
		for (j = 0; j < matrixSize; j++) {
			printf("%f ", matrix[i][j]);
		}
		printf("\n");
	}
}

float calculateElement(float** matrixA, int size, int i, int j) {
	float min = matrixA[i][j];
	int startIndex = j;

	for (i; i >= 0; i--) {
		for (j; j < size; j++) {
			if (min > matrixA[i][j]) {
				min = matrixA[i][j];
			}
		}
		j = startIndex;
	}
	
	return min;
}

void buildMatrix(float** matrixA, float** matrixB, int size) {
	int i, j;

	for (i = 0; i < size; i++) {
		for (j = 0; j < size; j++) {
			matrixB[i][j] = calculateElement(matrixA, size, i, j);
		}
	}
}


int main() {
	setlocale(LC_ALL, "Russian");

	int size, check = 1;
	float **matrixA, **matrixB;

	printf("Введите размер квадратной матрицы (меньше 20): ");
	check = scanf("%d", &size);
	if (check != 1 || size > 20 || size < 1) {
		printf("Неверный размер");
		return 0;
	}

	printf("\nMatrix A:\n");
	matrixA = createMatrix(size, 'A');
	if (matrixA == 0) {
		return 0;
	}
	matrixB = createMatrix(size, 'B');

	printMatrix(matrixA, size);
	buildMatrix(matrixA, matrixB, size);
	printf("\nMatrix B: \n");
	printMatrix(matrixB, size);
}
Editor is loading...