AlineFani Posted December 27, 2010 at 12:28 PM Report #360267 Posted December 27, 2010 at 12:28 PM Boa tarde, Estou a criar um programa para um projecto escolar, na parte da estatística é pedido para apresentar o distrito com menor e maior numero de chamadas, como podem ver no código em c# eu sei comparar os valores de chamadas que cada um dos distritos tem, mas não estou a ver como depois ao apresentar a informação vou associar o valor ao distrito em questão.Alguma sugestão? using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.IO; namespace ConsoleApplication2 { class Program { static void Main(string[] args) { String line; int count1,count2,count3,count4,count5,count6,count7,count8,count9,count10,count11,count12,count13,count14,count15,count16,count17,count18; StreamReader sr = new StreamReader("C:\\temp\\0001.txt"); line = sr.ReadLine(); count1 = 0; while (line != null) { count1 = count1 + 1; line = sr.ReadLine(); } sr.Close(); StreamReader sr2 = new StreamReader("C:\\temp\\0002.txt"); line = sr2.ReadLine(); count2 = 0; while (line != null) { count2 = count2 + 1; line = sr2.ReadLine(); } sr2.Close(); StreamReader sr3 = new StreamReader("C:\\temp\\0003.txt"); line = sr3.ReadLine(); count3 = 0; while (line != null) { count3 = count3 + 1; line = sr3.ReadLine(); } sr3.Close(); StreamReader sr4 = new StreamReader("C:\\temp\\0004.txt"); line = sr4.ReadLine(); count4 = 0; while (line != null) { count4 = count4 + 1; line = sr4.ReadLine(); } sr4.Close(); StreamReader sr5 = new StreamReader("C:\\temp\\0005.txt"); line = sr5.ReadLine(); count5 = 0; while (line != null) { count5 = count5 + 1; line = sr5.ReadLine(); } sr5.Close(); StreamReader sr6 = new StreamReader("C:\\temp\\0006.txt"); line = sr6.ReadLine(); count6 = 0; while (line != null) { count6 = count6 + 1; line = sr6.ReadLine(); } sr6.Close(); StreamReader sr7 = new StreamReader("C:\\temp\\0007.txt"); line = sr7.ReadLine(); count7 = 0; while (line != null) { count7 = count7 + 1; line = sr7.ReadLine(); } sr7.Close(); StreamReader sr8 = new StreamReader("C:\\temp\\0008.txt"); line = sr8.ReadLine(); count8 = 0; while (line != null) { count8 = count8 + 1; line = sr8.ReadLine(); } sr8.Close(); StreamReader sr9 = new StreamReader("C:\\temp\\0009.txt"); line = sr9.ReadLine(); count9 = 0; while (line != null) { count9 = count9 + 1; line = sr9.ReadLine(); } sr9.Close(); StreamReader sr10 = new StreamReader("C:\\temp\\0010.txt"); line = sr10.ReadLine(); count10 = 0; while (line != null) { count10 = count10 + 1; line = sr10.ReadLine(); } sr10.Close(); StreamReader sr11 = new StreamReader("C:\\temp\\0011.txt"); line = sr11.ReadLine(); count11 = 0; while (line != null) { count11 = count11 + 1; line = sr11.ReadLine(); } sr11.Close(); StreamReader sr12 = new StreamReader("C:\\temp\\0012.txt"); line = sr12.ReadLine(); count12 = 0; while (line != null) { count12 = count12 + 1; line = sr12.ReadLine(); } sr12.Close(); StreamReader sr13 = new StreamReader("C:\\temp\\0013.txt"); line = sr13.ReadLine(); count13 = 0; while (line != null) { count13 = count13 + 1; line = sr13.ReadLine(); } sr13.Close(); StreamReader sr14 = new StreamReader("C:\\temp\\0014.txt"); line = sr14.ReadLine(); count14 = 0; while (line != null) { count14 = count14 + 1; line = sr14.ReadLine(); } sr14.Close(); StreamReader sr15 = new StreamReader("C:\\temp\\0015.txt"); line = sr15.ReadLine(); count15 = 0; while (line != null) { count15 = count15 + 1; line = sr15.ReadLine(); } sr15.Close(); StreamReader sr16 = new StreamReader("C:\\temp\\0016.txt"); line = sr16.ReadLine(); count16 = 0; while (line != null) { count16 = count16 + 1; line = sr16.ReadLine(); } sr16.Close(); StreamReader sr17 = new StreamReader("C:\\temp\\0017.txt"); line = sr17.ReadLine(); count17 = 0; while (line != null) { count17 = count17 + 1; line = sr17.ReadLine(); } sr17.Close(); StreamReader sr18 = new StreamReader("C:\\temp\\0018.txt"); line = sr18.ReadLine(); count18 = 0; while (line != null) { count18 = count18 + 1; line = sr18.ReadLine(); } sr18.Close(); Console.WriteLine("o numero de chamadas do distrito 0001 é {0}", count1); Console.WriteLine("o numero de chamadas do distrito 0002 é {0}", count2); Console.WriteLine("o numero de chamadas do distrito 0003 é {0}", count3); Console.WriteLine("o numero de chamadas do distrito 0004 é {0}", count4); Console.WriteLine("o numero de chamadas do distrito 0005 é {0}", count5); Console.WriteLine("o numero de chamadas do distrito 0006 é {0}", count6); Console.WriteLine("o numero de chamadas do distrito 0007 é {0}", count7); Console.WriteLine("o numero de chamadas do distrito 0008 é {0}", count8); Console.WriteLine("o numero de chamadas do distrito 0009 é {0}", count9); Console.WriteLine("o numero de chamadas do distrito 0010 é {0}", count10); Console.WriteLine("o numero de chamadas do distrito 0011 é {0}", count11); Console.WriteLine("o numero de chamadas do distrito 0012 é {0}", count12); Console.WriteLine("o numero de chamadas do distrito 0013 é {0}", count13); Console.WriteLine("o numero de chamadas do distrito 0014 é {0}", count14); Console.WriteLine("o numero de chamadas do distrito 0015 é {0}", count15); Console.WriteLine("o numero de chamadas do distrito 0016 é {0}", count16); Console.WriteLine("o numero de chamadas do distrito 0017 é {0}", count17); Console.WriteLine("o numero de chamadas do distrito 0018 é {0}", count18); //numero de chamadas total Console.WriteLine("o numero total de chamadas em todos os distrito é {0}", count1+count2+count3+count4+count5+count6+count7+count8+count9+count10+count11+count12+count13+count14+count15+count16+count17+count18); Console.ReadLine(); //distrito com maior e menor numero de chamadas int mais_chamadas, menos_chamadas; int[] contadores = new int[17]; int i; mais_chamadas = count1; menos_chamadas = count1; contadores[0] = count2; contadores[1] = count3; contadores[2] = count4; contadores[3] = count5; contadores[4] = count6; contadores[5] = count7; contadores[6] = count8; contadores[7] = count9; contadores[8] = count10; contadores[9] = count11; contadores[10] = count12; contadores[11] = count13; contadores[12] = count14; contadores[13] = count15; contadores[14] = count16; contadores[15] = count17; contadores[16] = count18; for (i = 0; i < 17; i++) { if (i > mais_chamadas) { mais_chamadas = i; } Console.WriteLine("O maior numero de chamadas é: {0}", mais_chamadas); Console.ReadLine();
newtoncw Posted December 27, 2010 at 02:39 PM Report #360292 Posted December 27, 2010 at 02:39 PM Tem um erro no teu código, você está comparando o número de chamadas com o índice do vetor. Tente desta forma mais_chamadas = 0; menos_chamadas = 0; for(i = 1; i < 17; i++){ if(contadores[i] > contadores[mais_chamadas]) mais_chamadas = i; else if(contadores[i] < contadores[menos_chamadas]) menos_chamadas = i; } Console.WriteLine("O mair número de chamadas é {0}", contadores[mais_chamadas]); Console.WriteLine("O menor número de chamadas é {0}", contadores[menor_chamadas]); Console.ReadLine();
AlineFani Posted December 28, 2010 at 09:33 AM Author Report #360450 Posted December 28, 2010 at 09:33 AM Obrigado,mas da forma que eu tinha tb funcionava e no teu código tens de ter em conta que nesse caso teria de adicionar mais um contador ao array e no ciclo FOR tenho de começar de 0 e ir até <18.De qualquer das formas fiz uma pequena alteração para o meu código ficar mais parecido com o teu.O meu problema é que eu não quero saber qual o menor e maior numero de chamadas, quer dizer eu quero saber qual o menor e o maior numero, mas o que mais me importa é dizer em que distrito isso ocorre. Algo do tipo: o maior numero de chamadas é x e ocorreu no distrito 0001 por exemplo. Alguma ideia de como o faço? Será possivel associar uma função a cada casa do array contadores que retorne uma string com o respectivo código de distrito(0001,0002,etc)?
AlineFani Posted December 28, 2010 at 11:18 AM Author Report #360460 Posted December 28, 2010 at 11:18 AM Bom dia,já arranjei uma solução.Obrigado a quem respondeu,embora não fosse o que eu pretendia, pelo menos foi alguma coisa, se souberem de uma forma mais eficiente para poder "compactar o código" estejam à vontade para sugerir. //distrito com maior e menor numero de chamadas int mais_chamadas, menos_chamadas; int[] contadores = new int[18]; int i; contadores[0] = count1; contadores[1] = count2; contadores[2] = count3; contadores[3] = count4; contadores[4] = count5; contadores[5] = count6; contadores[6] = count7; contadores[7] = count8; contadores[8] = count9; contadores[9] = count10; contadores[10] = count11; contadores[11] = count12; contadores[12] = count13; contadores[13] = count14; contadores[14] = count15; contadores[15] = count16; contadores[16] = count17; contadores[17] = count18; mais_chamadas = 0; menos_chamadas = 0; for(i = 0; i < 18; i++) { if(contadores[i] > contadores[mais_chamadas]) mais_chamadas = i; else if(contadores[i] < contadores[menos_chamadas]) menos_chamadas = i; } Console.WriteLine("Os distritos com maior numero de chamadas, sendo o número destas {0}, são:",contadores[mais_chamadas]); Console.WriteLine("________________________________________________"); if (contadores[mais_chamadas] == contadores[0]) Console.WriteLine("0001"); if (contadores[mais_chamadas] == contadores[1]) Console.WriteLine("0002"); if (contadores[mais_chamadas] == contadores[2]) Console.WriteLine("0003"); if (contadores[mais_chamadas] == contadores[3]) Console.WriteLine("0004"); if (contadores[mais_chamadas] == contadores[4]) Console.WriteLine("0005"); if (contadores[mais_chamadas] == contadores[5]) Console.WriteLine("0006"); if (contadores[mais_chamadas] == contadores[6]) Console.WriteLine("0007"); if (contadores[mais_chamadas] == contadores[7]) Console.WriteLine("0008"); if (contadores[mais_chamadas] == contadores[8]) Console.WriteLine("0009"); if (contadores[mais_chamadas] == contadores[9]) Console.WriteLine("0010"); if (contadores[mais_chamadas] == contadores[10]) Console.WriteLine("0011"); if (contadores[mais_chamadas] == contadores[11]) Console.WriteLine("0012"); if (contadores[mais_chamadas] == contadores[12]) Console.WriteLine("0013"); if (contadores[mais_chamadas] == contadores[13]) Console.WriteLine("0014"); if (contadores[mais_chamadas] == contadores[14]) Console.WriteLine("0015"); if (contadores[mais_chamadas] == contadores[15]) Console.WriteLine("0016"); if (contadores[mais_chamadas] == contadores[16]) Console.WriteLine("0017"); if (contadores[mais_chamadas] == contadores[17]) Console.WriteLine("0018"); Console.WriteLine("________________________________________________"); Console.WriteLine("Os distritos com menor número de chamadas, sendo o número destas {0}, são:", contadores[menos_chamadas]); Console.WriteLine("________________________________________________"); if (contadores[menos_chamadas] == contadores[0]) Console.WriteLine("0001"); if (contadores[menos_chamadas] == contadores[1]) Console.WriteLine("0002"); if (contadores[menos_chamadas] == contadores[2]) Console.WriteLine("0003"); if (contadores[menos_chamadas] == contadores[3]) Console.WriteLine("0004"); if (contadores[menos_chamadas] == contadores[4]) Console.WriteLine("0005"); if (contadores[menos_chamadas] == contadores[5]) Console.WriteLine("0006"); if (contadores[menos_chamadas] == contadores[6]) Console.WriteLine("0007"); if (contadores[menos_chamadas] == contadores[7]) Console.WriteLine("0008"); if (contadores[menos_chamadas] == contadores[8]) Console.WriteLine("0009"); if (contadores[menos_chamadas] == contadores[9]) Console.WriteLine("0010"); if (contadores[menos_chamadas] == contadores[10]) Console.WriteLine("0011"); if (contadores[menos_chamadas] == contadores[11]) Console.WriteLine("0012"); if (contadores[menos_chamadas] == contadores[12]) Console.WriteLine("0013"); if (contadores[menos_chamadas] == contadores[13]) Console.WriteLine("0014"); if (contadores[menos_chamadas] == contadores[14]) Console.WriteLine("0015"); if (contadores[menos_chamadas] == contadores[15]) Console.WriteLine("0016"); if (contadores[menos_chamadas] == contadores[16]) Console.WriteLine("0017"); if (contadores[menos_chamadas] == contadores[17]) Console.WriteLine("0018"); Console.WriteLine("________________________________________________"); Console.ReadLine();
newtoncw Posted December 29, 2010 at 07:41 PM Report #360795 Posted December 29, 2010 at 07:41 PM Certo, mas tem duas coisas que dá pra melhorar 1. O laço for pode começar de 1, pois já são atribuídas às variávels mais_chamadas e menos_chamadas o valor zero, indicando a primeira posição do vetor, assim, não precisa efetuar a comparação com o item da posição zero do vetor. 2. Para imprimir qual foi o distrito, ao invés de utilizar este conjunto de if's, pode simplificar da seguinte forma: Console.WriteLine("O distrito com maior número de chamadas, sendo o número destas {0}, é: {1}", contadores[mais_chamadas], mais_chamadas+1); Console.WriteLine("O distrito com menor número de chamadas, sendo o número destas {0}, é: {1}", contadores[menos_chamadas], menos_chamadas+1); O teu código da forma como está, só está retornando um distrito com mais ou menos chamadas, assim, se você tiver dois destes na mesma situação, só será apresentado um deles. Para apresentar todos os distritos com mais/menos chamadas (sendo mais de um), armazene estes valores em um outro vetor. Precisando de mais alguma coisa, é só pedir 😁
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now