Buscar

Matrizes em Programação Estruturada

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 5 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

PROGRAMAÇÃO ESTRUTURADA
Professora: Luciana Rocha Cardoso
- Objetivo dessa aula: matrizes
10. Estruturas de Dados Homogêneas – Arrays bidimensionais (matrizes)
Matrizes têm a maioria das características semelhantes aos vetores, a diferença primordial é o número de dimensões que as matrizes possuem, enquanto vetores possuem apenas uma dimensão, matrizes possuem n dimensões. Um caso bastante particular é de matrizes bidimensionais (n=2), vejamos a sintaxe para a declaração dessa matriz:
/*declaração de uma matriz bidimensional*/
tipo nome_da_matriz[número_de_linhas][número_de_colunas];
por exemplo, a declaração 
int A[5][6];
indica que A é uma matriz 5x6 e seus elementos são inteiros.
Para referenciar um elemento particular da matriz deve-se utilizar dois índices, o número da linha e o da coluna do elemento que se deseja acessar. Assim como em vetores, o compilador não verifica se o índice está dentro dos limites permitidos, ficando a cabo do programador essa tarefa.
Vejamos um exemplo de aplicação que utiliza matrizes bidimensionais:
/*Exemplo de uso de matrizes bidimensionais*/
#include <stdlib.h>
#include <stdio.h>
main (){
int matriz[20][10];
int i,j,k;
k=1;
for (i=0;i<20;i++){
for (j=0;j<10;j++){
matriz[i][j]=k;
printf("%d\t",matriz[i][j]);
k++;
}
printf("\n");
}
system("pause");
}
O programa acima preenche uma matriz 20x10 com valores de 1 a 200, entenda o programa, copie e altere-o para que ele preencha cada elemento com o produto do número da linha pelo número da coluna. 
Ex:
main(){
int x[10][10];
int t,p=0;
for(t=0;t<10;t++,p++){
x[t][p]=t*p;
printf("%d\n",x[t][p]);
}
}
Matrizes com dimensões maiores que dois têm propriedades análogas às das matrizes bidimensionais, para declarar uma matriz n-dimensional usa-se a seguinte sintaxe:
/*Sintaxe para declaração de matrizes n-dimensionais*/
tipo nome_da_matriz[tamanho 1][tamanho 2][tamanho 3]...[tamanho n-1][tamanho n];
Passando uma Matriz a uma Função
Quando declara-se uma função que trabalha com um parâmetro matriz, precisa informar o compilador. Por exemplo, o seguinte programa usa a função exibe_matriz para exibir os valores em uma matriz. Como pode-se ver, o programa passa para a função tanto a matriz como o número de elementos que a matriz contém, como mostrado a seguir:
	#include <stdio.h>
void exibe_matriz(int valores[], int num_de_elementos)
     {
       int i;
       for (i = 0; i < num_de_elementos; i++)
         printf("%d\n", valores[i]);
     }
main()
     {
       int notas[5] = {70, 80, 90, 100, 90};
       exibe_matriz(notas, 5);
     }
Outro exemplo:
#include <stdio.h>
void exibe_2d_matriz(int matriz[][10], int linhas)
     {
       int i, j;
       for (i = 0; i < linhas; i++)
         for (j = 0; j < 10; j++)
           printf("matriz[%d][%d] = %d\n", i, j, matriz[i][j]);
     }
main()
     {
       int a[1][10] = {{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}};
       int b[2][10] = {{1, 2, 3, 4, 5, 6, 7, 8, 9, 10},
                      {11, 12, 13, 14, 15, 16, 17, 18, 19,20}};
       int c[3][10] = {{1, 2, 3, 4, 5, 6, 7, 8, 9, 10},
                      {11, 12, 13, 14, 15, 16, 17, 18, 19, 20},
                      {21, 22, 23, 24, 25, 26, 27, 28, 29, 30}};
       exibe_2d_matriz(a, 1);
       exibe_2d_matriz(b, 2);
       exibe_2d_matriz(c, 3);
     }
Matrizes de strings
Matrizes de strings são matrizes bidimensionais. Imagine uma string. Ela é um vetor. Se fizermos um vetor de strings estaremos fazendo uma lista de vetores. Esta estrutura é uma matriz bidimensional de char. Podemos ver a forma geral de uma matriz de strings como sendo:
 char nome_da_variável [num_de_strings][compr_das_strings];
 Aí surge a pergunta: como acessar uma string individual? Fácil. É só usar apenas o primeiro índice. Então, para acessar uma determinada string faça:
 nome_da_variável [índice]
 Aqui está um exemplo de um programa que lê 5 strings e as exibe na tela:
 
#include <stdio.h>
int main ()
{
	char strings [5][100];
	int count;
	for (count=0;count<5;count++)
        	{
        		printf ("\n\nDigite uma string: ");
        		gets (strings[count]);
        	}
	printf ("\n\n\nAs strings que voce digitou foram:\n\n");
	for (count=0;count<5;count++)
                printf ("%s\n",strings[count]);
        return(0);
}
exercícios
1) Faça um vetor de tamanho 50 preenchido com o seguinte valor: (i+5i)%i, sendo i a posição do elemento no vetor, em seguida imprima o vetor na tela.
 
