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;
}