how to count integers in c#

Asked

Viewed 674 times

-2

I need help to perform this exercise in c#:

  1. Create a program that counts the number of times each element occurs in an integer vector of N. For example, in vector A:
    A = {4,2,5,4,3,5,2,2,4}
    4 occurs three times; 2 occurs three times; etc.
  • old i don’t know C# but the shape I visualized is like this: You count how many numbers have the vector and check one by one and by on the variable type for A[1] to N do
 if A[1] = A[2] then
 S := A[1] ocorre N vezes;
mostre S

  • 1

    tried some code ? there is some limitation imposed by the programmatic content ?

  • Here is another similar question and other approaches for you to study https://answall.com/questions/271802/verifi-numero-repeating-dentro-do-array-c

  • 1

3 answers

1

I arrived at this solution, hope to help!

static void Ex_28()
    {
        Console.WriteLine("\n______ Ex 28 ______\n");
        Console.Write("Insira a quantidade de elementos a serem armazenados na matriz: ");
        int qtdeElementos = Convert.ToInt16(Console.ReadLine());
        int[] arrayElementos = new int[qtdeElementos];
        
        Console.WriteLine("Insira {0} elementos na matriz: ", qtdeElementos);
        int elementos = 0;
        int frequencia = 1;
        while(elementos < qtdeElementos)
        {
            Console.Write("elemento {0}: ",elementos);
            arrayElementos[elementos] = Convert.ToInt16(Console.ReadLine());
            elementos ++;
        }
       
        Array.Sort(arrayElementos);

        Console.WriteLine("A Frequência de todos os elementos da Matriz: ");
        for(int i = 0; i < arrayElementos.Length ; i++)
        {   
            if(i < arrayElementos.Length-1)
            {
                if(arrayElementos[i] == arrayElementos[i+1])
                    frequencia++;
                else
                {
                    if(frequencia > 1)    
                        Console.WriteLine($"{arrayElementos[i]} ocorre {frequencia} vezes");
                    
                    else
                        Console.WriteLine($"{arrayElementos[i]} ocorre {frequencia} vez");
                    
                    frequencia = 1;
                }
                
            }
            else
            {
                if(frequencia > 1)    
                    Console.WriteLine($"{arrayElementos[i]} ocorre {frequencia} vezes");
                    
                else
                    Console.WriteLine($"{arrayElementos[i]} ocorre {frequencia} vez");
                
                frequencia = 1;
            }
        }                       
        Console.ReadKey();
    }

1

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

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

In this answer is another example of the use of 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

0

Sometimes I like to ask these questions of exercises that appear, only for memories of college, but I’m afraid to, instead of helping, disturb you (giving you a glue to solve the task).

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

I hope you can understand and learn the code instead of just copy and paste to earn the grade. I don’t have much teaching, but I tried to comment on 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");
            }
        }
    }
}

Upshot:

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

See on Dotnetfiddle

ps. I also made one that stores all calculations for later print: Dotnetfiddle

Browser other questions tagged

You are not signed in. Login or sign up in order to post.