Programação C - Vetores / Matrizes / Strings
Um conceito muito utilizado em programação é o de Matriz. Ou Vetores e Matrizes como aparece em muitas literaturas, o que não deixa de ser a mesma coisa. Matriz não é a declaração de um novo tipo de dado em programação, mas sim um meio de trabalharmos com "n" variáveis de um mesmo tipo.
Imagine a necessidade de armazenar a idade de 100 pessoas. Em um primeiro momento podemos pensar em declara 100 variáveis do tipo inteiro, mas o que na verdade fazemos, é declarar "um vetor de inteiros com 100 posições". E onde entra a questão das "Strings"? Na verdade, uma "String" é um vetor de caracteres que tem um modo próprio de trabalho.
Na literatura iremos encontrar muito sobre "Vetores", que é a mesma coisa que Matriz Unidimensional (matriz com uma dimensão apenas). O objetivo é declararmos uma variável que possa receber um número expressivo de valores "do mesmo tipo". Declarando uma variável vetor de 7 posições do tipo inteiro. Atentos para uma questão muito importante, o primeiro elemento do vetor, que está na 1ª posição, para a linguem C ele está no "índice 0" (zero).
índice 0 índice 1 índice 2 índice 3 índice 4 índice 5 índice 6
1ª posição 2ª posição 3ª posição 4ª posição 5ª posição 6ª posição 7ª posição
Com relação a Matriz Multidimensional, podemos encontrar na literatura as nomenclaturas: Matriz Bidimensional (2 dimensões), Matriz Tridimensional (3 dimensões), e assim por diante. Mas o comum é utilizarmos apenas a palavra Matriz. Ou se preferir, Matriz com 1, 2, 3, 4, 5 dimensões. Sim, uma matriz pode ter quantas dimensões quisermos, o problema está na nossa abstração com relação a disposição dos dados, pois na hora de programarmos podemos nos perder fácil, fácil.
Em matrizes bidimensionais, definimos primeiro o número de linhas e em seguida o número de colunas. Em matrizes tridimensionais, definimos primeiro o número de linhas, em seguida o número de colunas e por último a profundidade.
Exemplo de matriz bidimensional: int mat[4][4];
Exemplo de matriz tridimensional: int mat[3][3][3];
Rotina de exemplo:
Matriz Unidimensional – String
Uma String é um Vetor de caracteres, onde cada caracter de uma palavra ou frase estará em uma posição do Vetor. Com um detalhe muito importante: "O último caracter armazenado deverá obrigatoriamente ser o caracter de final de linha \n". Com a utilização do caracter de final de linha, as funções que trabalham com as strings em C têm como saber onde acaba a informação armazenada.
A declaração de uma string é: char nome[9];
índice 0 índice 1 índice 2 índice 3 índice 4 índice 5 índice 6 Índice 7 Índice 8
o r l e i \n
1ª posição 2ª posição 3ª posição 4ª posição 5ª posição 6ª posição 7ª posição 8ª posição 9ª posição
Char texto[4][10];
0 a u l a s \n
1 p r o g r a m a ç \n
2 e m \n
3 c \n
1) Faça um programa que carregue um vetor com 15 posições, calcule e mostre: a) O maior elemento do vetor e em que posição esse elemento se encontra; b) O menor elemento do vetor e em que posição esse elemento se encontra.
2) Faça um programa que receba 20 números inteiros quaisquer e carregue em um vetor. Após receber os números, ordenar o vetor e apresente os números ordenados.
3) Uma escola deseja saber se existem alunos cursando, simultaneamente, as disciplinas Lógica e Linguagem de Programação. Coloque os números das matrículas dos alunos que cursam Lógica em um vetor, no máximo 15 alunos. Coloque os números das matrículas dos alunos que cursam Linguagem de programação em outro vetor, no máximo dez alunos. Mostre o número da matrícula que aparece nos dois vetores.
4) Faça um programa que receba dez números inteiros e armazene-os em um vetor. Calcule e mostre dois vetores resultantes. O primeiro com os números pares e o segundo com os números ímpares.
5) Faça um programa que receba o total das vendas de cada vendedor e armazene-as em um vetor. Receba também o percentual de comissão de cada vendedor e armazene-os em outro vetor. Receba os nomes desses vendedores e armazene-os em um terceiro vetor. Existem apenas dez vendedores. Calcule e mostre:
a) Um relatório com os nomes dos vendedores e os valores a receber;
b) Total das vendas de todos os vendedores;
c) O maior valor a receber e quem o receberá;
d) O menor valor a receber e quem o receberá.
6) Faça um programa que carregue três vetores com dez posições cada um. O primeiro vetor com o nome de dez produtos. O segundo vetor com os códigos dos dez produtos e o terceiro vetor com os preços dos produtos. Mostre um relatório apenas com o nome, o código, o preço e o novo preço dos produtos que sofrerão aumento. Sabe se que os produtos que sofrerão aumento são aqueles que possuem código par ou preço superior a R$1000,00. Sabe- se ainda que se o produto satisfaz as duas condições acima, (código e preço), o aumento de preço será de 20%; se satisfaz apenas a condição de código; o aumento será de 15%; se satisfaz apenas a condição de preço, o aumento será de 10%.
7) Faça um programa que carregue um vetor com sete números inteiros, calcule e mostre: a) Os números múltiplos de 2; b) Os números múltiplos de 3; c) Os números múltiplos de 2 e de 3.
8) Faça um programa que carregue um vetor com 15 elementos inteiros e verifique a existência de elementos iguais a 30, mostrando as posições em que esses elementos apareceram.
9) Faça um programa que carregue um vetor com dez números reais, calcule e mostre a quantidade de números negativos e a soma dos números positivos desse vetor.
10) Escrever um algoritmo que lê um vetor com 20 elementos e o escreve. A seguir, mostre cada um dos valores distintos que aparecem no vetor, dizendo quantas vezes cada valor aparece.
11) Faça um programa que carregue uma matriz 5x5 com números inteiros, calcule e mostra a soma:
a) Dos elementos da linha 4;
b) Dos elementos da coluna 2;
c) Dos elementos da diagonal principal;
d) Dos elementos da diagonal secundária;
12) Faça um programa que carregue uma matriz 12x4 com os valores das vendas de uma loja, onde cada linha representa um mês do ano e cada coluna representa uma semana do mês. Calcule e mostre:
a) O total vendido em cada mês do ano, mostrando o nome do mês por extenso;
b) O total vendido em cada semana durante todo o ano;
c) O total vendido pela loja no ano.
13) Faça um programa que carregue uma matriz 4x5, calcule e mostre um vetor com cinco posições, onde cada posição contém a soma dos elementos de cada coluna da matriz. Mostre apenas os elementos do vetor maiores que dez. Se não existir nenhum elemento maior que dez mostre uma mensagem.
14) Faça um programa que carregue uma matriz 6x4. Recalcule a matriz digitada, onde cada linha será multiplicada pelo maior elemento da linha em questão. Mostre a matriz resultante.
15) Faça um programa que carregue uma matriz 5x5 de números reais. A seguir, multiplique cada linha pelo elemento da diagonal principal daquela linha. Mostre a matriz após as multiplicações.
16) Faça um programa que carregue uma matriz 3x4, calcule e mostre:
a) A quantidade de elementos pares;
b) A soma dos elementos ímpares;
c) A média de todos os elementos.
17) Faça um programa que carregue uma matriz 20x10 com números inteiros e some cada uma das colunas, armazenando o resultado da soma em um vetor. A seguir, multiplique cada elemento da matriz pela soma da coluna e mostre a matriz resultante.
18) Faça um programa que carregue uma matriz 2x4 com números inteiros, calcule e mostre:
a) A quantidade de elementos entre 12 e 20 em cada linha;
b) A média dos elementos pares da matriz.
20) Faça um programa que receba os preços de 20 produtos em cinco lojas diferentes e armazene-os um uma matriz 20x5. Desconsiderando empates, mostre o número do produto e o número da loja do produto mais caro.
21) Faça um programa que receba: As notas de 15ª alunos em cinco provas diferentes e armazene-as em uma matriz 15x5; Os nomes dos 15 alunos e armazene-os em um vetor de 15 posições. Calcule e mostre:
a) Para cada aluno, o nome, a média aritmética das cinco provas e a situação (Aprovado, Reprovado ou Exame);