Baixe o app para aproveitar ainda mais
Prévia do material em texto
PONTIFÍCIA UNIVERSIDADE CATÓLICA DE MINAS GERAIS Instituto de Ciências Exatas e Informática Lista de Exercícios sobre Uso de Arquivos Curso : Sistemas de Informação Disciplina : Laboratório de Computação II Professora : Eveline Alonso Veloso Exemplo: 1) Faça um programa em C# que leia um arquivo texto, de nome “c:/dadosVendedores.txt”, que contém, em cada linha, os seguintes dados: o nome do vendedor; o valor total das vendas realizadas pelo vendedor no período; e o percentual de comissão desse vendedor. Esses dados estão separados, em cada linha, pelo caracter ‘;’. Assuma que existem 5 (cinco) vendedores. Esse programa deve calcular e mostrar na tela o valor total das vendas realizadas por todos os vendedores no período; o maior valor a ser recebido por um vendedor juntamente com o nome do vendedor que o receberá; e o menor valor a ser recebido por um vendedor juntamente com seu nome. Calcule também e grave em um arquivo texto de nome “c:/relatório.txt” os nomes dos vendedores e o valor que cada um deles tem a receber. Esse arquivo deve apresentar as informações de cada vendedor em uma linha. using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Exercicio1 { class Vendedor { public String nome; public int valorTotalVendas; private double percentualComissao; private double valorReceber; public Vendedor(String nomeVendedor, int valorVendas, double comissao){ nome = nomeVendedor; valorTotalVendas = valorVendas; percentualComissao = comissao; valorReceber = valorTotalVendas * percentualComissao / 100; } public double getComissao(){ return (percentualComissao); } public double getValorReceber(){ return (valorReceber); } public void setComissao(double comissao){ percentualComissao = comissao; } public void setValorReceber(double valor){ valorReceber = valor; } } } using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.IO; namespace Exercicio1 { class Program { // número total de vendedores da loja. public const int numVendedores = 5; static void Main(string[] args) { // vetor que armazenará os dados dos vendedores da loja. Vendedor[] vendedores = new Vendedor[numVendedores]; // string auxiliar para onde os dados das linhas lidas do arquivo de entrada serão copiados. String s; int i; double soma; Vendedor vendedorMaiorValor, vendedorMenorValor; // vetor de Strings onde os dados dos vendedores serão armazenados após serem lidos do arquivo de entrada e separados campo por campo. String[] dadosVendedores; // definição do nome, com o caminho completo, do arquivo de entrada, que contém os dados de cada vendedor da loja separados por ";". String nomeArquivoEntrada = "c:/dadosVendedores.txt"; // definição do nome, com o caminho completo, do arquivo de saída, que conterá o relatório com os nomes dos vendedores e o valor que cada um deles terá a receber. String nomeArquivoSaida = "c:/relatorio.txt"; // definição da "stream" de leitura de dados. StreamReader arquivoLeitura; // definição da "stream" para gravação dos dados em arquivo. StreamWriter relatorio; // verifica se o arquivo de entrada existe. if (File.Exists(nomeArquivoEntrada)) { // caso o arquivo de entrada exista, cria a "stream" de leitura que possui como parâmetros o nome do arquivo de entrada e o tipo de codificação. arquivoLeitura = new StreamReader (nomeArquivoEntrada, Encoding.ASCII); // leitura, linha a linha, do arquivo de entrada. s = arquivoLeitura.ReadLine(); i = 0; // a leitura do arquivo de entrada é feita, linha por linha, para a String s. // quando o arquivo termina, a string lida é nula. while (s != null) { // os dados dos vendedores, que foram lidos do arquivo de entrada e armazenados na String s, são "quebrados", campo a campo, utilizando-se o separador de campos ';'. dadosVendedores = s.Split(';'); // armazena os dados lidos dos vendedores no vetor de vendedores. vendedores[i] = new Vendedor(dadosVendedores[0], int.Parse(dadosVendedores[1]), double.Parse(dadosVendedores[2])); // leitura, linha a linha, do arquivo de entrada. s = arquivoLeitura.ReadLine(); i++; } // fecha e libera o arquivo de entrada. arquivoLeitura.Close(); // cria a "stream" de saída que possui como parâmetros o nome do arquivo de saída; a indicação de que as novas informações não serão concatenadas no final do arquivo, caso ele já exista; e o tipo de codificação. relatorio = new StreamWriter (nomeArquivoSaida, false, Encoding.ASCII); vendedorMaiorValor = new Vendedor(vendedores[0].nome, vendedores[0].valorTotalVendas, vendedores[0].getComissao()); vendedorMenorValor = new Vendedor(vendedores[0].nome, vendedores[0].valorTotalVendas, vendedores[0].getComissao()); soma = 0; // escreve sequencialmente no arquivo de saída os dados (nome e valor a receber) dos 5 vendedores. O método é análogo ao da escrita em console. // os vendedores que têm o maior e o menor valores a receber também são identificados, assim como a soma dos valores vendidos por todos os vendedores. for (i = 0; i < numVendedores; i++) { relatorio.WriteLine("O vendedor {0} tem a receber R$ {1}.", vendedores[i].nome, vendedores[i].getValorReceber()); if (vendedores[i].getValorReceber() > vendedorMaiorValor.getValorReceber()) { vendedorMaiorValor.nome = vendedores[i].nome; vendedorMaiorValor.valorTotalVendas = vendedores[i].valorTotalVendas; vendedorMaiorValor.setComissao ( vendedores[i].getComissao()); vendedorMaiorValor.setValorReceber ( vendedores[i].getValorReceber()); } if (vendedores[i].getValorReceber() < vendedorMenorValor.getValorReceber()) { vendedorMenorValor.nome = vendedores[i].nome; vendedorMenorValor.valorTotalVendas = vendedores[i].valorTotalVendas; vendedorMenorValor.setComissao (vendedores[i].getComissao()); vendedorMenorValor.setValorReceber (vendedores[i].getValorReceber()); } soma += vendedores[i].valorTotalVendas; } // fecha e libera o arquivo de saída. relatorio.Close(); Console.WriteLine("O vendedor que possui o maior valor a receber é: {0}. Ele receberá R$ {1}", vendedorMaiorValor.nome, vendedorMaiorValor.getValorReceber()); Console.WriteLine("O vendedor que possui o menor valor a receber é: {0}. Ele receberá R$ {1}", vendedorMenorValor.nome, vendedorMenorValor.getValorReceber()); Console.WriteLine("A soma dos valores vendidos por todos osvendedores é R$ {0}", soma); } else { Console.WriteLine("O arquivo {0} não existe", nomeArquivoEntrada); } Console.ReadKey(); } } } Exercícios: 2) Considere que em uma eleição para prefeito concorrem três candidatos. Cada candidato é identificado por um número inteiro: 1, 2 e 3. Em uma pesquisa eleitoral foi perguntado, a cada entrevistado, em quem ele votaria na próxima eleição para prefeito. Cada entrevistado deu seu voto conforme abaixo: • 1, 2 ou 3: voto para o respectivo candidato; • 4: voto nulo; • 5: indeciso. Faça um programa em C# que leia um arquivo texto, de nome “c:/votos.txt”, que contém, em cada linha, o número correspondente ao voto do entrevistado; calcule e escreva, na tela, o percentual de votos de cada candidato e o percentual de eleitores indecisos. 3) Faça um programa em C# que leia um arquivo texto, de nome “c:/dadosVetores.txt”, que contém os elementos de dois vetores de tamanho 10 (dez). Esse arquivo apresenta, em cada linha, um elemento de cada vetor, separados pelo caracter ‘-’. Assim, a primeira linha do arquivo “c:/dadosVetores.txt” apresenta o primeiro elemento do primeiro vetor e o primeiro elemento do segundo vetor, separados por ‘-’; a segunda linha desse arquivo apresenta o segundo elemento do primeiro vetor e o segundo elemento do segundo vetor, separados por ‘-’; e assim por diante. Esse programa deve gerar um novo arquivo texto, de nome “c:/vetorResultado.txt”, com o vetor resultante da soma dos elementos dos dois vetores de entrada, índice a índice. Exercícios Extra: 4) Faça um programa em C# que leia um arquivo texto, de nome “c:/numeros.txt”, que contém, em cada linha, um número inteiro; conte e imprima, na tela, a quantidade de números pares lidos desse arquivo de entrada e a soma desses números pares. 5) Faça um programa em C# que leia um arquivo texto, de nome “c:/cidades.txt”, que contém os nomes de 5 (cinco) cidades, um em cada linha. Esse programa deve ler também um outro arquivo texto, de nome “c:/distancias.txt”, que contém, em cada linha, as distâncias, em quilômetros, de uma cidade às outras quatro, separadas pelo caracter ‘-’. Assim, a primeira linha do arquivo “c:/distancias.txt” apresenta as distâncias, separadas pelo caracter ‘-’, da primeira cidade à segunda, terceira, quarta e quinta cidades; a segunda linha do arquivo apresenta a distância da segunda cidade à primeira, terceira, quarta e quinta cidades; e assim por diante. Em seguida, esse programa deverá apresentar um menu com as seguintes opções, para o usuário escolher a que ele deseja: • mostrar, na tela, a distância entre duas cidades quaisquer informadas pelo usuário; • mostrar, na tela, o total de quilômetros percorridos em um percurso informado pelo usuário.
Compartilhar