A maior rede de estudos do Brasil

Grátis
120 pág.
ApostilaANSI-C

Pré-visualização | Página 22 de 27

printf("TOTAL DE VENDAS %7.2f\n", totalVendido); 
 
 printf("\n\n"); 
 system("pause"); 
 return 0; 
} 
 
10.4 Reescreva o Programa 39 simulando um mês de vendas de uma loja. A loja 
possui no máximo 250 produtos. Os preços dos produtos vendidos variam entre 
7,00 a 125,00. O número máximo de clientes que entram na loja em um dia é 40. 
Cada cliente compra apenas um produto. 
 
CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS 
Departamento de Ensino do 2o grau - Coordenação de Eletrônica 
Disciplina: Laboratório de Introdução a Programação 
Professora: Rosângela Fátima da Silva 
 
 
97 
 
Devem ser gerados aleatoriamente: 
1. O número de produtos existente na loja. 
2. O preço de cada produto. 
3. O número de dias do mês (28, 29, 30 ou 31) 
4. O numero de clientes que entra na loja. 
5. O produto comprado pelo cliente. 
 
O programa deve produzir o balanço final do mês apresentando: 
1. O número total de clientes 
2. O número médio de clientes 
3. O valor médio das compras por cliente 
4. O número e o preço do produto mais comprado e menos comprado 
5.O faturamento médio da loja 
 
10.5 Elabore um fluxograma e um programa em C que use o método bubble sort 
para ordenar um vetor. O método consiste em fazer várias passagens de 
verificação pelo vetor, enquanto houver um par de valores consecutivos fora de 
ordem, estes valores devem ser trocados de posição no vetor. O programa 
termina quando em uma passagem não houver mais trocas. Teste o programa 
para vetores gerados aleatoriamente. 
 
10.6 Elabore um fluxograma e um programa em C que identifique em um vetor 
qual é a pessoa mais pesada e a mais leve. O tamanho do vetor e o peso das 
pessoas devem ser gerados aleatoriamente. O programa deve produzir o seguinte 
relatório: 
A pessoa número xxx e' a mais pesada (peso = xxx.x Kg) 
A pessoa número xxx e' a mais leve (peso = xxx.x Kg) 
 
 
CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS 
Departamento de Ensino do 2o grau - Coordenação de Eletrônica 
Disciplina: Laboratório de Introdução a Programação 
Professora: Rosângela Fátima da Silva 
 
 
98 
AULA PRÁTICA 11 
 
 
OBJETIVO: 
 
� Estudar matrizes. 
 
 
INTRODUÇÃO 
 
Na aula prática anterior estudamos os vetores, um dos nomes atribuido a uma 
variável indexada de uma dimensão. As variáveis indexadas podem conter 
qualquer dimensão. Quando possuem duas ou mais dimensões chamamos de 
matrizes, embora pudessemos dizer que um vetor é uma matriz unidimensional. 
 
 
MATRIZES 
A forma geral da declaração de uma matriz é: 
<tipo_da_matriz> <nome_da_matriz [ind_1][ind_2]...[ind_N]>; 
É uma matriz N_dimensional. Os índices variam de zero ao valor declarado menos 
um. Por exemplo, o primeiro índice da matriz declarada anteriormente, varia de 0 à 
(ind_1 – 1). É tarefa do programador manter os índices na faixa permitida. 
Para o preenchimento ou a leitura de uma matriz na linguagem C, é importante 
mencionar que o índice da direita varia mais rapidamente. Em uma matriz 
bidimensional, matriz[Lin][Col], para cada linha é necessário varrer (Col – 1) 
colunas. 
Um exemplo de uma matriz bidirecional é apresentado a seguir: 
#include <stdio.h> 
#include <stdlib.h> 
 
/***************************************************************************** 
Programa 40 
Este programa demonstra o preenchimento e a leitura de uma matriz 
bidirecional 2x3. 
 
******************************************************************************/ 
int main () 
{ 
 int mtr [2][3]; 
 int lin,col,cont; 
 cont=1; 
 
CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS 
Departamento de Ensino do 2o grau - Coordenação de Eletrônica 
Disciplina: Laboratório de Introdução a Programação 
Professora: Rosângela Fátima da Silva 
 
 
99 
 
 for (lin=0;lin<2;lin++) 
 for (col=0;col<3;col++) 
 { 
 mtr[lin][col]=cont; 
 cont++; 
 } 
 for (lin=0;lin<2;lin++) 
 { 
 for (col=0;col<3;col++) 
 printf(“%d ”, mtr[lin][col]); 
 printf(“\n”); 
 } 
printf(“\n\n”); 
system(“pause”); 
return(0); 
} 
Em uma matriz bidirecional o índice da esquerda indexa as linhas e o da direita 
indexa as colunas. Como já sabemos, o índice mais à direita varia mais 
rapidamente que o índice à esquerda. Então, no Problema 40, podemos observar 
que as linhas representam o for externo e as colunas o for interno, que mais varia. 
Para cada uma das duas linhas ocorre a varredura de três colunas. 
Matrizes de strings 
Imagine uma string. Ela é um vetor tipo char. Se fizermos um vetor de strings 
estaremos teremos uma matriz bidirecional de chars A forma geral de uma matriz 
de strings é: 
char <nome_da_ matriz [num_de_strings][compr_das_strings]>; 
Aí surge a pergunta: como acessar uma string individual? Fácil. Use apenas o 
primeiro índice. Então, para acessar uma determinada string faça: 
nome_da_matriz [num_de_strings] 
Dê uma olhadinha no exemplo a seguir: 
#include <stdio.h> 
#include <stdlib.h> 
 
/***************************************************************************** 
Programa 41 
Este programa faz a leitura de 5 strings que são armazenadas em 
uma matriz e em seguida elas são exibidas na tela. 
 
******************************************************************************/ 
 
CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS 
Departamento de Ensino do 2o grau - Coordenação de Eletrônica 
Disciplina: Laboratório de Introdução a Programação 
Professora: Rosângela Fátima da Silva 
 
 
100 
int main () 
{ 
 char strings [5][100]; 
 int cont; 
 for (cont=0;cont<5;cont++) 
 { 
 printf ("\n\nDigite uma string: "); 
 gets (strings[cont]); 
 } 
 printf ("\n\n\nAs strings que você digitou foram:\n\n"); 
 for (cont=0;cont<5;cont++) 
 printf ("%s\n",strings[cont]); 
 printf ("\n\n"); 
 system("pause"); 
 return(0); 
} 
 
Inicialização de matrizes 
Podemos inicializar matrizes, assim como podemos inicializar variáveis. A forma 
geral de uma matriz com inicialização é: 
<tipo_da_matriz> <nome_da_matriz [tam1][tam2] ... [tamN]> = <{lista_de_valores}>; 
A lista de valores é composta por valores (do mesmo tipo da matriz) separados 
por vírgula. Os valores devem ser dispostos na ordem em que serão colocados na 
matriz. Abaixo vemos alguns exemplos de inicialização de matrizes: 
float veI [4] = { 1.3, 4.5, 2.7, 4.1}; 
int mtr [3][2] = { 1, 1, 2, 2, 3, 3}; 
char str [10] = { 'C', 'E', 'F', 'E', 'T','\0' }; 
char str [10] = "CEFET"; 
char str_vect [3][10] = { "CEFET", "MINAS", "GERAIS" }; 
O primeiro exemplo demonstra inicialização de vetores. O segundo apresenta a 
inicialização de uma matriz multidimensional, onde mtr está sendo inicializada 
com 1 e 1 em sua primeira linha, 2 e 2 na segunda linha e 3 e 3 na última linha. 
No terceiro e quarto exemplo vemos formas distintas de inicializar uma string. O 
quinto exemplo combina as duas técnicas anteriores para inicializar um vetor de 
strings. Repare que devemos incluir o “;” no final da inicialização. 
Podemos, em alguns casos, inicializar matrizes das quais não sabemos o 
tamanho a priori. Observe os exemplos a seguir: 
 char str[ ] = "Linguagem C: flexibilidade e poder."; 
 int mtr [ ][2] = { 1,1,2,2,3,3}; 
 
No primeiro exemplo, o compilador C contará o número de caracteres da string 
(str) e determinará um vetor de tamanho 36. No segundo exemplo, o valor não 
 
CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS 
Departamento de Ensino do 2o grau - Coordenação de Eletrônica 
Disciplina: Laboratório de Introdução a Programação 
Professora: Rosângela Fátima da Silva 
 
 
101 
especificado será 3. A determinação desses valores ocorre no instante da 
compilação e não poderá mais ser mudado durante a execução do programa, 
sendo muito útil, por exemplo, quando vamos inicializar uma string e não 
queremos contar quantos caracteres serão necessários. 
 
 
ATIVIDADES 
 
11.1 A produção diária de uma fábrica é armazenada, semana a semana, em uma