Algoritmos em C com Vetores e Matrizes

Classificado em Grego

Escrito em em português com um tamanho de 4,75 KB

Intercalando Dois Vetores em C

Este algoritmo em C solicita ao usuário o tamanho de dois vetores (A e B) e, em seguida, seus respectivos elementos. O programa intercala os elementos de A e B em um terceiro vetor (C) e exibe o resultado.

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int a[20], b[20], c[40], i, n;

    // Solicita ao usuário um número N (tamanho dos vetores) entre 1 e 20
    do
    {
        printf("\nDigite o tamanho dos vetores (1-20): ");
        scanf("%d", &n);
    }
    while (n < 1 || n > 20);

    // Preenche o vetor A
    printf("\n--- Digite os valores do vetor A ---\n");
    for (i = 0; i < n; i++)
    {
        printf("A[%d] = ", i + 1);
        scanf("%d", &a[i]);
    }

    // Preenche o vetor B
    printf("\n--- Digite os valores do vetor B ---\n");
    for (i = 0; i < n; i++)
    {
        printf("B[%d] = ", i + 1);
        scanf("%d", &b[i]);
    }

    // Intercala os vetores A e B no vetor C
    for (i = 0; i < n; i++)
    {
        c[i * 2] = a[i];
        c[i * 2 + 1] = b[i];
    }

    // Imprime o vetor resultante C
    printf("\n\nVetor C (intercalado):\n");
    for (i = 0; i < 2 * n; i++)
    {
        printf("%d ", c[i]);
    }
    printf("\n\n");

    system("pause");
    return 0;
}

Multiplicar a Diagonal Principal por uma Constante

Este código C cria uma matriz quadrada, solicita seus valores e uma constante K. Em seguida, exibe a matriz original, multiplica cada elemento da diagonal principal por K e, por fim, exibe a matriz modificada.

#include <stdio.h>
#include <stdlib.h>

int main()
{
    float a[10][10], k;
    int i, j, m;

    // Solicita a dimensão da matriz
    do
    {
        printf("\nInforme a dimensão da matriz (2-10): ");
        scanf("%d", &m);
    }
    while (m < 2 || m > 10);

    // Preenche a matriz
    printf("\n--- Digite os valores da matriz ---\n");
    for (i = 0; i < m; i++)
    {
        for (j = 0; j < m; j++)
        {
            printf("A[%d][%d] = ", i + 1, j + 1);
            scanf("%f", &a[i][j]);
        }
    }

    // Solicita o valor da constante
    printf("\nDigite o valor da constante K: ");
    scanf("%f", &k);

    // Imprime a matriz original
    printf("\n\n--- Matriz Original ---\n");
    for (i = 0; i < m; i++)
    {
        for (j = 0; j < m; j++)
        {
            printf("%6.1f", a[i][j]);
        }
        printf("\n");
    }

    // Multiplica a diagonal principal pela constante K
    for (i = 0; i < m; i++)
    {
        a[i][i] *= k;
    }

    // Imprime a matriz modificada
    printf("\n\n--- Matriz Modificada (Diagonal Principal * %.1f) ---\n", k);
    for (i = 0; i < m; i++)
    {
        for (j = 0; j < m; j++)
        {
            printf("%6.1f", a[i][j]);
        }
        printf("\n");
    }

    printf("\n");
    system("pause");
    return 0;
}

Verificar se uma Matriz é Simétrica

O código a seguir solicita a ordem e os elementos de uma matriz quadrada. Em seguida, ele verifica se a matriz é simétrica (ou seja, se a matriz é igual à sua transposta). O resultado da verificação é impresso na tela, juntamente com a matriz original.

#include <stdio.h>
#include <stdlib.h>

int main()
{
    float a[10][10];
    int i, j, m, simetrica = 1; // Assumimos que é simétrica inicialmente

    // Solicita a ordem da matriz
    printf("\nDigite a ordem da matriz quadrada: ");
    scanf("%d", &m);

    // Preenche a matriz
    printf("\n--- Digite os valores da matriz ---\n");
    for (i = 0; i < m; i++)
    {
        for (j = 0; j < m; j++)
        {
            printf("A[%d][%d] = ", i + 1, j + 1);
            scanf("%f", &a[i][j]);
        }
    }

    // Verifica a simetria
    for (i = 0; i < m; i++)
    {
        for (j = 0; j < m; j++)
        {
            if (a[i][j] != a[j][i])
            {
                simetrica = 0; // Se encontrar uma diferença, não é simétrica
                break; // Sai do loop interno
            }
        }
        if (simetrica == 0)
        {
            break; // Sai do loop externo
        }
    }

    // Imprime a matriz
    printf("\n\n--- Matriz Digitada ---\n");
    for (i = 0; i < m; i++)
    {
        for (j = 0; j < m; j++)
        {
            printf("%6.1f", a[i][j]);
        }
        printf("\n");
    }

    // Imprime o resultado
    if (simetrica == 1)
    {
        printf("\n\nA matriz é simétrica.\n");
    }
    else
    {
        printf("\n\nA matriz não é simétrica.\n");
    }

    printf("\n");
    system("pause");
    return 0;
}

Entradas relacionadas: