Как создать треугольную матрицу в C: методы и примеры

Чтобы сгенерировать треугольную матрицу на языке программирования C, можно использовать различные методы. Вот несколько подходов:

Метод 1: использование двумерного массива

#include <stdio.h>
void generateTriangularMatrix(int n) {
    int matrix[n][n];
    int i, j;
    for (i = 0; i < n; i++) {
        for (j = 0; j < n; j++) {
            if (j >= i) {
                matrix[i][j] = 1;
            } else {
                matrix[i][j] = 0;
            }
        }
    }
// Print the triangular matrix
    for (i = 0; i < n; i++) {
        for (j = 0; j < n; j++) {
            printf("%d ", matrix[i][j]);
        }
        printf("\n");
    }
}
int main() {
    int n;
    printf("Enter the size of the matrix: ");
    scanf("%d", &n);
    generateTriangularMatrix(n);
    return 0;
}

Метод 2: использование одномерного массива

#include <stdio.h>
void generateTriangularMatrix(int n) {
    int matrix[n * (n + 1) / 2];
    int i, j, k = 0;
    for (i = 0; i < n; i++) {
        for (j = 0; j < n; j++) {
            if (j >= i) {
                matrix[k++] = 1;
            } else {
                matrix[k++] = 0;
            }
        }
    }
// Print the triangular matrix
    k = 0;
    for (i = 0; i < n; i++) {
        for (j = 0; j < n; j++) {
            if (j >= i) {
                printf("%d ", matrix[k++]);
            } else {
                printf("  ");
            }
        }
        printf("\n");
    }
}
int main() {
    int n;
    printf("Enter the size of the matrix: ");
    scanf("%d", &n);
    generateTriangularMatrix(n);
    return 0;
}

Метод 3. Использование динамического распределения памяти

#include <stdio.h>
#include <stdlib.h>
void generateTriangularMatrix(int n) {
    int matrix = (int)malloc(n * sizeof(int*));
    int i, j;
    for (i = 0; i < n; i++) {
        matrix[i] = (int*)malloc(n * sizeof(int));
        for (j = 0; j < n; j++) {
            if (j >= i) {
                matrix[i][j] = 1;
            } else {
                matrix[i][j] = 0;
            }
        }
    }
// Print the triangular matrix
    for (i = 0; i < n; i++) {
        for (j = 0; j < n; j++) {
            printf("%d ", matrix[i][j]);
        }
        printf("\n");
    }
// Free the dynamically allocated memory
    for (i = 0; i < n; i++) {
        free(matrix[i]);
    }
    free(matrix);
}
int main() {
    int n;
    printf("Enter the size of the matrix: ");
    scanf("%d", &n);
    generateTriangularMatrix(n);
    return 0;
}