Ir ao conteúdo
  • Cadastre-se

Lucas Da Silva Aleixo

Membro Pleno
  • Posts

    51
  • Cadastrado em

  • Última visita

posts postados por Lucas Da Silva Aleixo

  1. Instalei o Kali Linux no Virtualbox, coloquei a placa em modo bridge e a internet conecta. Porém ela conecta como se estivesse nocabo,gostaria de conectá-la ao Wifi, porém quando vou lá em Wifi para conectar, a seguinte mensagem aparece:

     

    Nenhum adaptador Wi-fi encontrado

    Certifique-se de que você tenha um adaptador. Wi-fi conectado e ligado.

     

    O mais estranho é que aparece wifi conectado e ligado, sendo que não aparece nenhuma rede wifi.

     

    Como resolvo?

  2. Recentemente, quando cheguei a parte de estruturas condicionais compostas, aprendi que antes do else não havia ponto e vírgula (;). Estava construindo meus algoritmos sem problema algum, porém este programa que fiz só funciona se colocar ponto e vírgula (;) antes do else (exceto o end). Segue o código:

     

    program NovoSalario;
    
    uses CRT;
    
    var
      nome :string;
      salario_atual, novo_salario :real;
    
    begin
        textbackground(yellow);
        textcolor(white);
        clrscr();
        
        writeln(' ',#201,#205,#205,#205,#205,#205,#205,#205,#205,#205,#205,#205,#205,#205,#205,#187);
        writeln(' ',#186,' NOVO SALÁRIO ',#186);
        writeln(' ',#200,#205,#205,#205,#205,#205,#205,#205,#205,#205,#205,#205,#205,#205,#205,#188);
        writeln();
        
    	write(' - Nome: ');
    	readln(nome);
    		
    	write(' - Salário Atual: ');
    	readln(salario_atual);
    		
    	writeln();
    		
    		if (salario_atual < 0) then
    		  begin
    		    writeln(' * Salário Inválido!')
    		  end
    		else
            
    		  if (salario_atual <= 400) then
    		    begin
    		      novo_salario := ((salario_atual * 15) / 100 + salario_atual);
    		      
    		      writeln(' * Nome do Funcionário: ', nome);
    		      writeln(' * Salário Atual: ', salario_atual:0:2);
    		      writeln(' * Aumento de 15%');
    		      writeln(' * Novo Salário: ', novo_salario:0:2);
    		    end
    		else
            
    		  if (salario_atual > 400) and (salario_atual <= 700) then
    		    begin
    		      novo_salario := ((salario_atual * 12) / 100 + salario_atual);
    		      
    		      writeln(' * Nome do Funcionário: ', nome);
    		      writeln(' * Salário Atual: ', salario_atual:0:2);
    		      writeln(' * Aumento de 12%');
    		      writeln(' * Novo Salário: ', novo_salario:0:2);
    		    end
    		else
            
    		  if (salario_atual > 700) and (salario_atual <= 1000) then
    		    begin
    		      novo_salario := ((salario_atual * 10) / 100 + salario_atual);
    		      
    		      writeln(' * Nome do Funcionário: ', nome);
    		      writeln(' * Salário Atual: ', salario_atual:0:2);
    		      writeln(' * Aumento de 10%');
    		      writeln(' * Novo Salário: ', novo_salario:0:2);
    		    end
    		else
            
    		  if (salario_atual > 1000) and (salario_atual <= 1800) then
    		    begin
    		      novo_salario := ((salario_atual * 7) / 100 + salario_atual);
    		      
    		      writeln(' * Nome do Funcionário: ', nome);
    		      writeln(' * Salário Atual: ', salario_atual:0:2);
    		      writeln(' * Aumento de 7%');
    		      writeln(' * Novo Salário: ', novo_salario:0:2);
    		    end
    		else
            
    		  if (salario_atual > 1800) and (salario_atual <= 2500) then
    		    begin
    		      novo_salario := ((salario_atual * 4) / 100 + salario_atual);
    		      
    		      writeln(' * Nome do Funcionário: ', nome);
    		      writeln(' * Salário Atual: ', salario_atual:0:2);
    		      writeln(' * Aumento de 4%');
    		      writeln(' * Novo Salário: ', novo_salario:0:2);
    		    end
    		else
            
    		  if (salario_atual > 2500) then
    		    begin
    		      novo_salario := salario_atual;
    		      
    		      writeln(' * Nome do Funcionário: ', nome);
    		      writeln(' * Salário Atual: ', salario_atual:0:2);
    		      writeln(' * Sem Aumento');
    		      writeln(' * Novo Salário: ', novo_salario:0:2);
    		    end;
    
        write(' ');
        readkey();
    end.

    Somente com o ponto e vírgula funciona, saberiam me dizer o porquê? Estou usando o Pascal Zim!

    • Curtir 1
  3. Comprei o jogo Minecraft for Windows 10, porém quando vou na loja para baixar aparece a seguinte mensagem: Este aplicativo não funcionará corretamente em seu dispositivo.

     

    - Já tentei limpar o cache da Windows Store.

    - Os drivers estão todos atualizados.

    - Meu Windows 10 está na última versão lançada.

    - Tenho o Java instalado na última versão.

    - Acabei de formatar o meu PC, não há praticamente nada instalado.

     

    Saberiam me informar como posso resolver este problema? Agradeço desde já.

  4. Faça assim:

     

    - A cada vez que alguém ganhar ou perder, você tem que colocar um comando para salvar o nome do jogador em um diretório:

     

    Exemplo:

    ::Para o ganhador
    echo %jogador% >> "Diretório\Ganhadores.txt"
    
    ::Para o perdedor
    echo %jogador% >> "Diretório\Perdedores.txt"
    
    ::Os dois devem ficar na mesma pasta

    Isto que está entre % é a variável com o nome do jogador.

     

    Ai na função histórico você coloca:

    cd "Diretório"
    
    echo Ganhadores
    
    type Ganhadores.txt
    
    echo Perdedores
    
    type Perdedores.txt

    Para colocar uma função em Batch faça assim:

    :Nome_Da_Funcao

    Para chamar uma função faça assim:

    goto Nome_Da_Funcao

    O que está depois dois pontos são comentários.

     

    Com esse código mostrará o histórico de todas as vitórias e derrotas. Desconheço como poderia colocar para aparecer somente as últimas 7 vitórias e derrotas.

     

    Sugiro que coloque seu código aqui para podermos analisa-lo melhor.

  5. Você precisa tirar os parênteses do TS. Os parênteses geralmente colocamos quando temos que realizar contas.

     

    Veja como ficou:

    algoritmo "semnome"
    // Função :
    // Autor :
    // Data : 03/08/2018
    // Seção de Declarações
    var
    A, B, R, TS :real
    inicio
    escreval(" ==============")
    escreval(" = Exemplo_SE =")
    escreval(" ==============")
    escreval()
    
    escreval(" - Entre com 2 números quaisquer:")
    escreval()
    escreva(" * ")
    leia(A)
    escreva(" * ")
    leia(B)
    
    escreval()
    
    escreval(" - Somando:")
    R <- (A + B)
    
    se (R > 30) então
       TS <- (R + 5)
    senao
       TS <- (R - 5)
    fimse
    
    escreval()
    
    escreval(" * O resultado é:", TS)
    escreval(" * Fim do Processo")
    fimalgoritmo

    Testei aqui e deu certo.

    • Curtir 1
  6. É eu sei que não é juros, coloquei como nome da variável para ficar mais fácil de visualizar.

     

    Já troquei o <= 0 e coloquei o juros := (juros / 100) no senão.

     

    algoritmo "Montante"
    // Função : Retornar o montante ao final de cada mês.
    // Autor :
    // Data : 24/07/2018
    // Seção de Declarações
    var
    capital, juros, montante :real
    periodo, x :inteiro
    inicio
    escreval(" ============")
    escreval(" = MONTANTE =")
    escreval(" ============")
    escreval()
    
    escreva(" - Informe o capital: ")
    leia(capital)
    escreva(" - Informe a taxa de juros mensais: ")
    leia(juros)
    escreva(" - Informe o período: ")
    leia(periodo)
    
    escreval()
    
    se (periodo <= 0) então
       escreval("**********************************************************************************")
       escreval("* Período inválido.                                                              *")
       escreval("**********************************************************************************")
    senao
       juros := (juros / 100)
    
       para x de 1 ate periodo faca
          montante := (capital * (1 + juros) ^ x)
          escreval(" *", x, "° Mês:", montante)
       fimpara
    
    fimse
    fimalgoritmo

     

  7. Nem lembrava disso mais. Enfim já havia conseguido:

    algoritmo "Montante"
    // Função : Retornar o montante ao final de cada mês.
    // Autor :
    // Data : 24/07/2018
    // Seção de Declarações
    var
    capital, juros, montante :real
    periodo, x :inteiro
    inicio
    escreval(" ============")
    escreval(" = MONTANTE =")
    escreval(" ============")
    escreval()
    
    escreva(" - Informe o capital: ")
    leia(capital)
    escreva(" - Informe a taxa de juros mensais: ")
    leia(juros)
    escreva(" - Informe o período: ")
    leia(periodo)
    
    escreval()
    
    juros := (juros / 100)
    
    se (periodo < 0) então
       escreval("**********************************************************************************")
       escreval("* Período inválido.                                                              *")
       escreval("**********************************************************************************")
    senao
    
       para x de 1 ate periodo faca
          montante := (capital * (1 + juros) ^ x)
          escreval(" *", x, "° Mês:", montante)
       fimpara
    
    fimse
    fimalgoritmo

     

    • Curtir 1
  8. 15 horas atrás, Simon Viegas disse:

    1#

    Sobre:

    18 horas atrás, Lucas Da Silva Aleixo disse:

    O vetor para guardar os números primos deixei com apenas 25 posições, já que só existem 25 números primos entre 1 a 100.

     

    Observação inicial.: Talvez não tenha problemas deixar com 25, é mais para refletir...

     

    Tá! mas como você sabe que só tem 25 primos entre 1 e 100? seria necessário citar ou demonstrar como sabe disso no contexto... 

     

    Ou seja, creio eu que não deve existe uma fórmula para saber quantos primos existem entre uma faixa de números... de certo modo, está dando a subentender que o programador já sabe quantos tem, que por sua vez sugere que já sabe quais quais são os primos...

     

     

    Ok, vou colocar o 100 ao invés do 25.

     

    15 horas atrás, Simon Viegas disse:

    2#

    Sobre:

    
    //Verifica se o número é negativo

    Pequeno detalhe: não seria "o" número. Pois está verificando 2. Seria mais para algo como "//Verifica se algum número é negativo". O mesmo princípio vale para os nulos. "//Verifica se algum número é nulo".

     

    É mesmo, nem tinha reparado. Já mudei aqui.

     

    15 horas atrás, Simon Viegas disse:

    3#

    Sobre:

    18 horas atrás, Lucas Da Silva Aleixo disse:
    
    
    escreval(" * MMC[", v1I, ",", v2I, " ]:", resultadoC)
    escreval(" * MDC[", v1I, ",", v2I, " ]:", resultadoD)

     

    Você está usando v1I e v1I para exibir o número original e usando v1 e v2 para calcular o MMC.. mas acho que deveria fazer o contrário... ou seja, o lido não se mexe, e usa a cópia para calcular. Assim como foi feito no MDC.

     

    De um modo geral, só precisaria de um par de variável... basta antes de calcular cada um, atualizar esse auxiliar. Ex.:

    
          v1_2 <- v1
          v2_2 <- v2

     

    Usei a variável v1I e v2I, porque o "I" representa "Inicial", ou seja valor inicial, acho que fica mais didático assim, porque na teoria o usuário está colocando aqueles valores para serem calculados e não para aparecerem no final.

     

    15 horas atrás, Simon Viegas disse:

    4#

    Sobre algumas verificações:

    
    se ... (v1 % v1 = 0) ... então

    Veja, em 100% das vezes, o resultado será o mesmo! logo, não faz sentido verificar algo que é estático! 

     

    Ou implementou errado alguma lógica, ou a lógica em si está errada...

     

    OK, retirei esta parte.

     

    15 horas atrás, Simon Viegas disse:

    Outro ponto importante é que a frase "Caso resulte em um número primo" cai no mesmo caso:

    Em ‎28‎/‎07‎/‎2018 às 19:27, Simon Viegas disse:

    Esta é uma conclusão precipitada


    Pois nem sempre que v1 ou v2 for diferente de 1, era será primo. Entende? é interessante se atentar ao escopo antes de criar afirmações. 

     

    Não tenho certeza mas...

     

    Antes desta parte do ser diferente de 1, os números passam pelo processo de contas, eles serão divididos por todos os números primos de 1 ate 100, até não serem divisíveis por nenhum deles, o que só ocorre com os números primos.

     

    Já que as variáveis v1 e v2 são do tipo inteiro e o VisualG só aceita 8 dígitos para variáveis de número inteiro, acho que não existe nenhum número não primo de até 8 dígitos que não seja divisível por: 2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97 ou que não resulte em um número primo, pois cada vez que o número vai sendo dividido, menor ele fica, e as chances de ele ser divisível por algum desses números aumentam e ai é certo que ele resultará em um número primo.

     

    A parte do (v1 <> 1) e (v2 <> 1) é para confirmar se a conta não acabou.

     

    Modificações:

    1° - Coloquei um comando enquanto v1, v2 <> 0, pois no enunciado pede um número não determinados de pares.

     

    2° - Troquei o 25 pelo 100 novamente.

     

    3° - Retirei a parte para verificar se o número é nulo, já que para quando o usuário digitar 0 é para sair, então a cada v1 lido, ele verifica se é igual a zero, o mesmo ocorre com o v2.

     

    4° Consertei as frases (exceto a do número primo)

     

    5° Tirei aquela parte do (v1 % v1 = 0) 

     

    6° Coloquei uma parte para verificar se os números são iguais, porque caso for o MMC e o MDC serão iguais aos valores. Se não tiver esta parte a conta sairá errada.

     

    algoritmo "Exercício 18"
    // Função : Calcular o MMC e o MDC de dois valores informados pelo usuário.
    // Autor :
    // Data : 30/07/2018
    // Seção de Declarações
    var
    primos :vetor [1..100] de inteiro //Para guardar os números primos
    v1, v2, v1_2, v2_2, v1I, v2I, x, y, divisor, p, n, j :inteiro
    resultadoC, resultadoD :real
    inicio
    v1 <- 1
    v2 <- 1
    
    enquanto (v1 <> 0) ou (v2 <> 0) faca
       limpatela
       escreval(" =============")
       escreval(" = MMC E MDC =")
       escreval(" =============")
       escreval()
       escreval(" * Digite 0 para sair.")
       escreval()
       escreva(" - Informe o primeiro valor: ")
       leia(v1)
    
       se (v1 = 0) então
          v2 <- 0
          interrompa
       senao
    
          escreva(" - Informe o segundo valor: ")
          leia(v2)
    
          se (v2 = 0) então
             v1 <- 0
             interrompa
          senao
    
             //Verifica se algum número é negativo
    
             se (v1 < 0) ou (v2 < 0) então
                escreval()
                escreval(" * Número(s) negativo(s).")
                escreval()
                escreval(" - Pressione F9 para continuar...")
                pausa
             senao
    
                //Verifica se os números são iguais
    
                se (v1 = v2) então
                   escreval()
                   escreval(" * MMC[", v1, ",", v2, " ]:", v1)
                   escreval(" * MDC[", v1, ",", v2, " ]:", v2)
                   escreval()
                   escreval(" - Pressione F9 para continuar...")
                   pausa
                senao
    
                   //As variáveis de resultados não podem ser iguais a zero porque irão ser multiplicadas.
    
                   v1I <- v1
                   v2I <- v2
                   v1_2 <- v1
                   v2_2 <- v2
                   resultadoC <- 1
                   resultadoD <- 1
    
                   //Gera quantos divisores cada número de 1 até 100 possui. A quantidade é armazenada na variável "divisor".
    
                   para x de 1 ate 100 faca
                      divisor <- 0 //Zera os divisores
                      para y de 1 ate 100 faca
                         se (x % y = 0) então
                            divisor <- (divisor + 1)
                         fimse
                      fimpara
    
                      //Verifica quais números são primos. Caso o número possuir dois divisores, então ele é primo. Os números primos são armazenados no vetor "primos".
    
                      se (divisor = 2) então
                         p <- (p + 1)
                         primos[p] <- x
                      fimse
                   fimpara
    
                   //Cálculo do MMC
    
                   //Enquanto os dois não resultarem em algum número primo, serão divididos e o resultado será multiplicado pelos números primos.
    
                   para x de 1 ate 100 faca
                      se (primos[x] <> 0) então
                         enquanto (v1 % primos[x] = 0) e (v2 % primos[x] = 0) e (v1 <> 1) e (v2 <> 1) faca
                            resultadoC <- (resultadoC * primos[x])
                            v1 <- (v1 \ primos[x])
                            v2 <- (v2 \ primos[x])
                         fimenquanto
                      fimse
                   fimpara
    
                   //Caso resulte em um número primo
    
                   se (v1 = v2) e (v1 <> 1) então
                      resultadoC <- (resultadoC * v1)
                      v1 <- (v1 \ v1)
                      v2 <- (v2 \ v2)
                   fimse
    
                   se (v1 <> 1) então
                      resultadoC <- (resultadoC * v1)
                      v1 <- (v1 \ v1)
                   fimse
    
                   se (v2 <> 1) então
                      resultadoC <- (resultadoC * v2)
                      v2 <- (v2 \ v2)
                   fimse
    
                   //Cálculo do MDC
    
                   //Enquanto os dois não resultarem em algum número primo, serão divididos e o resultado será multiplicado pelos números primos.
    
                   para x de 1 ate 100 faca
                      se (primos[x] <> 0) então
                         enquanto (v1_2 % primos[x] = 0) e (v2_2 % primos[x] = 0) e (v1_2 <> 1) e (v2_2 <> 1) faca
                            resultadoD <- (resultadoD * primos[x])
                            v1_2 <- (v1_2 \ primos[x])
                            v2_2 <- (v2_2 \ primos[x])
    
                            //Se somente 1 número for divisível, o resultado não muda e apenas os valores serão divididos.
    
                            se (v1_2 % primos[x] = 0) ou (v2_2 % primos[x] = 0) e (v1_2 <> 1) e (v2_2 <> 1) então
                               v1_2 <- (v1_2 \ primos[x])
                               v2_2 <- (v2_2 \ primos[x])
                            fimse
                         fimenquanto
                      fimse
                   fimpara
    
                   //Caso os números resultantes sejam primos
    
                   se (v1_2 = v2_2) e (v1_2 <> 1) então
                      resultadoD <- (resultadoD * v1_2)
                      v1_2 <- (v1_2 \ v1_2)
                      v2_2 <- (v2_2 \ v2_2)
                   senao
                      v1_2 <- (v1_2 \ v1_2)
                      v2_2 <- (v2_2 \ v2_2)
                   fimse
    
                   //Exibe na tela os resultados finais
    
                   escreval()
                   escreval(" * MMC[", v1I, ",", v2I, " ]:", resultadoC)
                   escreval(" * MDC[", v1I, ",", v2I, " ]:", resultadoD)
                   escreval()
                   escreval(" - Pressione F9 para continuar...")
                   pausa
    
                fimse
             fimse
          fimse
       fimse
    fimenquanto
    fimalgoritmo

    Se tiver mais alguma observação pode falar.

  9. Haviam dois comandos enquanto desnecessários, e um para fora do lugar.

     

    Usei aquela dica sobre logo após verificar se o número é primo.

     

    O vetor para guardar os números primos deixei com apenas 25 posições, já que só existem 25 números primos entre 1 e 100.

     

    Agora deu certo, sem nenhum erro.

     

    algoritmo "MMC e MDC"
    // Função : Calcular o MMC e o MDC de dois valores informados pelo usuário.
    // Autor :
    // Data : 29/07/2018
    // Seção de Declarações
    var
      primos :vetor [1..25] de inteiro //Para guardar os números primos
      v1, v2, v1_2, v2_2, v1I, v2I, x, y, divisor, p :inteiro
      resultadoC, resultadoD :real
    inicio
      escreval(" =============")
      escreval(" = MMC E MDC =")
      escreval(" =============")
      escreval()
    
      escreva(" - Informe o primeiro valor: ")
        leia(v1)
      escreva(" - Informe o segundo valor: ")
        leia(v2)
    
    //Verifica se o número é negativo
    
      se (v1 < 0) ou (v2 < 0) então
        escreval()
        escreval(" * Número(s) negativo(s).")
      senao
    
       //Verifica se o número é nulo
    
       se (v1 = 0) ou (v2 = 0) então
          escreval()
          escreval(" * Número(s) nulo(s).")
       senao
    
          //As variáveis de resultados não podem ser iguais a zero porque irão ser multiplicadas.
    
          v1I <- v1
          v2I <- v2
          v1_2 <- v1
          v2_2 <- v2
          resultadoC <- 1
          resultadoD <- 1
    
          //Gera quantos divisores cada número de 1 até 100 possui. A quantidade é armazenada na variável "divisor".
    
          para x de 1 ate 100 faca
             divisor <- 0
             para y de 1 ate 100 faca
                se (x % y = 0) então
                   divisor <- (divisor + 1)
                fimse
             fimpara
    
             //Verifica quais números são primos. Caso o número possuir dois divisores, então ele é primo. Os números primos são armazenados no vetor "primos".
    
             se (divisor = 2) então
                p <- (p + 1)
                primos[p] <- x
             fimse
          fimpara
    
          //Cálculo do MMC
    
          //Enquanto os dois não resultarem em algum número primo, serão divididos e o resultado será multiplicado pelos números primos armazenados.
    
          para x de 1 ate 25 faca
             enquanto (v1 % primos[x] = 0) e (v2 % primos[x] = 0) e (v1 <> 1) e (v2 <> 1) e (x <> 25) faca
                resultadoC <- (resultadoC * primos[x])
                v1 <- (v1 \ primos[x])
                v2 <- (v2 \ primos[x])
             fimenquanto
          fimpara
    
          //Caso resulte em um número primo
    
          se (v1 = v2) e (v1 % v1 = 0) e (v1 <> 1) então
             resultadoC <- (resultadoC * v1)
             v1 <- (v1 \ v1)
             v2 <- (v2 \ v2)
          fimse
    
          se (v1 % v1 = 0) e (v1 <> 1) então
             resultadoC <- (resultadoC * v1)
             v1 <- (v1 \ v1)
          fimse
    
          se (v2 % v2 = 0) e (v2 <> 1) então
             resultadoC <- (resultadoC * v2)
             v2 <- (v2 \ v2)
          fimse
    
          //Cálculo do MDC
    
          //Enquanto os dois não resultarem em algum número primo, serão divididos e o resultado será multiplicado pelos números primos.
    
          para x de 1 ate 25 faca
             enquanto (v1_2 % primos[x] = 0) e (v2_2 % primos[x] = 0) e (v1_2 <> 1) e (v2_2 <> 1) faca
                resultadoD <- (resultadoD * primos[x])
                v1_2 <- (v1_2 \ primos[x])
                v2_2 <- (v2_2 \ primos[x])
    
                //Se somente 1 número for divisível, o resultado não muda e apenas os valores serão divididos.
    
                se (v1_2 % primos[x] = 0) ou (v2_2 % primos[x] = 0) e (v1_2 <> 1) e (v2_2 <> 1) então
                   v1_2 <- (v1_2 \ primos[x])
                   v2_2 <- (v2_2 \ primos[x])
                fimse
             fimenquanto
          fimpara
    
          //Caso os números resultantes sejam primos
    
          se (v1_2 = v2_2) e (v1_2 % v1_2 = 0) e (v1_2 <> 1) então
             resultadoD <- (resultadoD * v1_2)
             v1_2 <- (v1_2 \ v1_2)
             v2_2 <- (v2_2 \ v2_2)
          senao
             v1_2 <- (v1_2 \ v1_2)
             v2_2 <- (v2_2 \ v2_2)
          fimse
    
          //Exibe na tela os resultados finais
    
          escreval()
          escreval(" * MMC[", v1I, ",", v2I, " ]:", resultadoC)
          escreval(" * MDC[", v1I, ",", v2I, " ]:", resultadoD)
          escreval()
    
        fimse
      fimse
    fimalgoritmo

     

    • Curtir 1
  10. Modifiquei algumas coisas no código:

     

    - MMC e o MDC somente para números positivos.

    - Agora ao invés de usar o 2 e o 3 para fazer os cálculos, são gerados todos os números primos de 1 a 100, ou seja, faz as contas com todos os números primos gerados. Acho que é quase impossível não resultar em um número primo dessa maneira.

     

    . Novo Algoritmo:

    algoritmo "MMC e MDC"
    // Função : Calcular o MMC e o MDC de dois valores informados pelo usuário.
    // Autor :
    // Data : 29/07/2018
    // Seção de Declarações
    var
      divisores :vetor [1..100] de inteiro //Para guardar os divisores
      primos :vetor [1..100] de inteiro //Para guardar os números primos
      v1, v2, v1_2, v2_2, v1I, v2I, x, y, divisor :inteiro
      resultadoC, resultadoD :real
    inicio
      escreval(" =============")
      escreval(" = MMC E MDC =")
      escreval(" =============")
      escreval()
    
      escreva(" - Informe o primeiro valor: ")
        leia(v1)
      escreva(" - Informe o segundo valor: ")
        leia(v2)
    
    //Verifica se o número é negativo
    
      se (v1 < 0) ou (v2 < 0) então
        escreval()
        escreval(" * Número(s) negativo(s).")
      senao
    
       //Verifica se o número é nulo
    
        se (v1 = 0) ou (v2 = 0) então
          escreval()
          escreval(" * Número(s) nulo(s).")
        senao
    
          //As variáveis de resultados não podem ser iguais a zero porque irão ser multiplicadas.
    
          v1I <- v1
          v2I <- v2
          v1_2 <- v1
          v2_2 <- v2
          resultadoC <- 1
          resultadoD <- 1
    
          //Gera quantos divisores cada número de 1 até 100 possui. A quantidade é armazenada no vetor "divisores".
    
          para x de 1 ate 100 faca
             divisor <- 0
             para y de 1 ate 100 faca
                se (x % y = 0) então
                   divisor <- (divisor + 1)
                   divisores[x] <- divisor
                fimse
             fimpara
          fimpara
    
          //Verifica quais números são primos. Caso o número possuir dois divisores, então ele é primo. Os números primos são armazenados no vetor "primos".
    
          para x de 1 ate 100 faca
             se (divisores[x] = 2) então
                primos[x] <- x
             fimse
          fimpara
    
          //Cálculo do MMC
    
          //Verifica quais posições na memória do vetor "primos" possuem números primos.
    
          enquanto (v1 + v2 <> 2) faca
             para x de 1 ate 100 faca
                se (primos[x] <> 0) então
    
                   //Enquanto os dois forem diferentes de 1, serão divididos e o resultado será multiplicado pelos números primos armazenados.
    
                   enquanto (v1 % primos[x] = 0) e (v2 % primos[x] = 0) e (v1 <> 1) e (v2 <> 1) faca
                      resultadoC <- (resultadoC * primos[x])
                      v1 <- (v1 \ primos[x])
                      v2 <- (v2 \ primos[x])
                   fimenquanto
                fimse
             fimpara
    
             //Caso resulte em um número primo
    
             se (v1 = v2) e (v1 % v1 = 0) e (v1 <> 1) então
                resultadoC <- (resultadoC * v1)
                v1 <- (v1 \ v1)
                v2 <- (v2 \ v2)
             senao
    
                se (v1 % v1 = 0) e (v1 <> 1) então
                   resultadoC <- (resultadoC * v1)
                   v1 <- (v1 \ v1)
                fimse
    
                se (v2 % v2 = 0) e (v2 <> 1) então
                   resultadoC <- (resultadoC * v2)
                   v2 <- (v2 \ v2)
                fimse
    
             fimse
    
          fimenquanto
    
          //Cálculo do MDC
    
          //Enquanto os dois forem diferentes de 1, serão divididos e o resultado será multiplicado pelos números primos.
    
          enquanto (v1_2 + v2_2 <> 1) faca
             para x de 1 ate 100 faca
                se (primos[x] <> 0) então
                   enquanto (v1_2 % primos[x] = 0) e (v2_2 % primos[x] = 0) e (v1_2 <> 1) e (v2_2 <> 1) faca
                      resultadoD <- (resultadoD * primos[x])
                      v1_2 <- (v1_2 \ primos[x])
                      v2_2 <- (v2_2 \ primos[x])
    
                      //Se somente 1 número for divisível, o resultado não muda e apenas os valores serão divididos.
    
                   senao
    
                      se (primos[x] <> 0) então
                         se (v1_2 % primos[x] = 0) ou (v2_2 % primos[x] = 0) e (v1_2 <> 1) e (v2_2 <> 1) então
                            v1_2 <- (v1_2 \ primos[x])
                            v2_2 <- (v2_2 \ primos[x])
                         fimse
                      fimse
    
                      //Caso os números resultantes sejam primos
    
                      se (v1_2 = v2_2) e (v1_2 % v1_2 = 0) e (v1_2 <> 1) então
                         resultadoD <- (resultadoD * v1_2)
                         v1_2 <- (v1_2 \ v1_2)
                         v2_2 <- (v2_2 \ v2_2)
                      senao
                         v1_2 <- (v1_2 \ v1_2)
                         v2_2 <- (v2_2 \ v2_2)
                      fimse
    
                   fimse
                fimpara
             fimpara
    
          fimenquanto
    
          //Exibe na tela os resultados finais
    
          escreval()
          escreval(" * MMC[", v1I, ",", v2I, " ]:", resultadoC)
          escreval(" * MDC[", v1I, ",", v2I, " ]:", resultadoD)
          escreval()
    
        fimse
      fimse
    fimalgoritmo

    - Porém agora está ocorrendo um erro:

     

    . VisuAlg encontrou o seguinte problema em seu algoritmo, na linha 154:

    Era esperado encontrar FIMPARA

     

    Me certifiquei de todos os comandos PARA que coloquei tinham um FIMPARA. Saberia me dizer porque está ocorrendo este erro?

     

     

  11. 20 horas atrás, Simon Viegas disse:
    20 horas atrás, Lucas Da Silva Aleixo disse:
    
    
      se (v1 < 0) então
        v1 <- (-(v1))
      fimse
    
      se (v2 < 0) então
        v2 <- (-(v2))
      fimse

     

    Para que está fazendo isso? dá para explicar?

     

    É que caso o usuário insira um valor negativo, automaticamente é convertido para um valor positivo.

     

    20 horas atrás, Simon Viegas disse:

    Outros pontos:

    - Os se são excludentes entre si, logo, a lógica sugere utilizar senão.

    - Qual a relação direta entre 2 e 3; e o cálculo MMC e MDC?

    adicionado 26 minutos depois

    ADENDO....

     

    Falando as mesmas coisas tentando ser mais direto:

    - MDC e MMC é apenas para número positivos;

    - Quando as condições são mutuamente excludentes, se uma for verdadeira, não faz sentido verificar as outras (daí o senão para só verificar "se a anterior for falsa");

    - Nem todo número é decomposto apenas de 2 e/ou 3... experimente inserir, por exemplo, 7 e 14. Deu certo?

     

    Coloquei o 2 e o 3 pois são os 2 primeiros números primos, então o programa vai dividindo até chegar em 1, se não chegar resultará em um número primo, para estes casos coloquei essas linhas de comando.

    enquanto (v1_2 % v1_2 = 0) e (v2_2 = v1_2) faca
      resultadoD <- (resultadoD * 2)
        v1_2 <- (v1_2 \ v1_2)
          v2_2 <- (v2_2 \ v2_2)
    fimenquanto
    enquanto (v1_2 % v1_2 = 0) e (v2_2 = v1_2) faca
      resultadoD <- (resultadoD * 2)
        v1_2 <- (v1_2 \ v1_2)
          v2_2 <- (v2_2 \ v2_2)
    fimenquanto

    O senão não coloquei pois são muitas condições, não apenas uma. Se uma resultar em falso, a outra não necessariamente resultará em verdadeiro.

    • Curtir 1
    • Amei 1
    • Confuso 1
  12. Já consegui.

     

    Era um problema na fórmula. Eu estava tirando o MMC e o MDC de um número por vez, por isso o resultado dava em dobro. Só tive que fazer algumas alterações na fórmula.

     

    algoritmo "MMC e MDC"
    
    var
      v1, v2, v1_2, v2_2 :inteiro
      resultadoC, resultadoD :real
    inicio
      escreval(" =============")
      escreval(" = MMC E MDC =")
      escreval(" =============")
      escreval()
      
      escreva(" - Informe o 1° valor: ")
        leia(v1)
      escreva(" - Informe o 2° valor: ")
        leia(v2)
        
      se (v1 < 0) então
        v1 <- (-(v1))
      fimse
    
      se (v2 < 0) então
        v2 <- (-(v2))
      fimse
        
      v1_2 <- v1
      v2_2 <- v2
      resultadoC <- 1
      resultadoD <- 1
      
      se (v1 = 0) e (v2 = 0) então
        escreval()
        escreval(" * MMC: 0")
        escreval(" * MDC: 0")
      senao
      
      se (v1 = 0) e (v2 <> 0) então
        escreval()
        escreval(" * MMC: 0")
        escreval(" * MDC:", v2_2)
      senao
      
      se (v1 <> 0) e (v2 = 0) então
        escreval()
        escreval(" * MMC: 0")
        escreval(" * MDC:", v1_2)
      senao
      
      se (v1 = v2) então
        escreval()
        escreval(" * MMC:", v1)
        escreval(" * MDC:", v1_2)
      senao
        
      enquanto (v1 % 2 = 0) e (v2 % 2 = 0) faca
        resultadoC <- (resultadoC * 2)
          v1 <- (v1 \ 2)
            v2 <- (v2 \ 2)
      fimenquanto
      
      enquanto (v1 % 3 = 0) e (v2 % 3 = 0) faca
        resultadoC <- (resultadoC * 3)
          v1 <- (v1 \ 3)
            v2 <- (v2 \ 3)
      fimenquanto
      
      enquanto (v1 % v1 = 0) e (v1 <> 1) faca
        resultadoC <- (resultadoC * v1)
          v1 <- (v1 \ v1)
      fimenquanto
      
      enquanto (v2 % v2 = 0) e (v2 <> 1) faca
        resultadoC <- (resultadoC * v2)
          v2 <- (v2 \ v2)
      fimenquanto
      
      enquanto (v1_2 % 2 = 0) e (v2_2 % 2 = 0) faca
        resultadoD <- (resultadoD * 2)
          v1_2 <- (v1_2 \ 2)
            v2_2 <- (v2_2 \ 2)
      fimenquanto
      
      enquanto (v1_2 % 3 = 0) e (v2_2 % 3 = 0) faca
        resultadoD <- (resultadoD * 3)
          v1_2 <- (v1_2 \ 3)
            v2_2 <- (v2_2 \ 3)
      fimenquanto
      
      enquanto (v1_2 % v1_2 = 0) e (v2_2 = v1_2) faca
        resultadoD <- (resultadoD * 2)
          v1_2 <- (v1_2 \ v1_2)
            v2_2 <- (v2_2 \ v2_2)
      fimenquanto
      
      escreval()
      escreval(" * MMC:", resultadoC)
      escreval(" * MDC:", resultadoD)
      
      fimse
      fimse
      fimse
      fimse
    fimalgoritmo

     

    • Amei 1
    • Confuso 1
  13. Código:

    algoritmo "semnome"
    // Função :
    // Autor :
    // Data : 25/07/2018
    // Seção de Declarações 
    var
      v1, v2, v1_2, v2_2, c, d, resultadoC, resultadoD, v1C, v2C, v1D, v2D :inteiro
    inicio
      escreva(" - Informe o primeiro valor: ")
        leia(v1)
      escreva(" - Informe o segundo valor : ")
        leia(v2)
        
      c <- 2
      d <- 3
      resultadoC <- 1
      resultadoD <- 1
      v1C <- v1
      v2C <- v2
      v1D <- v1
      v2D <- v2
      v1_2 <- v1
      v2_2 <- v2
      
      se (v1 = 0) ou (v2 = 0) então
        escreval()
        escreval(" * MMC [", v1C, ",", v2C," ]: = 0")
        escreval(" * MDC [", v1D, ",", v2D," ]: = 0")
      senao
      
      se (v1 < 0) ou (v2 < 0) então
        escreval()
        escreval(" * Este número é negativo.")
      senao
        
      enquanto (v1 + v2 <> 2) faca
        se (v1 mod c = 0) então
          resultadoC <- (resultadoC * c)
            v1 <- (v1 \ c)
        fimse
    
        se (v2 mod c = 0) então
          resultadoC <- (resultadoC * c)
            v2 <- (v2 \ c)
        fimse
    
        se (v1 mod d = 0) então
          resultadoC <- (resultadoC * d)
            v1 <- (v1 \ d)
        fimse
        
        se (v2 mod d = 0) então
          resultadoC <- (resultadoC * d)
            v2 <- (v2 \ d)
        fimse
        
        se (v1 mod v1 = 0) então
          resultadoC <- (resultadoC * v1)
            v1 <- (v1 \ v1)
        fimse
        
        se (v2 mod v2 = 0) então
          resultadoC <- (resultadoC * v2)
            v2 <- (v2 \ v2)
        fimse
        
      fimenquanto
      
      enquanto (v1_2 + v2_2 <> 2) faca
        se (v1_2 mod c = 0) e (v2_2 mod c = 0) então
          resultadoD <- (resultadoD * c)
            v1_2 <- (v1_2 \ c)
              v2_2 <- (v2_2 \ c)
        senao
          v1_2 <- (v1_2 \ c)
            v2_2 <- (v2_2 \ c)
        fimse
    
        se (v1_2 mod d = 0) e (v2_2 mod d = 0) então
          resultadoD <- (resultadoD * d)
            v1_2 <- (v1_2 \ d)
              v2_2 <- (v2_2 \ d)
        senao
          v1_2 <- (v1_2 \ d)
            v2_2 <- (v2_2 \ d)
        fimse
    
        se (v1_2 mod v1_2 = 0) e (v2_2 mod v1_2 = 0) ou (v2_2 mod v2_2 = 0) e (v1_2 mod v2_2 = 0) então
          resultadoD <- (resultadoD * v1_2)
            v1_2 <- (v1_2 \ v1_2)
              v2_2 <- (v2_2 \ v2_2)
        senao
          se (v1_2 mod v1_2 = 0) então
            v1_2 <- (v1_2 \ v1_2)
          fimse
          
          se (v2_2 mod v2_2 = 0) então
            v2_2 <- (v2_2 \ v2_2)
          fimse
        fimse
    
      fimenquanto
        
      escreval()
      escreval(" * MMC [", v1C, ",", v2C, " ]:", resultadoC)
      escreval(" * MDC [", v1D, ",", v2D, " ]:", resultadoD)
        
      fimse
      fimse
    fimalgoritmo

    O programa calcula o MMC e o MDC de dois números informados pelo usuário. Ele calcula e tudo, mas não exibe pois da o erro: Divisão por zero.

     

    Os valores das variáveis de resultado estão corretos, porém na parte de exibir na tela os resultados aparece:

    Capturar.PNG

    • Amei 1
  14. . Preciso de uma fórmula que gere os 4 primeiros números perfeitos de um número perfeito informado pelo usuário.

     

    . Um número perfeito é aquele que é igual à soma dos seus divisores. Ex: 6 = 1+2+3, 28 = 1+2+4+7+14.

     

    . Já consegui fazer um algoritmo para verificar se o número é perfeito. Veja:

     

    algoritmo "semnome"
    
    var
      n, x, soma :inteiro
    inicio
      escreva(" - Informe um número: ")
        leia(n)
        
      para x de 1 ate (n - 1) faca
        se (n % x = 0) então
          soma <- (soma + x)
        fimse
      fimpara
      
      se (soma = n) então
        escreval()
        escreval(" * Este número é perfeito.")
      senao
        escreval()
        escreval(" * Este número é imperfeito.")
      fimse
    fimalgoritmo

    . O problema é que preciso exibir os 4 primeiros números perfeitos caso o número informado for perfeito. Alguém saberia como fazer isso?

     

    Desde já agradeço.

    • Curtir 1
  15. Preciso de um algoritmo que escreva o vetor em ordem crescente e caso possível impedir que sejam gerados vetores iguais. Segue o código:

    algoritmo "semnome"
    // Função :
    // Autor :
    // Data : 11/07/2018
    // Seção de Declarações 
    var
      n :vetor [1..6] de inteiro
      x :inteiro
    inicio
      para x de 1 ate 10 faca
        n[1] := randi(60)
        n[2] := randi(60)
        n[3] := randi(60)
        n[4] := randi(60)
        n[5] := randi(60)
        n[6] := randi(60)
        
      enquanto (n[1] = 0) ou (n[2] = 0) ou (n[3] = 0) ou (n[4] = 0) ou (n[5] = 0) ou (n[6] = 0) ou (n[1] = n[2]) ou (n[1] = n[3]) ou (n[1] = n[4]) ou (n[1] = n[5]) ou (n[1] = n[6]) ou (n[2] = n[1]) ou (n[2] = n[3]) ou (n[2] = n[4]) ou (n[2] = n[5]) ou (n[2] = n[6]) ou (n[3] = n[1]) ou (n[3] = n[2]) ou (n[3] = n[4]) ou (n[3] = n[5]) ou (n[3] = n[6]) ou (n[4] = n[1]) ou (n[4] = n[2]) ou (n[4] = n[3]) ou (n[4] = n[5]) ou (n[4] = n[6]) ou (n[5] = n[1]) ou (n[5] = n[2]) ou (n[5] = n[3]) ou (n[5] = n[4]) ou (n[5] = n[6]) ou (n[6] = n[1]) ou (n[6] = n[2]) ou (n[6] = n[3]) ou (n[6] = n[4]) ou (n[6] = n[5]) faca
        n[1] := randi(60)
        n[2] := randi(60)
        n[3] := randi(60)
        n[4] := randi(60)
        n[5] := randi(60)
        n[6] := randi(60)
      fimenquanto
      
        escreval(x, ".", n[1], " - ", n[2], " - ", n[3], " - ", n[4], " - ",n[5], " - ", n[6])
        escreval("")
      fimpara
    fimalgoritmo

    O QUE JÁ CONSEGUI FAZER:

    - Impedir que o número gerado seja 0.

    - Impedir que os números no mesmo vetor se repitam.

     

    O QUE GOSTARIA DE FAZER:

    - Escrever o vetor gerado em ordem crescente.

    - Caso possível: Impedir que sejam gerados vetores iguais.

     

    Exemplificando:

    - Vetor Gerado:

    n[1] = 34

    n[2] = 23

    n[3] = 2

    n[4] = 54

    n[5] = 53

    n[6] = 25

     

    Saída:

     

    1. 34 - 23 - 2 - 54 - 53 - 25

     

    Como gostaria: 

     

    1. 2 - 23 - 25 - 34 - 53 - 54

     

    E caso possível fazer com que os vetores gerados não se repitam.

     

    Se puderem ajudar agradeço.

     

    • Amei 1

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!