none
Calcular a MODA de elementos em uma MATRIZ RRS feed

  • Pergunta

  • Desejo faze rum programa no console.

    O usuário vai definir quantas linhas e colunas a matriz tem.

    Por exemplo Mat[3,2].

    Então, ele será solicitado a digitar os elementos para compor a matriz.

    Preciso calcular os elementos que ele digitou com maior frequência, ou seja, a moda.

    Mat[0,0] = 1

    Mat[0,1] = 2

    Mat[0,2] = 5

    Mat[1,0] = 6

    Mat[1,1] = 5

    Mat[1,2] = 7

    Moda = 5

    Para isso estou chamando uma função para calcular, só que não estou conseguindo comparar os valores.

    Alguém tem uma solução?

    Obrigado.

    segunda-feira, 25 de novembro de 2013 12:48

Respostas

  • Eu nao entendi o que vc quer fazer.. A moda é calculada em um amostragem (um vetor).. O que vc quer fazer é a moda do do conjunto.. ou seja.. vc primeiro vai ter que achar a moda de cada um dos vetores, armazenar em um outro vetor e depois achara a moda deste..

    Aqui um exemplo de codigo para acha a moda de um vetor:

    int[] x = new int[] { 1, 2, 1, 2, 4, 3, 2 };
    
    Dictionary<int, int> counts = new Dictionary<int, int>();
    foreach( int a in x ) {
        if ( counts.ContainsKey(a) )
            counts[a] = counts[a]+1
        else
            counts[a] = 1
    }
    
    int result = int.MinValue;
    int max = int.MinValue;
    foreach (int key in counts.Keys) {
        if (counts[key] > result) {
            max = counts[key];
            result = key;
        }
    }
    
    Console.WriteLine("A moda é: " + result);
    fonte:http://stackoverflow.com/questions/8260555/how-to-find-the-mode-in-array-c

    Att


    William John Adam Trindade
    Analyste-programmeur
    ----------------------------------------------------------

    • Sugerido como Resposta Giovani Cr terça-feira, 26 de novembro de 2013 10:18
    • Marcado como Resposta Giovani Cr quarta-feira, 27 de novembro de 2013 10:28
    segunda-feira, 25 de novembro de 2013 18:13
    Moderador

Todas as Respostas

  • Bom dia, 

    Poderia postar o código da sua função para calcular a moda?

    Att,


    Giovani Cruzara – Microsoft Contingent Staff

    Esse conteúdo é fornecido sem garantias de qualquer tipo, seja expressa ou implícita.

    Msdn Community Support

    Por favor, lembre-se de “Marcar como Resposta” as respostas que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.

    segunda-feira, 25 de novembro de 2013 12:55
  • Sim, irei postar. Segue abaixo:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;

    namespace Trab_Lab_4
    {
        class Program
        {
            static void lerMatriz(ref int x, ref int y)
            {
                Console.Write(" Linhas: ");
                x = int.Parse(Console.ReadLine());

                Console.Write(" Colunas: ");
                y = int.Parse(Console.ReadLine());
            }

            static void recebeElemento(int[,] Mat, ref int x, ref int y)
            {
                for (int l = 0; l < x; l++)
                {
                    for (int c = 0; c < y; c++)
                    {
                        Console.Write("\n" + l + "ª Linha --> ");
                        Console.Write(+c + "ª Coluna: ");
                        Mat[l, c] = int.Parse(Console.ReadLine());
                    }

                }
            }

            static double modaMatriz(int[,] Mat)
            {

                            
                for (int l = 0; l < Mat.GetLength(0); l++)
                {
                    for (int c = 0; c < Mat.GetLength(1); c++)
                    {

                    }

                }

                return moda;

            }


            static void Main(string[] args)
            {
                int linhas = 0, colunas = 0;

                lerMatriz(ref linhas, ref colunas);

                int[,] matriz = new int[linhas, colunas];

                recebeElemento(matriz, ref linhas, ref colunas);

                Console.Write(" \nMODA da matriz: " + modaMatriz(matriz));

                Console.ReadKey();
            }
        }
    }

    segunda-feira, 25 de novembro de 2013 15:15
  • Eu nao entendi o que vc quer fazer.. A moda é calculada em um amostragem (um vetor).. O que vc quer fazer é a moda do do conjunto.. ou seja.. vc primeiro vai ter que achar a moda de cada um dos vetores, armazenar em um outro vetor e depois achara a moda deste..

    Aqui um exemplo de codigo para acha a moda de um vetor:

    int[] x = new int[] { 1, 2, 1, 2, 4, 3, 2 };
    
    Dictionary<int, int> counts = new Dictionary<int, int>();
    foreach( int a in x ) {
        if ( counts.ContainsKey(a) )
            counts[a] = counts[a]+1
        else
            counts[a] = 1
    }
    
    int result = int.MinValue;
    int max = int.MinValue;
    foreach (int key in counts.Keys) {
        if (counts[key] > result) {
            max = counts[key];
            result = key;
        }
    }
    
    Console.WriteLine("A moda é: " + result);
    fonte:http://stackoverflow.com/questions/8260555/how-to-find-the-mode-in-array-c

    Att


    William John Adam Trindade
    Analyste-programmeur
    ----------------------------------------------------------

    • Sugerido como Resposta Giovani Cr terça-feira, 26 de novembro de 2013 10:18
    • Marcado como Resposta Giovani Cr quarta-feira, 27 de novembro de 2013 10:28
    segunda-feira, 25 de novembro de 2013 18:13
    Moderador