Linguagem C
86 pág.

Linguagem C


DisciplinaAlgoritmos e Estrutura de Dados I708 materiais7.918 seguidores
Pré-visualização18 páginas
realizado mediante um índice ou pelo endereço. O endereço mais baixo ou 
índice (0) corresponde ao primeiro elemento e o mais alto, ao último elemento. As matrizes podem 
possuir várias dimensões. 
Matrizes unidimensionais, ou vetores, são matrizes que possuem apenas uma dimensão. 
Os vetores são, essencialmente, listas de informações do mesmo tipo, que são armazenadas em 
posições contíguas da memória em uma ordem de índice. A figura 5.1 apresenta um exemplo de 
matriz unidimensional. Considerando-se que cada bloco armazena um único caractere, a matriz no 
exemplo pode armazenar nove caracteres seqüenciais. 
 
 
 
 
 
 
Figura 5.1 - Exemplo notação de complemento de dois. 
 
Matrizes multidimensionais são matrizes que possuem duas ou mais dimensões. A 
forma mais simples é a matriz bidimensional ou matriz linha-coluna, onde o primeiro índice indica 
a linha e o segundo, a coluna. 
1. #include <stdlib.h> 
2. #include <stdio.h> 
3. 
4. int main(void) 
5. { 
6. int v[10], i; 
7. for (i=0; i<10; i++) 
8. { 
9. printf(&quot;Digite v[%d]=&quot;,i); 
10. scanf(&quot;%d&quot;,&v[i]); 
11. } 
12. for (i=0; i<10; i++) 
13. { 
14. printf(&quot;Endereco: %p, &quot;,v[i]); 
15. printf(&quot;v[%d]=%d\n&quot;,i,v[i]); 
16. } 
17. return(0); 
18. } 
2. #include <stdlib.h> 
3. #include <stdio.h> 
4. 
5. int main(void) 
6. { 
7. int v[3][3], i, j; 
8. for (i=0; i<3; i++) 
9. for (j=0; j<3; j++) 
10. { 
11. printf(&quot;Digite [%d,%d]=&quot;,i ,j); 
12. scanf(&quot;%d&quot;,&v[i][j]); 
13. } 
14. for (i=0; i<3; i++) 
15. { 
16. printf(&quot;\n&quot;); 
17. for (j=0; j<3; j++) 
18. printf(&quot;%d &quot;,v[i][j]); 
19. } 
20. printf(&quot;\n&quot;); 
21. return(0); 
22. } 
 
5.1 Exercícios 
1. Faça um programa que carregue uma matriz 2x2, calcule e mostre uma matriz resultante que 
será a matriz digitada multiplicada pelo maior elemento da matriz. 
 35
2. Faça um programa que carregue uma matriz 10x3 com as notas de dez alunos em três provas. 
Mostre um relatório com o número do aluno (número da linha) e a prova em que cada aluno 
obteve menor nota. Ao final do relatório, mostre quantos alunos tiveram menor nota na prova 1, 
quantos alunos tiveram menor nota na prova 2 e quantos alunos tiveram menor nota na prova 3. 
3. Faça um programa que carregue uma matriz 10x20 com números inteiros e some cada uma das 
linhas, armazenando o resultado das somas em um vetor. A seguir, multiplique cada elemento 
da matriz pela soma da linha e mostre a matriz resultante. 
4. Na teoria dos sistemas define-se o elemento MINMAX de uma matriz como sendo o maior 
elemento da linha onde se encontra o menor elemento da matriz. Faça um programa que 
carregue uma matriz 4x7 com números reais, calcule e mostre seu MINMAX e sua posição 
(linha e coluna). 
5. Faça um programa que carregue uma primeira matriz de ordem 4x5 e uma segunda matriz 5x2, 
calcule e mostre a matriz resultante do produto matricial das duas matrizes anteriores, 
armazenando-o em uma terceira matriz de ordem 4x2. 
6. Faça um programa que carregue uma matriz 15x5 com números inteiros, calcule e mostre quais 
os elementos da matriz que se repetem e quantas vezes cada um está repetido. 
7. Faça um programa que carregue uma matriz 6x4 com números inteiros, calcule e mostre 
quantos elementos dessa matriz são maiores que 30 e, em seguida, mostre uma segunda matriz 
com os elementos diferentes de 30. No lugar do número 30 da segunda matriz coloque o número 
zero. 
8. Faça um programa que carregue uma matriz 10x10 com números inteiros, execute as trocas 
especificadas a seguir e mostre a matriz resultante. 
\u2022 A linha 2 com a linha 8; 
\u2022 A coluna 4 com a coluna 10; 
\u2022 A diagonal principal com a diagonal secundária; 
\u2022 A linha 5 com a coluna 10. 
9. Faça um programa que carregue uma matriz 8x8 com números inteiros e mostre o maior e 
menor número com as respectivas posições (linha, coluna). 
10. Faça um programa que carregue uma matriz 8x8 com números inteiros e mostre a quantidade de 
números pares e ímpares. 
11. Faça um programa que carregue uma matriz 8x8 com números reais, calcule a média de todos 
os elementos e mostre a quantidade de números que são maiores ou iguais a média e sua 
respectiva posição. 
 36
