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.
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.
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");
}
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