Jump to content
Matheus Bispo

[Resolvido] NÃO RECONHECE DADOS DO VETOR

Recommended Posts

Olá FÓRUM, boa noite.

 

Estou tentando desenvolver um pequeno código de KNN, para minha aula de IA, mas estou com um pequeno problema na hora de exibir o sexo da pessoa. 

 

No comando IF, ele não reconhece o valor do 2° item dentro do código.

 

if(valores[ i ] < valores[ j ])

 

o vetor com o i, ele consegue trazer os dados corretos, mas o com j, ele não traz o valor correto, traz o valor de 0.

 

Mas, quando o i, dando um incremento, passando a assumir o valor de j da rodada passada, aí ele consegue trazer o valor que está naquela casa correto. E o j continua trazendo valor 0.

 

Já tentei também com i+1 lá dentro e não resolve. 

 

O que estaria acontecendo ? 

 

Segue abaixo o meu código:

 

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

namespace bispoKNN
{
    class Program
    {
        static void Main(string[] args)
        {
           
            List<Pessoa> pessoas = new List<Pessoa>();

            pessoas.Add(new Pessoa("Mulher", 1.56, 48, 20));
            pessoas.Add(new Pessoa("Mulher", 1.50, 45, 22));
            pessoas.Add(new Pessoa("Mulher", 1.65, 55, 16));
            pessoas.Add(new Pessoa("Homem", 1.75, 65, 7));
            pessoas.Add(new Pessoa("Homem", 1.80, 75, 8));
            pessoas.Add(new Pessoa("Homem", 1.90, 80, 5));

            double[] desconhecido = {1.60, 60, 13};

            Classifier(pessoas, desconhecido);

            Console.ReadKey();
        }

        private static void Classifier(List<Pessoa> pessoas, double[] features)
        {
            int i = 0;
            int j = i+1;
            double[] valores = new double[10];
            string genero = pessoas.Nome;

            while (i < pessoas.Count)
            {
               valores = Distance(pessoas.Features, features);
               Console.WriteLine("Distância {0}  do Gênero {1}", valores, pessoas.Nome);
               if (i < (pessoas.Count - 1))
               {
                 if (valores < valores[j])
                 {
                    genero = pessoas.Nome;
                 }
                 else
                 {
                    genero = pessoas[j].Nome;
                 }
               }
               else
               {
                 j = i - 1;
                 if (valores < valores[j])
                 {
                   genero = pessoas.Nome;
                 }
                 else
                 {
                   genero = pessoas[j].Nome;
                 }
               }
     
            i++;
            }
            Console.WriteLine("");
            Console.WriteLine("É do Sexo "+ genero +".");
        }

        private static double Distance(double[] a, double[]b)
        {
            double sum = 0.0;

            int i = 0;

            while (i < a.Length)
            {
                sum += Math.Pow(a - b, 2);
                i++;
            }

            return Math.Sqrt(sum);
        }
    }

    public class Pessoa
    {
        public double[] Features;
        public string Nome;
        public Pessoa(string nome, double altura, double peso, double tamcabelo)
        {
            Features = new double[3];
            this.Nome = nome;
            Features[0] = altura;
            Features[1] = peso;
            Features[2] = tamcabelo;
        }
    }
}

Share this post


Link to post
Share on other sites

vlw cara, utilizei o foreach e consegui pegar os valores do vetor.

 

