Curso de Programação C#

William Ivanski

Lista de Exercícios Capítulo 6 (Respostas)


1) Dada uma matriz real A com m linhas e n colunas e um vetor real V com n elementos, determinar o produto de A por V.

// matriz real A
double[,] a;
// vetor real V
double[] v;
// m: número de linhas de A
// n: número de colunas de A, e número de elementos de V
int m, n;
// vetor real P, que é o produto de A por V
double[] p;

// dimensões
Console.Write("Digite o valor de M, que será o número de linhas de A: ");
m = int.Parse(Console.ReadLine());
Console.Write("Digite o valor de N, que será o número de colunas de A e número de elementos de V: ");
n = int.Parse(Console.ReadLine());

// alocando as matrizes e o vetor
a = new double[m,n];
v = new double[n];

// definicao do tamanho de P
// regra geral: Amxp . Bpxn = Cmxn
// Amxn . Vnx1 = Pmx1

// alocando o vetor resultante p
p = new double[m];

// solicitando ao usuário para digitar os elementos da matriz A
Console.WriteLine();
Console.WriteLine("Digite os elementos de A:");
for (int i = 0; i < m; i++)
    for (int j = 0; j < n; j++)
    {
        Console.Write("Digite o elemento [{0},{1}]: ", i, j);
        a[i, j] = double.Parse(Console.ReadLine());
    }

// solicitando ao usuário para digitar os elementos do vetor V
Console.WriteLine();
Console.WriteLine("Digite os elementos de V:");
for (int j = 0; j < n; j++)
{
    Console.Write("Digite o elemento [{0}]: ", j);
    v[j] = double.Parse(Console.ReadLine());
}

// multiplicacao
for (int i = 0; i < m; i++)
{
    p[i] = 0;
    for (int j = 0; j < n; j++)
        p[i] += a[i,j] * v[j];
}

// impressão do vetor resultante
Console.WriteLine();
Console.WriteLine("O vetor resultante P da multiplicação entre A e V ficou:");
for (int i = 0; i < m; i++)
    Console.WriteLine("P[{0}] = {1}", i, p[i]);

Console.ReadKey();

2) Um vetor real X com n elementos é apresentado como resultado de um sistema de equações lineares Ax = B cujos coeficientes são representados em uma matriz real Amxn e os lados direitos das equações em um vetor real B de m elementos. Verificar se o vetor X é realmente solução do sistema dado.

3) Dadas duas matrizes reais Amxn e Bmxn, calcular a soma de A por B.

4) Dadas duas matrizes reais Amxn e Bnxp, calcular o produto de A por B.

// matriz real A
double[,] a;
// matriz real B
double[,] b;
// m: número de linhas de A
// n: número de colunas de A, e número de linhas de B
// p: número de colunas de B
int m, n, p;
// matriz real C, que é o produto de A por B
double[,] c;

// dimensões
Console.Write("Digite o valor de M, que será o número de linhas de A: ");
m = int.Parse(Console.ReadLine());
Console.Write("Digite o valor de N, que será o número de colunas de A e número de linhas de B: ");
n = int.Parse(Console.ReadLine());
Console.Write("Digite o valor de P, que será o número de colunas de B: ");
p = int.Parse(Console.ReadLine());

// alocando as matrizes
a = new double[m,n];
b = new double[n,p];

// definicao do tamanho de C
// Cmxp = Amxn . Bnxp

// alocando a matriz resultante C
c = new double[m,p];

// solicitando ao usuário para digitar os elementos da matriz A
Console.WriteLine();
Console.WriteLine("Digite os elementos de A:");
for (int i = 0; i < m; i++)
    for (int j = 0; j < n; j++)
    {
        Console.Write("Digite o elemento [{0},{1}]: ", i, j);
        a[i, j] = double.Parse(Console.ReadLine());
    }

// solicitando ao usuário para digitar os elementos da matriz B
Console.WriteLine();
Console.WriteLine("Digite os elementos de B:");
for (int i = 0; i < n; i++)
    for (int j = 0; j < p; j++)
    {
        Console.Write("Digite o elemento [{0},{1}]: ", i, j);
        b[i, j] = double.Parse(Console.ReadLine());
    }

// multiplicacao
for (int i = 0; i < m; i++)
    for (int j = 0; j < p; j++)
    {
        c[i,j] = 0;
        for (int k = 0; k < n; k++)
            c[i,j] += a[i,k] * b[k,j];
    }       

// impressão da matriz resultante
Console.WriteLine();
Console.WriteLine("A matriz resultante C da multiplicação entre A e B ficou:");
for (int i = 0; i < m; i++)
    for (int j = 0; j < p; j++)
        Console.WriteLine("C[{0},{1}] = {2}", i, j, c[i,j]);

Console.ReadKey();

5) Dada uma matriz real Amxn, verificar se existem elementos repetidos em A.

6) Dizemos que uma matriz inteira Anxn é uma matriz de permutação se em cada linha e em cada coluna houver n-1 elementos nulos e um único elemento igual a 1.
Dada uma matriz inteira Anxn, verificar se A é de permutação.

7) Dada uma matriz Amxn, imprimir o número de linhas e o número de colunas nulas (somente zeros) da matriz.

8) Dizemos que uma matriz quadrada inteira é um quadrado mágico se a soma dos elementos de cada linha, a soma dos elementos de cada coluna e a soma dos elementos das diagonais principal e secundária são todas iguais.
Dada uma matriz quadrada Anxn, verificar se A é um quadrado mágico.

9) Imprimir as N primeiras linhas do triângulo de Pascal.

10) Imprimir as N primeiras linhas do triângulo de Pascal usando apenas um vetor.

11) Faça um programa que leia N sequências de inteiros, não necessariamente contendo a mesma quantidade de números, ordene-os, e em seguida imprima todos os números ordenados em ordem crescente.

12) Os elementos aij de uma matriz inteira Anxn representam os custos de transporte da cidade i para a cidade j. Dados n itinerários, cada um com k cidades, calcular o custo total para cada itinerário.