12. Faça um programa que carregue uma matriz 5x5 de números reais, calcule a média aritmética 
dos elementos e mostre todos elementos maiores ou iguais à media e sua respectiva posição na 
matriz. 
13. Faça um programa que construa a tabela apresentada a seguir em uma matriz. Dado um número 
digitado pelo usuário, exiba o mês do ano correspondente de acordo com a tabela. Emitir 
mensagem de erro se o código for inválido. 
Código Mês Código Mês 
1 Janeiro 7 Julho 
2 Fevereiro 8 Agosto 
3 Março 9 Setembro 
4 Abril 10 Outubro 
5 Maio 11 Novembro 
6 Junho 12 Dezembro 
 
14. Faça um programa que leia um vetor de 20 números inteiros. Dado uma entrada do usuário, 
verifique se há esse número no vetor, quantos números e em qual posição. 
15. Elabore um programa que calcule o produto de duas matrizes de ordem 3. 
 
 
 
 
 
16. Elabore um programa que calcule a soma e a subtração de duas matrizes A e B. 
 
 
 
17. Elabore um programa que calcule a determinante de uma matriz de ordem 2. 
 
 
 
18. Elabore um programa que calcule a determinante de uma matriz de ordem 3. 
 
 
 
 
19. Considere o triângulo de vértices A(2;1), B(5; 2) e C(3; 4) apresentado na figura a seguir. A 
área do triângulo ABC é calculada de acordo com a fórmula abaixo, onde D é a determinante da 
matriz de ordem 3, onde a primeira coluna é formada pelas abscissas dos pontos A, B e C, a 
segunda coluna é formada pelas respectivas ordenadas e a terceira coluna é unitária. Elabore um 
\uf8fa\uf8fb
\uf8f9\uf8ef\uf8f0
\uf8ee
\u2212
=\uf8fa\uf8fb
\uf8f9\uf8ef\uf8f0
\uf8ee
+\u2212+
++
=\uf8fa\uf8fb
\uf8f9\uf8ef\uf8f0
\uf8ee
+\uf8fa\uf8fb
\uf8f9\uf8ef\uf8f0
\uf8ee
\u2212 88
115
1935
9223
13
91
95
23
cbda
dc
ba
D ** \u2212=\uf8fa\uf8fb
\uf8f9\uf8ef\uf8f0
\uf8ee
=
payncxmbznazmcypbx
pnm
cba
zyx
D ************ \u2212\u2212\u2212++=
\uf8fa\uf8fa
\uf8fa
\uf8fb
\uf8f9
\uf8ef\uf8ef
\uf8ef
\uf8f0
\uf8ee
=
 37
programa que receba as coordenadas dos vértices A, B e C e calcule a área do triângulo. 
ATENÇÃO: Se a determinante D=0 então os três pontos não formam um triângulo, portanto, 
são pontos de uma mesma reta!!! 
 
 
 
 
 
 
 
20. Numa matriz quadrada, os elementos aij tais que i=j formam o que chamamos de diagonal 
principal da matriz. Elabore um programa que imprima os elementos da diagonal principal de 
qualquer matriz mxm. 
21. Dada uma matriz A(mxn), a matriz que se obtém trocando ordenadamente as linhas pelas 
colunas chama-se transposta de A, e é indicada por At (ou por At). Elabore um programa que 
receba uma matriz A(3x2) e crie a matriz At. 
 
 
 
DS
cc
bb
aa
D
ABC
yx
yx
yx
*
2
1
1
1
1
=
\uf8fa\uf8fa
\uf8fa
\uf8fb
\uf8f9
\uf8ef\uf8ef
\uf8ef
\uf8f0
\uf8ee
=
 38
6. MANIPULAÇÃO DE \u201cSTRINGS\u201d 
String é uma cadeia de caracteres armazenadas uma matriz unidimensional (vetor) de 
caracteres finalizada pelo caractere nulo, ou seja, por meio de \u2018\0\u2019, isto é, indica o fim da string. 
Desta forma, deve-se declarar sempre o vetor com uma posição a mais para armazenar o caractere 
nulo. Por exemplo, a seguinte instrução declara um vetor nome que guarda uma string de 10 
caracteres: 
char nome[11]; 
Em programação, é comum o uso de matrizes de string. Para criar uma matriz de 
strings, utiliza-se uma matriz bidimensional de caracteres. O seguinte exemplo apresenta o uso de 
uma matriz de string. 
1. #include <stdlib.h> 
2. #include <stdio.h> 
3. 
4. #define MAX 10 
5. #define LEN 31 
6. 
7. char lista[MAX][LEN]; 
8. 
9. int main(void) 
10. { 
11. int i; 
12. for (i=0; i<MAX; i++) 
13. { 
14. printf(\u201dDigite um nome:\u201d); 
15. scanf(\u201d%s\u201d,lista[i]); 
16. } 
17. for (i=0; i<MAX; i++) 
18. printf(\u201d%d - %s\n\u201d, i+1, lista[i]); 
19. return(0); 
20. } 
 
6.1 Exercícios 
1. Faça um programa que receba uma palavra, calcule e mostre a quantidade de caracteres. 
2. Faça um programa que receba uma palavra, calcule e mostre a quantidade de vogais. 
3. Faça um programa que receba uma palavra, troque todas as vogais por * e apresente o resultado