Jump to content
Sign in to follow this  
AlineFani

estatisca array

Recommended Posts

AlineFani

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();

Share this post


Link to post
Share on other sites
newtoncw

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();

Share this post


Link to post
Share on other sites
AlineFani

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)?

Share this post


Link to post
Share on other sites
AlineFani

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();

Share this post


Link to post
Share on other sites
newtoncw

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  :cheesygrin:

Share this post


Link to post
Share on other sites

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.