Ir ao conteúdo

Midori

Membro Pleno
  • Posts

    3.601
  • Cadastrado em

  • Última visita

Tudo que Midori postou

  1. @Noferatus21 Em vez de testar strings seu programa podia oferar as opções no menu entre 1 e 3, assim poderia usar switch com esses valores inteiros. Seu código tem alguns problemas nos cálculos. No cone a geratriz é a relação da altura e raio, então se tivesse que usar isso ela devia ser o cálculo com as outras duas variáveis (g² = h² + r²) e não uma entrada do usuário. E o cálculo da área é π * r(r + √(h² + r²)). Na esfera onde você divide 4/3, como é uma operação entre inteiros o resultado fica arredondado. Para evitar isso você pode passar pelo menos uma constante double, p.ex: 4/3.0. E como a altura é usada apenas no cone e cilindro, você podia colocar essa entrada só nessas duas condições.
  2. @Cairo Alberto Pode colocar a diretiva no inicio ou no fim. Basta uma vez, load M(0xA) add M(0xB) .org 0xA .word 0x2 .word 0x4 No simulador, a instrução load vai pegar o valor 2 do endereço 0xA e colocar no registrador AC para depois somar AC com o conteúdo de 0xB. Os dois passos, veja o registrador AC, E a memória em hexadecimal, Mas o enunciado pede para primeiro guardar no registrador B, depois no C e salvar o resultado no A.
  3. @Cairo Alberto Assim você está tentando mover o dado diretamente com LOAD, mas essa instrução move entre o registrador e a memória. No documento mostra que para colocar o dado na memória tem as diretivas ORG e WORD. A primeira para indicar a posição da memória e segunda o dado, p.ex, .org 0x100 .word 0x2 .word 0x4
  4. @Amandanerva Se a sua versão for a 365 tem algumas fórmulas que pode aplicar para tirar as repetições na contagem das empresas.
  5. @Jesiel Isso é um problema dessa versão. Veja este tópico para saber mais, https://www.clubedohardware.com.br/forums/topic/1637427-resultado-final-dando-0/
  6. @Deltaprimo Pode ser com Indice e Corresp. Para pegar o anterior, =ÍNDICE($B$2:$B$21;CORRESP($D$12;$B$2:$B$21;0)-1) E o próximo é +1 em vez de -1
  7. Bem observado, se fosse 1006 já apresentaria o resultado errado. Outra alternativa é fazer o teste da condição antes. Algoritmo "Numero" Var Num: Inteiro Inicio Num <- 1006 Enquanto não (Num Mod 11 = 5) Faca Num <- Num + 1 FimEnquanto Escreval("O Numero e ", Num + 11 * 4) FimAlgoritmo
  8. @Eli Almeidaa O que o @JorgeGus comentou faz sentido. Dá para resolver sem loop, mas uma das formas com contador é iniciado com 1001 para fazer loop até o primeiro. E depois um cálculo para mostrar o quinto que é 1050 como comentou, Algoritmo "Numero" Var Num: Inteiro Inicio Num <- 1001 Repita Num <- Num + 1 Ate (Num Mod 11 = 5) Escreval("O Numero e ", Num + 11 * 4) FimAlgoritmo
  9. @GENECIOFICIAL Usei DATADIF na fórmula, mas não precisava. Dá para fazer um cálculo simples da diferença entre as datas, =SE(-1^QUOCIENTE(B6-$B$2;12)>0;"PROG."&(MOD(B6-$B$2;12)+1);"REGRE." &12-(MOD(B6-$B$2;12)))
  10. @Eli Almeidaa Testou o seu código? Ele apresenta erro de execução e também não está como sugeri. O Repita é mais simples do que tentou fazer. A leitura tem que ficar dentro do loop ou será feita apenas uma vez. Algoritmo "Numero" Var Num: Inteiro Conta: Inteiro Inicio Repita Leia(Num) Se(Num > 1000) E (Num Mod 11 = 5) então Conta <- Conta + 1 FimSe Ate Conta >= 5 Escreval("O numero e ", Num) Fimalgoritmo
  11. @GENECIOFICIAL Veja se é isto. Ao arrastar a partir da linha 6, inicia o incremento com o prefixo PROG. Quando chegar a 12 passa a decrementar com o prefixo REGRE, =SE(-1^QUOCIENTE(DATADIF($B$2;B6;"d");12)>0;"PROG."&(MOD(DATADIF($B$2;B6;"d");12)+1);"REGRE." &13-(MOD(DATADIF($B$2;B6;"d");12)+1))
  12. @Diegodcr No parâmetro After de Add passe a primeira planilha, Set Nova = Planilha.Worksheets.Add(After:=Planilha.Sheets(1))
  13. @Diegodcr Faça um teste, se transpor aparecer na última coluna não terá numeração. Para pegar todas as planilhas faça um loop no diretório passando os nomes como argumento para o procedimento. Sub MacroTransporValores() Call TransporValores(Workbooks.Open("C:\planilhas\planilha base1.xls")) End Sub Sub TransporValores(Planilha As Workbook) Dim Aba As Worksheet Dim Nova As Worksheet Dim Area As Range Dim Linha As Long Dim Conta As Long Set Aba = Planilha.ActiveSheet Aba.[A:A].EntireColumn.Delete Aba.[1:3].EntireRow.Delete Set Nova = Planilha.Worksheets.Add Call Aba.[1:1].Copy Call Nova.[A1].PasteSpecial(Transpose:=True) If WorksheetFunction.CountIf(Nova.[A:A], "transpor") Then Linha = WorksheetFunction.Match("transpor", Nova.[A:A], 0) Conta = Nova.[A1].CurrentRegion.Rows.Count If Conta - Linha > 0 Then Set Area = Nova.Cells(Linha + 1, "B").Resize(Conta - Linha) Area.Formula = "=ROW()-" & Area.Cells(1).Row - 1 Area.Value = Area.Value End If End If End Sub
  14. Edit. Agora vi que transpor aparece na coluna D da correta, mas nas bases não.
  15. @Eli Almeidaa Antes de começar a escrever o código é preciso entender quais passos seguir para chegar na solução. Seu programa deve ler o número indefinidamente até, pela quinta vez, ser maior que 1000 e com resto 5 para a divisão por 11. O comando Para não é o mais adequado já que ele repete uma sequencia até chegar a um determinado valor. O outro laço para esse caso pode ser o Repita, p.ex, Repita Leia(Num) Ate Num >= 5 Assim vai ficar em loop até a entrada receber um valor maior ou igual a 5. No seu é quase isso já que você deve pegar a entrada e a partir dela testar se chega nas condições pedida no enunciado. Para isso tem aquele Se que comentei. E o Repita não é para o valor da entrada, mas para um contador que mostre que chegou na condição cinco vezes.
  16. @Diegodcr Se o problema é o tempo talvez resolva com um delay antes fechar as planilhas. Este é de 5s. Call Application.Wait(Now + TimeValue("00:00:05"))
  17. @Diegodcr Faça um teste com este código no fim da sua Sub fora do loop. Assim vai tentar fechar todas as planilhas abertas. Sub FecharPlanilhas() Dim Planilha As Workbook For Each Planilha In Workbooks If Planilha.Name <> ThisWorkbook.Name Then Call Planilha.Close(False) End If Next Planilha End Sub
  18. @Diegodcr O erro pode ser porque na planilha está xls e a extensão é xlsx (o anexo que postou é xlsx). Mas se o literal deu certo sem extensão, tenta remover a extensão do nome na célula ou via código.
  19. @Diegodcr Não tenho esse ambiente SAP aqui para testar o código. Mas em vez de especificar o nome literal, tenta passar a variável nomesalvar para Workbook já que o nome muda de acordo com a coluna E. Workbooks(nomesalvar).Close SaveChanges:=False
  20. Um contador nada mais é que qualquer variável que pode ser incrementada ou decrementada. Normalmente é usado em loops. Incremento é quando aumenta o valor, p.ex: i <- i + 1. E o decremento: i <- i - 1. A condição Se que falei será verdadeira para o que o enunciado pede. Então dentro dela vai esse contador que pode ser verificado depois se chegou a cinco (o quinto número).
  21. @Diegodcr Se possível anexe o arquivo com a macro. Pode ser com dados fictícios.
  22. A questão do título também é com loop. Como o enunciado não especifica mais nada entendo que deve terminar quando chegar nas condições: Quinto número maior que 1000 e com resto 5 para a divisão por 11 (o número 1006 p.ex). Para pegar o resto da divisão tem o operador Mod e o teste pode ser assim: Se((Num > 1000) E (Num Mod 11 = 5)). Você pode colocar um contador nessa condição para depois verificar se chegou a 5.
  23. @João Marcos C Silva Aplique novamente a fórmula SEERRO. Ela tem dois parâmetros, SEERRO(valor; valor_se_erro) Veja como usei essa fórmula. Para valor passei o PROCV que busca na coluna A e, caso encontre algo, esse será o valor apresentado na célula. Mas se esse PROCV der erro o retorno será o que tiver no outro passado para valor_se_erro. Então é só pegar toda a fórmula e passar como primeiro argumento de SEERRO. E no segundo você pode colocar um texto informando que nada foi encontrado.
  24. @João Marcos C Silva Com a busca na coluna A se o valor não for encontrado, PROCV vai retornar um erro. Esse pode ser o critério para tentar fazer a busca na B. Para isso tem a fórmula SEERRO, =SEERRO(PROCV(A3;'1'!$A:$K;4;0);PROCV(A3;'1'!$B:$K;3;0)) Caso o primeiro PROCV retorne erro, vai para o segundo.
  25. @Eli Almeidaa Está correto. Outra forma com loop poderia ser assim, Algoritmo "Media da Classe" Var Nota1: Real Nota2: Real Total: Real Nome: Caractere Conta: Inteiro Aprov: Inteiro Inicio Para Conta <- 1 ate 6 faca Escreva("Nome ", Conta, ": ") Leia(Nome) Escreva(" Nota 1: ") Leia(Nota1) Escreva(" Nota 2: ") Leia(Nota2) Se((Nota1 + Nota2)/2 > 7) então Aprov <- Aprov + 1 FimSe Total <- Total + Nota1 + Nota2 FimPara Escreval("MEDIA DA CLASSE: ", Total/12) Escreval("APROVADOS: ", Aprov/6 * 100, "%") Escreval("REPROVADOS: ", (1 - Aprov/6) * 100, "%") Fimalgoritmo

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...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!