Ir para conteúdo
credson

pessoal bom dia como criar este algoritimo

Recommended Posts

pessoal ola gostaria de criar um algoritimo que atraves da resposta de usuario que so podem digitar sim ou nao ....se chegasse a um determinado item da lista de um array

 

 

por exemplo

 

let lista =['trator','carro','bicicleta','Moto','trem','caminhao','onibus','paraquedas','balao','aviao','helicoptero','submarino','barco','navio','lancha'];
 
fazer varias perguntas onde as resposta seria sim ou nao e atraves disso chegase a resultado de algum item da array exemplo
 
tem rodas= sim
e leve = sim
tem pedal = sim
reposta = bicicleta
 
 
outra situacao
 
voa= sim
e leve= nao
tem elise = sim
 
resposta elicoptero                           pq so que tem elise nesta lista e elicoptero
 
 
obg pela ajuda
 
 
 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fiz o esboço de uma ideia pra você, mas ainda não sou programador, apenas no inicio do estudo da linguagem. muita coisa pra melhora, mas consegue o resultado.

as perguntas são feitas aleatoriamente, mas não foi feita nenhuma filtragem para não repetir as perguntas, como disse tem muita coisa pra arrumar, de repente mudar tudo.

 

//Objeto com lista de transportes
const transportes = {
    terrestre: {
        carro: ['portas', 'pneus', 'motor'],
        bicicleta: ['pneus', 'pedal', 'direção']
    },
    aerio: {
        balão: ['ar quente'],
        avião: ['asas', 'motor']
    },
    aquatico: {
        barco: ['vela', 'madeira'],
        lancha: ['motor', 'alumínio']
    }
}

// array de perguntas para tipo de transportes
const tipo = ['É terrestre', 'É aquático', 'É aério']

// arrays de perguntas para transportes por tipo
const terrestre = ['Tem direção', 'Tem pneus', 'Tem pedal', 'Tem pneus', 'Tem motor'];
const aquatico = ['a', 'b', 'c'] // cria essas perguntas conforme os objetos
const aerio = ['d', 'e', 'f'] // cria essas perguntas conforme os objetos

function fazerPerguntas(perguntas) {
    let pergunta
    let resposta
    do {
        let indice = Math.floor(Math.random() * perguntas.length)
        pergunta = perguntas[indice];
        resposta = prompt(pergunta)
    } while (resposta !== 'sim')

    return pergunta.normalize('NFD').replace(/[\u0300-\u036f]/g, "").toLowerCase()
}

function resposta(obj) {
    let rs = fazerPerguntas(tipo);
    //fomata a pergunta pegando apenas o tipo de transporte que vem imbutido na pergunta
    tipoTansp = rs.slice(2);
    const transporte = filtrarTiposTransportes(obj, tipoTansp)
    return transporte    
}

const resultado = resposta(transportes)
console.log(resultado)

function filtrarTiposTransportes(obj, tipoTansp) {
    let caracteristicas = []
    let transporte = []
    for (const key in obj) {
        if (key === tipoTansp) {
            const rsTipo = obj[key]
           
            rs = filtrarTranasporte(rsTipo)
            transporte = rs[0]
            caracteristicas = rs[1]            


            while (caracteristicas.length > 1) {
                rs = filtrarTranasporte(rsTipo)
                caracteristicas = rs[1]
                transporte = rs[0]
            }
           
        }    
    }
    return transporte.length === 1 ? transporte[0] : 'Não encontrado'
}

function filtrarPergunta (tipoTansp) {
    if(tipoTansp === 'terrestre') return terrestre;
    if(tipoTansp === 'aerio') return aerio;
    if(tipoTansp === 'aquatico') return aquatico;
}

function filtrarTranasporte(rsTipo) {
    let caracteristicas = []
    let transporte = []
    for (const key in rsTipo) {
        const tipo = filtrarPergunta(tipoTansp)
        perguntaCaracteristica = fazerPerguntas(tipo).slice(4);
        const objKey = (rsTipo[key])
        const filtro = e => e.normalize('NFD').replace(/[\u0300-\u036f]/g, "").toLowerCase() === perguntaCaracteristica;                       
        const resultado = objKey.find(filtro)
        if(resultado !== undefined) {
            transporte.push(key)
            caracteristicas.push(objKey)
        }                  
    }
    return [transporte, caracteristicas]
}

