Exercícios de Exemplo - 31/03/2009 - Matrizes

Ir em baixo

Exercícios de Exemplo - 31/03/2009 - Matrizes

Mensagem por Evandro Abu Kamel em Ter 31 Mar 2009, 18:31

Vou postar aqui o código dos 3 exercícios passados pela professora nesse dia.

Exercício 1: Ler o tamanho de uma matriz (máximo 10), preenchê-la com valores numéricos, depois calcular e exibir a soma dos valores que estão abaixo da diagonal secundária.

A lógica usada nesse exercício é a seguinte: se você for verificar a soma das coordenadas [x,y] dos elementos da vizinhança inferior à diagonal secundária (falei bonito hein Wink ), sou seja, (x+y) será igual ao tamanho (ou número de linhas e colunas) da matriz. Vejam o exemplo:

- 0 1 2 3 4
0 100 100 100 100 1000
1 100 100 100 1000 7
2 100 100 1000 3 1
3 100 1000 8 5 2
4 1000 9 4 1 6

Vejam só, os valores 100 não serão somados, pois eles estão acima da diagonal secundária. A diagonal secundária é formada pelos valores 1000 em azul escuro, os valores que estão "em contato" com ela que são sua vizinhança; se você fizer o (x+y) dos elementos abaixo da diagonal secundária, o resultado, no exemplo, será exatamente maior ou igual a 5 (o tamanho da matriz).

Código:
public static void Main(string[] args)
{
   int tam, soma=0;
   
   do {
      Console.Write("Informe o tamanho da matriz (2 a 10): ");
      tam = int.Parse(Console.ReadLine());
   } while ((tam<2) || (tam>10));
   
   int[,] M = new int[tam,tam];
   
   for (int x=0; x<tam; x++)
   {
      for (int y=0; y<tam; y++)
      {
         Console.Write("Digite um valor para ["+x+"]["+y+"]: ");
         M[x,y] = int.Parse(Console.ReadLine());
         
         if ((x+y) >= tam) soma += M[x,y];
      }
   }
   
   Console.WriteLine("\nO somatorio dos valores abaixo da diagonal secundaria eh: "+soma);
   Console.Read();
}

Exercício 2: Ler o tamanho de uma matriz (máximo 8 ), preenchê-la com valores numéricos, e, em cada posição de um vetor, guardar a soma dos valores de cada coluna da matriz, depois exibir o vetor.

Nesse exercício, simplesmente foi feita a leitura da matriz por colunas x linhas, e o vetor na posição igual à coluna da matriz recebe o somatório dos elementos de cada coluna da matriz.

Código:
public static void Main(string[] args)
{
   int N;
   
   do {
      Console.Write("Informe o tamanho da matriz (2 a 8): ");
      N = int.Parse(Console.ReadLine());
   } while ((N<2) || (N>8));
   
   int[,] M = new int[N,N];
   int[] V = new int[N];
   
   for (int y=0; y<N; y++)
   {
      for (int x=0; x<N; x++)
      {
         Console.Write("Digite um valor para ["+x+"]["+y+"]: ");
         M[x,y] = int.Parse(Console.ReadLine());
         V[y] += M[x,y];
      }
   }
   
   Console.Write("\n");
   for (int j=0; j<N; j++)
   {
      Console.WriteLine("O somatorio da coluna "+j+" eh: "+V[j]);
   }
   
   Console.Read();
}

Exercício 3: Criar uma matriz 5x5 e preenchê-la com letras, verificar quantas vogais há em cada linha e guardar esses valores em um vetor, depois exibir o vetor.

Nada de muito complicado, foi criada uma matriz que recebe valores dos tipo char. Na condição do do..while() eu usei um método do tipo char que verifica se o valor contido na variável (ou posição da matriz nesse caso) é uma letra, a leitura da letra é repetida até que o usuário digite uma letra. Depois é feita uma verificação se tal valor em tal linha é uma das cinco vogais e incrementa a posição do vetor referente àquela linha.

Código:
public static void Main(string[] args)
{
   char[,] M = new char[5,5];
   int[] V = new int[5];
   
   for (int x=0; x<5; x++)
   {
      for (int y=0; y<5; y++)
      {
         do {
            Console.Write("Digite uma letra para ["+x+"]["+y+"]: ");
            M[x,y] = char.Parse(Console.ReadLine());
         } while (!char.IsLetter(M[x,y]));
         
         if ((M[x,y]=='A') || (M[x,y]=='E') || (M[x,y]=='I') || (M[x,y]=='O') || (M[x,y]=='U'))
         {
            V[x]++;
         }
      }
   }
   
   Console.Write("\n");
   for (int i=0; i<5; i++)
   {
      Console.WriteLine("A linha "+i+" possui "+V[i]+" vogais.");
   }
   
   Console.Read();
}

_________________
"Faça as coisas o mais simples que você puder,
porém, não as mais simples." Albert Einstein

avatar
Evandro Abu Kamel
Administrador
Administrador

Número de Mensagens : 222
Idade : 28
Data de inscrição : 11/03/2009

Ver perfil do usuário http://forum.clubedosistema.com

Voltar ao Topo Ir em baixo

Voltar ao Topo

- Tópicos similares

 
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum