Algo
Casos: Algo. Pesquise 862.000+ trabalhos acadêmicosPor: lamanod10s • 16/7/2014 • 1.676 Palavras (7 Páginas) • 916 Visualizações
Vetores e Matrizes
Roteiro:
a) Introdução a vetores e matrizes
b) Arrays
c) Declarando Arrays
d) Exemplos Usando Arrays
e) Passando Arrays a Funções
f) Ordenando Arrays
Estudo de Caso 1: matriz de vendedores e produtos
Use um array bidimensional para resolver o seguinte problema. Uma companhia tem quatro vendedores (1 a 4) que vendem 5 produtos diferentes (1 a 5). Uma vez por dia, cada vendedor elabora um memorando de cada tipo diferente de produto vendido. Cada memorando contém: 1. O número do vendedor 2. O número do produto 3. O valor total em dólares daquele produto vendido naquele dia Dessa forma, cada vendedor elabora de 0 a 5 memorandos de vendas por dia. Admita que as informações de todos os memorandos do último mês estão disponíveis. Escreva um programa que leia todas essas informaçõess das vendas do último mês e faça um resumo do total de vendas por vendedor e por produto. Todos os totais devem ser armazenados no array bidimensional vendas. Depois de processar todas as informações do último mês, imprima os resultados em um formato de tabela com cada coluna representando um vendedor diferente e cada linha representando um produto diferente. Faça a soma dos valores de cada linha para obter as vendas totais de cada produto no último mês; faça a soma dos valores em cada coluna para obter as vendas totais de cada vendedor no último mês. A tabela impressa deve incluir esses totais à direita das linhas somadas e abaixo das colunas somadas.
Estudo de caso 2 sobre classificação otimizada: implementação do algoritmo de bucket
(Classificação de Depósitos) Uma classificação de depósitos começa com um array unidimensional de inteiros positivos a ser classificado e um array bidimensional de inteiros com linhas possuindo subscritos de 0 a 9 e colunas com subscritos de 0 a n - 1, onde n é o número de valores do array a ser classificado. Cada linha do array bidimensional é chamada um depósito (bucket). Escreva uma função bucketClass que utilize um array inteiro e o tamanho do array como argumentos. O algoritmo é o seguinte: 1) Faça um loop pelo array unidimensional e coloque cada um de seus valores em uma linha do array de depósitos, baseado nos dígitos na casa das unidades. Por exemplo, 97 é colocado na linha 7. 3 é colocado na linha 3 e 100 é colocado na linha 0. 2) Faça um loop pelo array de depósitos e copie os valores de volta para o array original. A próxima ordem dos valores acima no array unidimensional será 100, 3 e 97. 3) Repita esse processo para posição subseqüente dos dígitos (dezenas, centenas, milhares etc.) e pare quando o dígito da extremidade esquerda do maior número for processado. Na segunda passada do array, 100 é colocado na linha 0, 3 é colocado na linha 0 (possui apenas um dígito) e 97 é colocado na linha 9. A ordem dos valores no array unidimensional é 100, 3 e 97. Na terceira passada, 100 é colocado na linha 1, 3 é colocado na linha zero e 97 é colocado na linha zero (depois do 3). A classificação de depósito garante a colocação de todos os valores em uma ordem apropriada após o processamento do dígito mais à esquerda do maior número. A classificação de depósito sabe que chegou ao fim quando todos os valores forem copiados na linha zero do array bidimensional. Observe que o array bidimensional de depósitos é dez vezes maior que o tamanho do array inteiro a ser ordenado. Essa técnica de ordenação (classificação) fornece um desempenho melhor do que a classificação de bolhas, mas exige capacidade de armazenamento muito maior. A classificação de bolhas exige apenas um local adicional na memória para o tipo de dados a ser classificado. A classificação de depósitos é um exemplo de troca de espaço por tempo. Ela usa mais memória, mas tem melhor desempenho. Essa versão de classificação de depósitos exige a cópia de todos os dados novamente no array original ao fim de cada passada. Outra possibilidade é criar um segundo array bidimensional de depósitos e mover repetidamente os dados entre os dois arrays de depósitos até que todos os dados estejam copiados na linha zero de um dos arrays. A linha zero conterá então o array ordenado.
Exercício proposto: (Sistema de Reserva Aérea)
Uma pequena companhia aérea acabou de comprar um computador para o seu novo sistema automático de reservas. O presidente pediu a você que programasse o novo sistema em C. Você deve escrever um programa para atribuir assentos a cada vôo do único avião da companhia (capacidade: 10 assentos). Seu programa deve exibir o seguinte menu de alternativas:
Favor digitar 1 para "fumante" Favor digitar 2 para "naofumante"
Se a pessoa digitar 1, seu programa deve fazer a reserva de um assento no setor dos fumantes (assentos 1-5). Se a pessoa digitar 2, seu programa deve reservar um assento no setor de não-fumantes (assentos 6-10).
Os 36 resultados possíveis da jogada de dois dados. Seu programa deve então imprimir um cartão de embarque indicando o número do assento do passageiro e se ele se encontra no setor de fumantes ou de não-fumantes do avião. Use um array unidimensional para representar o esquema dos assentos do avião. Inicialize todos os elementos do array com 0 para indicar que todos os assentos estão livres. A medida que cada assento for reservado, iguale os elementos correspondentes a 1 para indicar que o assento não está mais disponível. Seu programa nunca deve, obviamente, reservar um assento que já tenha sido distribuído. Quando o setor de fumantes estiver lotado, seu programa deve perguntar se a pessoa aceita um lugar no setor de não-fumantes (e vice-versa). Em caso positivo, faça a reserva apropriada do assento. Em caso negativo, imprima a mensagem "Próximo voo sai em 3 horas."
Estudo de caso 2 sobre classificação otimizada: implementação do algoritmo de bucket
(Classificação de Depósitos)
...