Aí pra fazer a comparação de valores do vetor, utilizei o método bubblesort, desse modo eu sei qual é o valor de maior aproximação entre os vizinhos, e assim descobrindo a qual grupo pertence o dado informado. 

 

 

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

  • Similar Content

    • By Lucaahenr
      Boa tarde pessoal!

      Tenho que fazer um programa em C# que realize o calculo de uma equação de 2° Grau, porem é necessário realizar algumas verificações utilizando IF,  Else e estou tendo dificuldade em realizar estas verificações, gostaria de saber se está correto o que eu fiz ou se tem algum outro modo, segue questão em anexo.

      Muito Obrigado!

      using System; namespace equacaoSegundoGrau { class equacacao { static void Main(string[] args) { double a, b, c, delta; Console.WriteLine("Informe o coeficiente A"); a = double.Parse(Console.ReadLine()); Console.WriteLine("Informe o coeficiente B"); b = double.Parse(Console.ReadLine()); Console.WriteLine("Informe o coeficiente C"); c = double.Parse(Console.ReadLine()); // mesma coisa que a de baixo delta = (b * b) - 4 * a * c; delta = Math.Pow(b, c) - 4 * a * c; if ((a == 0) && (b == 0) && (c != 0)) { Console.WriteLine("Coeficientes informados incorretamente."); } else if ((a == 0) && (b != 0)) { Console.WriteLine("Essa é uma equação de primeiro grau e deverá ser informado o valor da raiz real da equação."); } else if (delta < 0) { Console.WriteLine("Esta equação não possui raízes reais"); } else if (delta == 0) { Console.WriteLine("Esta equação possui duas raízes reais iguais e informar o valor das raízes da equação." + delta); } else if (delta > 0) { Console.WriteLine("Esta equação possui duas raízes reais diferentes."); Console.WriteLine("O valor desta equação é " + delta); } } } }
       
    • By Eduardo Cândido da Rosa
      Boa noite da lista de 30 por enquanto foram 2 os problemas que não consegui entender o enunciado ou não consegui realmente resolver...
       
      Gostaria da ajuda de vocês para resolver esse enunciado em C++, não vou postar o que fiz pois não consegui formular uma resposta adequada espero que ajudem.
       
      27)    A locadora de carros SAI DA FRENTE está fazendo uma promoção e está alugando carros no período junino por R$ 30,00 a diária. Além disso, a locadora cobra R$ 0,01 por quilômetro rodado. Como é período de São João, a locadora quer fidelizar os clientes e está dando 10% de desconto no valor total do aluguel de qualquer carro.
       
      Implemente um programa em C++ que leia quantos dias a pessoa ficou com o carro: [1; 30] e quantos quilômetros ela rodou [1; 1000], calcule e mostre o valor total que a pessoa deve pagar pelo aluguel do carro.
    • By Eduardo Cândido da Rosa
      Q)  Uma máquina automática de café só funciona com notas de 5 reais e nunca dá o troco. O café custa 7 reais. Assim, se o cliente pedir apenas um café, ele vai perder 3 reais, pois terá que dar 10 reais, e a máquina não devolverá o troco.
       
      É possível comprar mais de um café em uma só compra. Logo, se o cliente colocou 15 reais, significa que ele vai obter dois cafés e perderá 1 real.
       
      Implemente um programa em C++ que leia a quantidade de dinheiro que o cliente colocou na máquina sempre um múltiplo de 5 e imprima quanto o cliente irá perder no troco.
       
      O que fiz até agora, não sei o que devo mudar, me ajudem por favor:
       
      #include <iostream>
      using namespace std;
      int main() {
       
       
      int i,resultado,valor;
       
       
      cout << "Informe o valor:\n";
       
      cin >> valor;

      }
       
      for(i = 0; valor >= 7; i++){
        valor -= 7;
        resultado = valor;
      }
       
      cout << "\nA quantidade de cafe: "  << i << endl;  
      cout << "\nO restante do dinheiro: " << resultado << endl;    
         
      }else{
      cout << "\nErro!!\n" << endl;
      }
       
      return 0;
      }
    • By iago_ss
      Olá!!!
      Sou iniciante na área de programação para desktop e móvel, porém, penso em iniciar um curso para começar a desenvolver para estas áreas.
      Hoje, penso em desenvolver um programa, similar a um site q possuo, isso porque fico preso a diversos problemas impossíveis de resolver por ser um ambiente web. 
      O site hoje possui uma webrádio shoutcast (passo por problemas sempre que o chrome atualiza as politicas de privacidade), um fórum, notícias de jogos dentre outras funcionalidades.
      Além disso, gostaria de implementar mini-jogos.
       
      Gostaria de saber qual a melhor linguagem, no ponto de vista de vocês, para desenvolver esse programa, tendo em vista que eu partiria do zero.
      Pesquisei sobre e as mais utilizadas são c# e Java. Com essas linguagens é possível consultar banco de dados mysql hospedados na web?
    • By frlopes
      Pessoal, bom dia.
       
      Tentei fazer o exemplo abaixo do site:
       
      http://www.macoratti.net/15/10/mvc_roles1.htm
       
      E está retornando o seguinte erro quando tento fazer um novo registro:
       
      System.InvalidOperationException: 'The ViewData item that has the key 'Name' is of type 'System.String' but must be of type 'IEnumerable<SelectListItem>'.'
       
      Alguém poderia me ajudar? 
      Obrigada!
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.