IcaroFilho

Respostas no Fórum

Visualizando 30 posts - 61 até 90 (de 273 do total)
  • Autor
    Posts
  • em resposta a: Exercício 98 #91716
    IcaroFilho
    Moderador

    Bom dia. isto ocorre pois a logica dentro da condição esta errada. vc manda mostrar após a operação.

        elif inicio > fim and passo != 0:
    
            #print(inicio, end=' ') pode retirar esta linha
    
            while inicio > fim:
    
                if inicio < fim:
                    break
    
                if passo > 0:
    
                    print(inicio, end=' ')
                    inicio -= passo
    
                    if inicio < fim:
                        print("deu erro")
    
                if passo < 0:
    
                    print(inicio, end=' ')
                    inicio += passo
    
                if inicio < fim:
                    break
    
            print('Fim!')
            print('-=' * 20)

    com as entradas 10 | -12 | 7 , terá a saída:

    Contagem de 10 até -12 de 7 em 7
    10 3 -4 -11 deu erro
    Fim!

    Em termos aritméticos, a sua saída vai estar correta.. basta corrigir apenas algumas questões logicas e o código estará correto.

    em resposta a: M03A7 – Ex038 – Analisando Idades #91611
    IcaroFilho
    Moderador

    Bom dia.
    Primeiramente, evite usar vaiáveis com 1 letra… por mais que você saiba do que se trata, nos programamos para outras pessoas lerem.
    ex.: i => idade | s => sx ou sexo | m => nome

    Quanto aos problemas.
    Na primeira condição, não esta sendo atribuído os nomes, apenas as idades.

    Eu usaria uma abordagem diferente. Separaria por sexo e depois faria a checagem.

    1- Se sexo F ou M
    2- Se é a primeira entrada
    3 – Se é menor que a idade cadastrada
    4 – se é maior que a idade cadastrada

    usando o seu código, criei o raciocínio para F, basta replicar para M

    se(s == 'F' ou s == 'f'){
        se(nomeFmenor == " "){
    	nomeFmenor = m
    	nomeFmaior = m
    	idadeFmenor = i
    	idadeFmaior = i
        } senao {
            se (i < idadeFmenor ){
            nomeFmenor = m
            idadeFmenor = i
        }
        se (i > idadeFmaior){
            nomeFmaior = m
            idadeFmaior = i
        }
    }
    				}
    em resposta a: Exercício 23 #91610
    IcaroFilho
    Moderador

    Bom dia. seu código esta funcionando.
    Sempre que enviar um código, envie-o configurado. para isso basta cola-lo e seleciona-lo por completo. Depois clicar em CODE na barra superior da caixa de texto. (notará que aparecerá crases no inicio e no fim).
    Possui alguma duvida referente ao exercício ??

    em resposta a: Exercicio – 54 estrutura de repetição validadando dados. #91609
    IcaroFilho
    Moderador

    Para resolver o problema de inicialização basta inicializa-la com valor nulo, lembrando que se tratando de um tipo caracter, tem que se utilizar de aspas simples com um espaço entre elas:
    caracter resp = ' '

    1. Sua condição de tratamento para numero de caracteres esta invertida… ou seja, so esta aceitando nomes com menos de três caracteres. Para corrigir basta inverter o sinal de menor que para maior que:
    se(text.numero_caracteres(teclado)>=3)

    2. Seu programa esta tendo mais dois problemas:
    2.1 Contador de pessoas cadastradas com erro de contagem
    2.2 Nomes e idades incorretos
    isto ocorre pois o seu contador esta inicializando em 1, logo após a etapa de checagem de nomes recebe um acréscimo de 1 e tem seu valor alterado para 2, sendo assim ele não contemplará a primeira condição de cont == 1 e irá pular as atribuições de nomes e idades ao inicializar.
    A correção é simplesmente altera para valor 0 na declaração e para exibir a chamada, usar o método cont + 1 dentro do escreva:
    inteiro cont=0

    escreva("DIGITE A ", cont + 1 ," ° Pessoa:\n \n ")
    2.3 Ainda sim dará erro de valores nas idades. acredito que tenha se perdido nas atribuições de valores e nomes. isto ocorreu pois tentou usar uma variável intermediadora (teclado) quando poderia simplesmente fazer atribuições diretas (sem precisar converter valores).
    Para não ter que refatorar o código, basta que inverta as atribuições

    se(idade<maisnovo){
        idade=maisnovo // o correto é : maisnovo = idade
        novo=nome
    }
    se(idade>maisvelho){
        idade=maisvelho // o correto é : maisvelho = idade
        velho=nome
    }

    3.Dica de boas práticas:
    procure utilizar mais “espaços” … isso deixara seu código mais legível:
    se(text.numero_caracteres(teclado)>=3) -> se( text.numero_caracteres( teclado ) >= 3)
    idade=t.cadeia_para_inteiro(teclado, 10) -> idade = t.cadeia_para_inteiro( teclado , 10 )
    se(idade>maisvelho) -> se( idade > maisvelho)

    Pode parecer bobeira, mas em códigos maiores irá ajudar a ler.

    em resposta a: Ex. 53 #91600
    IcaroFilho
    Moderador

    Bom dia. Basta inicializar as variaveis:

    caracter resp = ' '
    cadeia teclado = ""

    obs: Seu código esta dando a contagem errada errada de entradas pois o contador começa com 1.
    Basca inicializar o contador em 0 que o valor de quantidade de vezes fica correto.. ou então terá que fazer uma operação na saida de cont - 1

    em resposta a: exer 61 #91433
    IcaroFilho
    Moderador

    Bom dia Daniel,
    Você não fez nenhuma gambiarra, apenas dividiu em etapas o processo.
    Excelente trabalho e bons estudos.

    em resposta a: Programação Básica_M04A14_ex65_( somando colunas ) #91431
    IcaroFilho
    Moderador

    Bom dia Abmael,
    Conforme foi explicado pelo Daniel, trata de um verificador, que irá validar quando chegar na ultima linha. o simbolo de “!” é uma negação em programação. Ou seja, enquanto ele não chegar na condição, ele irá exibir o símbolo “+”

    em resposta a: ex 026 #91430
    IcaroFilho
    Moderador

    O código esta bom. Teve algum problema ou dificuldade ?

    em resposta a: Ex 002 #91429
    IcaroFilho
    Moderador

    Bom dia Iago,
    Movi seu tópico pois o mesmo assunto ja foi postado várias vezes.
    Antes de criar um novo tópico, verifique se a duvida já não foi criada no forum, isto ajuda a ter um fórum mais limpo e na facilitação de buscas.
    Teve algum erro ou duvida durante a execução da tarefa ?

    em resposta a: Modulo 3 – Ex 054 #90432
    IcaroFilho
    Moderador

    Boa noite Diego. Qual a versão do Portugol esta utilizando ? tenho instalado a versão 2.7.5
    Se estiver utilizando a versão online, vai quebrar.

    em resposta a: Modulo 3 – Ex 054 #90366
    IcaroFilho
    Moderador

    Bom dia Diego,
    Eu copiei o seu código e o único erro que me retornou foi de variável não inicializada.
    Apenas inicializei as variáveis idade e resp.
    Código esta funcionando corretamente.
    Segue abaixo como ficou:

    programa {
        inclua biblioteca Texto --> txt
        inclua biblioteca Tipos --> tip
        
    	funcao inicio() {
    		
    		escreva("{ EXERCÍCIO 054 - Pessoas Validados } \n")
    		
    		inteiro idade = 0, cont = 0, velho = 0, novo = 0
    		cadeia nome = "", maisVelho = "", maisNovo = "", teclado = ""
    		caracter resp = ' '
    		
    		
    		faca {
    		    escreva("-------------------------\n")
    		    escreva("Pessoa " + (cont + 1))
    		    escreva("\n-------------------------\n")
    		    
    		    //LOOPING DE VALIDAÇÃO DE NOME, O NOME DEVE TER PELO MENOS 3 LETRAS.
    		    enquanto (verdadeiro) {
        		    escreva("NOME: ")
        		    leia(teclado)
        		    
        		    se(txt.numero_caracteres(teclado) >= 3){
        		        nome = teclado
        		        pare
        		    } senao {
        		        escreva("ERRO - O nome deve ter no minimo 3 letras.\n")
        		    }
    		    
    		        
    		    } //FIM DO LOOPING DE NOME
    		    
    		    //LOOPING DE VALIDAÇÃO DE IDADE, A IDADE DEVE SER UM NUMERO INTEIRO ENTRE 1 E 110.
    		    enquanto (verdadeiro) {
    		    escreva("IDADE: ")
    		    leia(teclado)
    		    
    		    se(tip.cadeia_e_inteiro(teclado, 10)) {
    		        idade = tip.cadeia_para_inteiro(teclado, 10)
    		        se(idade >= 1 ou idade <= 110){
    		            pare
    		        } senao{
    		            escreva("ERRO - A idade deve ser de 1 a 110.")
    		        }
    		        
    		    } senao {
    		        escreva("ERRO - O numero digitado deve ser inteiro.")
    		    }
    		    
    		    }//FIM DO LOOPING DE IDADE
    		    
    		    
    		    //VALIDANDO OPCAO DE CONTINUAR
    		    enquanto (verdadeiro){
        		    escreva("Quer continuar? {S/N} ")
        		    leia(teclado)
        		    
        		    se(tip.cadeia_e_caracter(teclado)) {
        		        resp = tip.cadeia_para_caracter(teclado)
        		        se(resp == 'S' ou resp == 's' ou resp == 'N' ou resp == 'n'){
        		            pare
        		        } senao {
        		            escreva("ERRO - A resposta deve ser somente S ou N.")
        		        }
        		        
        		    } senao {
        		        escreva("ERRO - A resposta deve conter apenas 1 letra,")
        		    }
    		    }
    		    
    		    
    		    cont++
    		    
    		    //INICIALIZANDO A VARIAVEL (CASO SEJA O PRIMEIRO NOME DIGITADO)
    		    se (cont == 1) {
    		        velho = idade
    		        novo = idade
    		        maisVelho = nome
    		        maisNovo = nome
    		    } senao {
    		        
    		        //AQUI O PROGRAMA ESTA COMPARANDO A IDADE DIGITADA COM AS IDADES QUE ELE JA TEM ARMAZENADO E SUBSTITUINDO SE CASO ATENDER A CONDIÇÃO
    		        se (idade < novo) {
    		            novo = idade
    		            maisNovo = nome
    		        } 
    		        
    		        se (idade > velho) {
    		            velho = idade
    		            maisVelho = nome
    		        }
    		    }
    		    
    		} enquanto (resp == 'S' ou resp == 's')
    		
    		escreva("----------------------------------\n RESULTADO \n----------------------------------\n")
    		escreva("Você cadastrou " +cont + " pessoas.\n")
    		escreva("A pessoa mais nova é " + maisNovo + " com " + novo + " anos.\n")
    		escreva("A pessoa mais velha é " + maisVelho + " com " + velho + " anos.\n")
    	}
    }
    em resposta a: Aula #16 – enumerate() #90270
    IcaroFilho
    Moderador

    Bom dia pedro,
    Vc utiliza o enumarate quando deseja pegar o índice do elemento e o elemento.
    por exemplo:

    my_list = ['apple', 'banana', 'grapes', 'pear']
    for posicao, elemento in enumerate(my_list):
        print posicao, elemento

    # Saida:
    # 0 apple
    # 1 banana
    # 2 grapes
    # 3 pear

    Também aceita argumento que altera o contador:

    my_list = ['apple', 'banana', 'grapes', 'pear']
    for posicao, elemento in enumerate(my_list, 1):
        print(posicao, elemento )

    # Saida:
    # 1 apple
    # 2 banana
    # 3 grapes
    # 4 pear

    O uso depende do tipo de problema.

    em resposta a: Anki como Ferramenta de estudos #89994
    IcaroFilho
    Moderador

    Excelente dica.
    Eu utilizo o Anki app pro Iphone [LINK] que tbm é multiplataforma e para as anotações o Notion [LINK] que tbm da pra usar em qualquer plataforma.

    em resposta a: Ex 52 – Pirâmide B #89989
    IcaroFilho
    Moderador

    Boa tarde Arthur.
    Existe diversas formas de se realizar esse desafio, pois tudo é relativo a perspectiva que se enxerga o problema.
    O importante é o código ter ficado limpo e resolvido o problema.
    Por exemplo, eu enxerguei uma P.A na base do triangulo, tendo base inicial igual a 3 e sempre que se sobe 1 andar, adiciona + 2 a base.
    Tendo isso como primícia, basta fazer o laço para “subir” até o centro do triangulo e depois “descer”

    Segue meu código:

    programa {
        funcao inicio() {
            inteiro base = 3
            inteiro andar, base_num
    
            escreva("Quantos andares a pirâmide vai ter? ")
            leia(andar)
            base_num = base + ((andar-1) * 2 )
    		
            para(inteiro b = 0; b < base_num; b++){
    		    
                se(b > (base_num /2)){
                    para(inteiro altura = base_num -1 ; altura > b; altura--){
                        escreva("*")
        		    }
                } senao {
                    para(inteiro altura = 0 ; altura < b; altura++){
                        escreva("*")
                    }
                }
    		    
                escreva("*\n")
            }
        }
    }

    PS: Nó meu código estou cogitando que a base não conta como altura, assim como um prédio que conta o primeiro andar o segundo pavimento.

    • Esta resposta foi modificada 2 anos, 8 meses atrás por IcaroFilho.
    em resposta a: Exercício 010 – Módulo 001 – Não Fume. #89985
    IcaroFilho
    Moderador

    Boa tarde João,
    Não esta correto o código.
    vc esta determinando que seu usuário fuma a 8 anos sempre (real tot_cigarros_anos = tot_cigarros * 8)
    Eu dei uma resposta bem detalhada no começo no tópico. de uma olhada e revise seu código.
    Caso tenha problemas ou duvidas, retorne.

    em resposta a: questões 6 e 8 do modulo 1 programação #89984
    IcaroFilho
    Moderador

    Marcos, movi seu tópico pois o mesmo já foi criado.
    Antes de abrir um novo tópico, procure pelo forum se alguem ja não teve a mesma duvida.

    Aqui tem bastante conteúdo referente ao que deseja. se ainda permanecer com duvida, fale por aqui que ajudaremos.

    em resposta a: MODULO 03 EX030 #89905
    IcaroFilho
    Moderador

    Boa tarde,
    1. a variável logica “pin” não esta sendo utilizada. pode descarta-la
    2. quando nomear variáveis evite usar “a”, “b”, “c” …., de nomes que façam sentido. Lembre-se de que se programa para outros desenvolvedores lerem.
    3. Não precisa da equação x = x + 1. Basta inicializar o x com valor 1
    -Sua duvida-
    4. Vc esta mandando escrever a variável x, independente do de qualquer checagem. logo ele sempre será impresso.
    tem que por uma condição para ela ocorrer.
    ex.:

    se(x % 4 == 0) {
        escreva("pin-")
    } senao {
        escreva(x,"-")
    }

    5. correções:

    programa
    {
    	funcao inicio()
    	{
    		inteiro x = 1, y
    		escreva(" Contar até: ")
    		leia(y)
    		enquanto (x <= y){
         		se(x % 4 == 0) {
        		    escreva("pin-")
        		} senao {
        		    escreva(x,"-")
        		}
         		x = x + 1
     		}
    	}
    }

    fica um desafio de deixar de exibir o ultimo “-” quando o programa finaliza.
    Bons estudos

    em resposta a: Aula 06 – Exercício 04 #89901
    IcaroFilho
    Moderador

    Bom dia Gabriel,
    esta escrito whrite ao invés de write tanto na sua linha 2 quanto na linha 3 onde esta dando erro.

    em resposta a: exercicio 053 #89212
    IcaroFilho
    Moderador

    Bom dia. reproduzi se código aqui. não esta me dando problema na inicialização, e sim nas validações.

    em resposta a: Ex008.Al11 #89210
    IcaroFilho
    Moderador

    acredito que o problema dela tenha sido a troca da crase por aspas

    em resposta a: Precedência global #89178
    IcaroFilho
    Moderador

    Boa noite Renato.
    Vou tentar passar oq eu acredito que ocorra, pois não sou nenhum especialista.

    primeiramente isto ocorre apenas com a negação.

    logico choice
    choice = 5 > 7 e 5 > 3
    escreva(choice) //falso
    logico choice
    choice = 5 > 7 ou 5 > 3
    escreva(choice) //verdadeiro

    O problema com o nao é que ele serve para umas coisas mais avançadas (como exemplo em javascript, que a negação faz checagem se o valor passado é vazio, nulo ou undefined antes de realizar a operação), provavelmente o mesmo deve ocorrer por debaixo dos panos em Portugol.
    Contudo, é uma boa pratica a utilização dos parênteses nestes tipos de operação, por mais simples que for a operação.:
    choice = ( 1 < 2 )
    pois facilita a leitura para outros programadores lerem. ( uma das principais qualidades de um Dev e saber criar um código limpo para que outros programadores leiam )

    em resposta a: EXERCÍCIO 74 #89156
    IcaroFilho
    Moderador
    from random import randint
    minha_lista= list()
    maior = menor = 0
    print("O computador sorteou os valores: ", end='')
    for n in range(1, 6):
      numeros = (randint(1,10))
      print(numeros, end=". ")
      minha_lista.append(numeros)
    print(f"\nO maior valor sorteado foi {max(minha_lista)}")
    print(f"O menor valor sorteado foi {min(minha_lista)}")

    para usar seu laço for com o max / min seria assim …

    em resposta a: EXERCÍCIO 74 #89147
    IcaroFilho
    Moderador

    Neste exercício ele simplesmente quis lhe mostrar 2 métodos utilizados em listas. o Min e o Max ,que facilitam o trabalho.
    vc fez do modo que funciona por “de baixo dos panos”.
    o max entra dentro da lista e checa, indice a indice os valores e retorna o maior deles. o mesmo acontece pro min, so q pro menor valor.
    vc realizou este processo não mão ao checar elemento por elemento.

    o append é o método que adiciona um valor no final da lista. ex.:

    minha_lista = [2,3]
    minha_lista.append(4)
    print(minhaLista) // [2,3,4]

    o problema do seu código não é o IF. eu disse pra tirar pq se tornaria redundante / desnecessária a checagem.
    Seu problema está no tipo de variável.
    min e max só podem ser utilizados em variáveis do tipo lista e as suas variáveis são do tipo INT.

    em resposta a: ERRO ALGORITMO CINEMA ESTUDONAUTA #89122
    IcaroFilho
    Moderador

    Bom dia Darcio. o seu método esta construído errado.

    documentação:
    formato de hora 12h : booleano verdadeiro ==> hora_sis =( c.hora_atual (verdadeiro))
    formato de hora 24h: booleano false ==> hora_sis =( c.hora_atual (falso))

    falta terminar a lógica do horário.

    em resposta a: EXERCÍCIO 025 – MAIOR, INTERM, MENOR #89116
    IcaroFilho
    Moderador

    Bom dia. este é um erro comum da linguagem. para isso basta inicializa-las na declaração.

    
    inteiro maior = 0
    inteiro interm = 0
    inteiro menor = 0
    
    em resposta a: Módulo 1 – Exercício 12 #89114
    IcaroFilho
    Moderador

    Bom dia,
    Está correto sim. Parabéns
    Só cuidado ao escrever métodos dentro de métodos pois pode dificultar a leitura.

    em resposta a: AO DIGITAR OPÇAO 1 É EXIBIDO RESULTADO DA OPÇÃO 2 #89102
    IcaroFilho
    Moderador

    Darcio, movi seu tópico para cá pois o erro é o mesmo.

    em resposta a: AO DIGITAR OPÇAO 1 É EXIBIDO RESULTADO DA OPÇÃO 2 #89095
    IcaroFilho
    Moderador

    Bom dia Darcio,
    o problema é que vc esta declarando o valor da opcao após a leitura. sendo assim independente do valor que por, ele vai valer o ultimo descrito: ex.:

    seu coóigo

    escreva(“\nDigite sua opçao => “)
    leia(opcao)

    Supondo que eu entre na opção 5 (natal)

    continuando seu código.
    opcao = ‘1’
    o valor 5 vai ser substituído por 1
    opcao = ‘2’
    o valor 1 vai ser substituído por 2

    por isso independente do valor que por, ele sempre será a opção 2.
    Para corrigir basta apagar essas atribuições.

    em resposta a: EXERCICIO 14 MODULO 2 CONDICIONAIS #89093
    IcaroFilho
    Moderador

    Bom dia Douglas.
    Não existe apenas uma resposta correta. Sempre haverá diversas maneiras de se resolver o mesmo problema. Ai está a magica da programação.
    Quanto ao seu código, a lógica esta correta. o erro está apenas na ultima linha que esta declarando um valor fixo. ( R$ 900,0)
    Para isto vc pode fazer um calculo dentro do próprio escreva.
    escreva("O valor a ser pago é de " + ( valor - desconto ) + "! volte sempre!")

    em resposta a: EXERCÍCIO 74 #89090
    IcaroFilho
    Moderador

    Bom dia Gabriel.
    Os métodos max e min são utilizados em listas.
    No seu código, está usando em números inteiros e ai da erro.
    Caso queira utilizar os métodos max e min você pode fazer com que os numeros gerados randomicamente sejam adicionados a uma lista vazia ( por meio de um append, e exclua toda a logica de if ) e ao final poderá executar o min e max.

    Tente resolver e caso não consiga, só postar aqui novamente.

Visualizando 30 posts - 61 até 90 (de 273 do total)