espero que ajude e que nos ajude.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora

  • Conteúdo Similar

    • Por ALOISIO SANTOS
      Crie um algoritmo peça o Nome da pessoa, sexo e idade e classifique de acordo com a tabela abaixo:
       
       
      SEXO IDADE SALA Masc abaixo 18 Sala 1 Masc acima = 18 Sala 2 Fem abaixo 18 Sala 3 Fem acima = 18 Sala 4  
    • Por vfraanco
      Desenvolva um algoritmo em pseudocodigo que permita ler as notas que N alunos obtiveram numa disciplina e mostre a
      percentagem de notas positivas e a média das notas negativas. O número de alunos (N) deve ser
      introduzido pelo utilizador e validado.
    • Por Oliver Black
      Dada a cartela de bingo
      3 12 20 27 40
      9 15 24 30 45
      10 18 25 36 50
      Escreva um algoritmo que utilize essa cartela como referência (cartela sorteada) e leia os números marcados pelo jogador na sua cartela de jogada. Após 50 números sorteados verificar se o jogador ganhou ou não. As regras de comparação da cartelas de referência com a cartela do jogador são:
      1. marcar os 4 cantos ou
      2. marcar qualquer linha inteira ou
      3. marcar qualquer coluna inteira.
    • Por vinicius.benedito98
      Faça um Programa em Linguagem C que receba o nome e a nota de 180 alunos de uma sala e armazene em vetor. Calcule e mostre: 
      - A média da sala; 
      - O nome do aluno com a maior nota; 
      - O nome do aluno com a menor nota; 
      - Os nomes dos alunos aprovados;

      O meu código é esse :

      #define N 180 
      int main() { 
      int i, ind_maior, ind_menor; 
      float nota[N], soma=0, media, min_aprov=7; 
      char nome[N][50]; 
      for (i=0; i printf("Informe o nome do %dº aluno: ", i+1); 
      gets(nome); 
      printf("Informe a nota do %dº aluno: ", i+1); 
      scanf(" %d ", &nota); 
      soma += nota; 

      media = soma / N; 
      printf("\nMédia da sal: %.2f\n", media); 
      ind_menor = ind_maior = 0; 
      for (i=1; i if (nota < nota[ind_menor]) 
      ind_menor = i; 
      if (nota > nota[ind_maior]) 
      ind_maior = i; 

      printf("Menor nota: %s com %.2f\n", nome[ind_menor], nota[ind_menor]); 
      printf("Maior nota: %s com %.2f\n", nome[ind_maior], nota[ind_maior]); 
      printf("Aprovados:"); 
      for (i=0; i if (nota >= min_aprov) 
      printf("\t%s com: %.2f\n", nome, nota); 

      return 0; 
      }


      Porém quando vou executa-lo, o programa pede para inserir o nome e nota do aluno apenas uma vez, e fica por isso, ele não exibe os resultados, alguém pode me ajudar ?
    • Por Carolm
      Boa Noite, tenho que solucionar um exercício de PL/SQL ,onde devo encontrar um algorítimo/código para poder analisar um CNPJ ,que sera informado pelo usuário,o SQL Developer deve realizar o cálculo para pegar os dígitos validadores desse CNPJ, e por fim analisar se ele é válido ou inválido e no console apresentar o texto : Valido ou inválido dependendo do resultado obtido com o calculo!
      Nesse exercício sera aberta uma "tela" que vai pedir pro usuário digitar o numero do CNPJ,esse CNPJ sera capturado e analisado através de um calculo de validação de CNPJ (ira analisar os dígitos verificadores) e com o resultado ele ira informar ao usuário se o numero é VALIDO ou INVALIDO!
      Enunciado :
      CRIE UM BLOCO ANÔNIMO PL/SQL  ORACLE  QUE IRÁ SOLICITAR PARA O USUÁRIO O NÚMERO DO: CNPJ - BLOCO ANÔNIMO-DÍGITO VERIFICADOR

      Eu rodei o código abaixo  o SQL informou que a função foi compilada,porém não aparece a mensagem dizendo se o numero informado é válido ou inválido...Será que poderiam me ajudar ?
      set serveroutput on ACCEPT CNPJ PROMPT 'Digite o numero do CNPJ' CREATE OR REPLACE FUNCTION CNPJ (p_cgc IN CHAR) RETURN BOOLEAN IS m_total NUMBER := 0; m_digito NUMBER := 0; BEGIN FOR i IN 1..4 LOOP m_total := m_total + substr(p_cgc,i,1) * (6 - i); END LOOP; FOR i IN 5..12 LOOP m_total := m_total + substr(p_cgc,i,1) * (14 - i); END LOOP; m_digito := 11 - mod(m_total,11); IF m_digito > 9 THEN m_digito := 0; END IF; IF m_digito != substr(p_cgc,13,1) THEN RETURN FALSE; END IF; m_digito := 0; m_total := 0; FOR i IN 1..5 LOOP m_total := m_total + substr(p_cgc,i,1) * (7 - i); END LOOP; FOR i IN 6..13 LOOP m_total := m_total + substr(p_cgc,i,1) * (15 - i); END LOOP; m_digito := 11 - mod(m_total,11); IF m_digito > 9 THEN m_digito := 0; END IF; IF m_digito != substr(p_cgc,14,1) THEN RETURN FALSE; END IF; RETURN TRUE; IF CNPJ(14) = TRUE THEN DBMS_OUTPUT.PUT_LINE('VERDADEIRO'); ELSE DBMS_OUTPUT.PUT_LINE('FALSO'); END IF; END; /  

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.