how to count integers in a vector in C #

-1

I need help to run this exercise in C #:

  
  • Construct a program that counts the number of times each element occurs in an integer N vector. For example, in vector A:
    A = {4,2,5,4,3,5,2,2,4}
      4 occurs three times; 2 occurs three times; etc.
  •   
        
    asked by anonymous 12.06.2018 / 22:46

    2 answers

    1

    You can use LINQ. Make a simple, readable, enjoyable code and enjoy your free time for coffee.

    Read this answer to understand how the GroupBy method works in it has everything explained and any more specific doubt you can leave a comment.

    Here's another example of using GroupBy .

    static void Main()
    {
        var a = new [] { 4, 2, 5, 4, 3, 5, 2, 2, 4 };   
        var group = a.GroupBy(i => i).Select(e => new 
        {
            Numero = e.Key,
            Contagem = e.Count()
        });
    
        foreach(var g in group)
            Console.WriteLine($"O número {g.Numero} aparece {g.Contagem} vezes no array");
    }
    

    See working on .NET Fiddle     

    13.06.2018 / 00:12
    0

    Sometimes I like to do these exercise questions that come up, just for college memories, but I'm afraid that, instead of helping, it will get in your way (giving you a glue to solve the task).

    As I imagine there are limitations of the content ... I did using only array , for and int .

    I hope you can understand and learn the code instead of just copying and pasting to earn the grade. I do not have much didactics, but I tried to comment the code to be clearer:

    public class Program
    {
        public static void Main()
        {
            int[] vetor = new int[] {4,2,5,4,3,5,2,2,4}; //Vetor informado
            int[] ns = new int[vetor.Length]; //Vetor que vai armazenar os números contados, de forma distinta
    
            int nDistintos = 0; //Variável para armazenar a quantidade de números distintos
    
            for (int i = 0; i < vetor.Length; i++) //Percorrer todo o vetor
            {
                int flagRepetido = 0; //flag para controlar se o número já foi contado
                for (int k = 0; k < nDistintos; k++) //Percorrer o vetor de números já contados
                {
                    if (ns[k] == vetor[i])
                        flagRepetido = 1; //Se o número atual já estiver no vetor de números contados, marca a flag como 1
                }
    
                if (flagRepetido == 0) //Se a flag for 0, conta...
                {
                    int q = 0; //Variável pra somar toda vez que o número aparecer no vetor
                    for (int j = i ; j < vetor.Length; j++) //Percorro o vetor informado novamente. (Repare que o j inicia com valor de i, pois não é necessário percorrer os números anteriores que já foram calculados)
                    {
                        if (vetor[j] == vetor[i]) //Se o número for igual ao número da posição atual, incrementa a váriavel
                            q++;
                    }
    
                    ns[nDistintos] = vetor[i]; //Armazeno o número que foi calculado
                    nDistintos++; //incremento a variável de números distintos
                    Console.WriteLine("Numero " +  vetor[i] + " aparece " + q + " vezes");
                }
            }
        }
    }
    
      

    Result:

    Numero 4 aparece 3 vezes
    Numero 2 aparece 3 vezes
    Numero 5 aparece 2 vezes
    Numero 3 aparece 1 vezes
    

    See the DotNetFiddle

    ps. I also made one that stores all calculations and then prints: DotNetFiddle

        
    13.06.2018 / 00:31