2) Faça um programa que preenche um matriz quadrada 5x5 com 1´s na diagonal principal (matriz identidade) e imprime a matriz na tela.
3) Faça um programa que preenche uma matriz com o produto do valor da linha e da coluna de cada elemento, depois imprime na tela.
4) O que será impresso pelo programa a seguir? 
# include <stdio.h> 
main() 
{ 
int t, i, M[3][4]; 
for (t=0; t<3; ++t) 
 for (i=0; i<4; ++i) 
 M[t][i] = (t*4)+i+1; 
for (t=0; t<3; ++t) 
 { 
 for (i=0; i<4; ++i) 
 printf ("%3d ", M[t][i]); 
 printf ("\n"); 
 } 
} 
 
5) Seja R uma matriz 4 X5. Determine o maior elemento de R e a sua posição. 
6) Seja A uma matriz de ordem M. Fazer um programa para: 
Determinar a soma dos elementos da diagonal principal de A. 
Colocar os elementos da diagonal principal de A em um vetor S. 
Considere A e B duas matrizes NXM. Faça um programa para calcular a matriz C, resultante da soma da matriz A com a matriz B. Imprimir a matriz C.
Considere as matrizes A (MxN) e B (NxP). Obter a matriz P resultante do produto de A por B.
Suponha N = M. Determine a matriz T transposta de A (obs.: T[i][j] = A [j][i]). 
Dada uma matriz A quadrada, verifique se a mesma é simétrica (isto é, se A[i][j] = A [j][i] para todo i e j dentro do subintervalo aos quais pertencem os índices).
Considere N = M. Verifique se A é uma matriz de permutação. Uma matriz de permutação é uma matriz quadrada cujos elementos são 0's ou 1's, tal que em cada linha e em cada coluna exista um, e apenas um, elemento igual a 1. Exemplo: 
|0 1 0 |
| 1 0 0 |
| 0 0 1 |
Dada uma matriz B, determine a linha de B que possui a maior soma de seus elementos. 
Considere A uma matriz de ordem N. Divida cada elemento da matriz A pelo maior elemento da linha correspondente. 
Faça um programa que calcule a média dos elementos da diagonal principal de uma matriz 10 X 10 de inteiros.
Uma matriz quadrada inteira é chamada de "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 todos iguais. Exemplo: A matriz abaixo representa um quadrado mágico: 
 | 8 0 7 |
 | 4 5 6 |
 | 3 10 2 |
Escreva um programa que verifica se uma matriz de n linhas e n colunas representa um quadrado mágico.
Escrever um programa que lê uma matriz M de ordem 10. Executar os seguintes cálculos sobre a matriz: 
Trocar a linha 2 com a linha 8 
Trocar a coluna 4 com a coluna 10 
Trocar a diagonal principal com a diagonal secundária 
Trocar a linha 5 com a coluna 10. 
Imprimir a matriz resultante. 
Seja a seguinte declaração float numeros[LINHA][COLUNA]. Escrever um programa capaz de: 
ler os elementos da matriz. 
identificar o número de elementos iguais a zero em cada uma das linhas.
identificar o número de elementos iguais a zero em cada uma das colunas.
identificar o número de elementos pares em determinada linha (lida)
identificar o número de elementos pares em determinada coluna (lida) 
calcular a média aritmética dos elementos de cada uma das linhas, armazenando esses valores em um vetor.
identificar a linha que tem a maior media de seus elementos.Imprimir todos os resultados. 
Escreva um programa que leia um número inteiro x e uma matriz Mat de ordem 10 de inteiros. Conte quantos valores iguais a x estão na matriz. Crie, a seguir, um vetor V contendo todos os elementos de Mat diferentes de x. Mostre os resultados. 
Escrever um programa que lê uma matriz A 10 x 8 e verifica, a seguir, quais os elementos de A que estão repetidos e quantas vezes cada um está repetido. Imprimir cada elemento repetido e também o número de vezes que o elemento aparece em A. Se achar necessário, utilize vetores para auxiliar a resolução.
1Escrever um programa que lê uma matriz M 5x5 e cria 2 vetores SL e SC que contenham, respectivamente, as somas das linhas e das colunas de M. Escrever a matriz e os vetores criados. 
 
Faça um programa que gere a seguinte matriz: 
1 1 1 1 1 1
1 2 2 2 2 1
1 2 3 3 2 1
1 2 3 3 2 1
1 2 2 2 2 1
1 1 1 1 1 1
Faça um programa que leia uma matriz 20x20 de reais e some cada uma das linhas, armazenando o resultado da soma em um vetor. A seguir, multiplique cada elemento pela soma da sua linha. Mostre a matriz resultante. 
Faça um programa que leia uma matriz 50x50 de números reais e encontre o maior valor da matriz. A seguir, multiplique cada elemento da diagonal principal pelo maior valor. Mostre a matriz após as multiplicações. 
Faça um programa que leia uma matriz 50x50 de números reais. A seguir, multiplique cada linha pelo elemento da diagonal principal daquela linha. Mostre a matriz após as multiplicações. 
Na teoria dos sistemas, define-se como elemento minimax de uma matriz o menor elemento da linha onde se encontra o maior elemento da matriz. Escreva um programa que leia uma matriz 10 X 10 de inteiros e encontre seu elemento minimax, mostrando também sua posição.

Continue navegando