Ir ao conteúdo

Simon Viegas

Membro VIP
  • Posts

    3.940
  • Cadastrado em

Tudo que Simon Viegas postou

  1. Olá. Alguns pontos: 1) Ao usar o Ramdon(), é necessário usar o Randomize, para embaralhar os números! (aqui, se não usar, os números se repetem!!... Usar o Randomize faz parte do processo, mesmo que não esteja repetindo... Pode colocar logo após o BEGIN principal 2) Na parte da intercalação, você pode simplesmente inicializar a variável antes do for, colocando cont:=0;. Daí não vai ser mais preciso o if/else. PS: uma outra forma de fazer um cont:cont+1; é usar um Inc(cont);. (tem o mesmo resultado, só que mais elegante) 3) Dá para intercalar sem usar o cont... basta usar o próprio i. Veja que existe uma relação entre o valor de i e a posição em C. (deixo para você tentar, se quiser, desenvolver). Ficaria algo assim: for i := 1 to 3 do { FOR Intercalação dos valores de matrizA e matrizB em matrizC} begin matrizC[xxxx]:=matrizA[i]; matrizC[yyyy]:=matrizB[i] ; end; { fim for intercalação} Onde esse xxxx e yyyy são expressões matemática... ou seja, "uma conta". Pense assim... no primeiro loop, o i vale 1, e quanto devem valer as posições de C para receber o A e receber o B? No i valendo 2, quanto devem valer? Ai verá que existe uma correlação simples...só montar a fórmula e jogar no lugar do xxxx e yyyy respectivamente. Observação/Complementação: assim como podem-se usar uma variável, como o i e o cont, é possível usar uma expressão matemática de boa, e o vetor vai usar o resultado dessa conta, ou seja, qualquer coisa que "retorne um número" pode ser usado como parâmetro, entende? Por exemplo, o ReadKey é uma function que serve para "ler uma tecla, e retornar o código da tecla nela mesma", correto? (no seu código, ela está sendo usada como um "pause", ou seja, como o programa fica esperando uma tecla, essa característica é usada para pausar o programa). Se quisesse, daria para usar o número retornado como parâmetro também, algo como: matrizA[Readkey]; Correto? Mas não, pois o ReadKey retorna "uma letra"!!!, mas o parâmetro do vetor é um número!! Logo, seria necessário converter a tal "letra", em número... algo assim: matrizA[ord(ReadKey)-48]; Obs.: Esse "-48" é para compensar... pois o valor convertido não fica igual ao correspondente em caractere... Então, o Ord() converte o caractere em número, após o - subtrai 48... o resultado disso dá um número, que por sua vez é "jogado" no parâmetro! Então, o resultado disso é um número, logo é válido*! Veja, isso é só uma "explicação" para "provar" que qualquer coisa que retorne um número pode ser usado... para abrir a mente!!! Abaixo seu código com uns pequenos ajustes em relação sintaxe, que podem servir como sugestão/dicas... Program Pzim; uses CRT; //necessário declara a biblioteca em alguns compiladores (como meu caso, no Free Pascal) var matrizA, matrizB: array[1..3] of integer; matrizC: array[1..6] of integer; i, j, cont: integer; BEGIn for i := 1 to 3 do { FOR Atribir valores aos elementos de matrizA e matrizB} begin matrizA[i]:=Random(10); matrizA[i]:=Random(10); end; { Fim for Atribuição dos valores de matrizA e matrizB} for i := 1 to 3 do { FOR Intercalação dos valores de matrizA e matrizB em matrizC} begin if cont = 0 then cont:=1 else cont:=cont+1; matrizC[cont]:=matrizA[i]; cont:=cont+1; matrizC[cont]:=matrizB[i] ; end; { fim for intercalação} for i := 1 to 3 do { FOR imprime valores de matrizA na tela } writeln( 'matrizA-', i,' = ', matrizA[i] ) ; {writeln( ) ;} //dá para simplificar o comando writeln; for i := 1 to 3 do { FOR imprime valores de matrizB na tela } writeln( 'matrizB-', i,' = ', matrizB[i] ) ; writeln; for i := 1 to 6 do { FOR imprime valores de matrizC na tela } writeln( 'matrizC-', i,' = ', matrizC[i] ) ; ReadKey; END.
  2. Olá @rovoliveira, 1) Um detalhe... 1 até 1 e k até k é um laço só, logo não faz sentido usar um for. 2) Entenda o problema O enunciando já diz: Ou seja, insere um de A, e após um de B, insere um de A, após um de B.... Como no exemplo.. Ou seja, na hora de intercalar, para cada loop (como são 3 em cada, serão 3 loops), você insere um de A e outro de B em C (controlando as posições de C separadamente, ou usando alguma fórmula que se relacione com o loop que está). No aguardo.
  3. Olá @Luiz Vilaça, Você precisa desenvolver/encontrar uma forma para descobrir se um número é múltiplo de outro ou não. Uma forma bem popular é "dividir um número pelo outro e verificar se tem resto"... após, implementar no contexto do seu algoritmo. No aguardo.
  4. Olá @lordzhinho, Já conseguiu desenvolver restante do programa? Qualquer coisa, posta o código atual aqui e onde está com dúvidas. No aguardo.
  5. Olá. @Vinícius Machado, qual a sua dúvida? você só postou um enunciado e um código... Mas vamos lá.. Sugiro que tente fazer o código aos poucos, e não tudo de uma vez... tente sempre deixar seu código compilável e vá adicionando as estruturas aos poucos. Algo mais ou menos assim: {algortimo matriz} //erro de ortografia e o nome fica entre parânteses algoritmo "matriz" {variaveis} //essa não é a sintaxe var {M[2][2], R[2][2], ii,j;} //precisa corrigir essa declaração de variáveis... //pesquise na internet como declarar variáveis no VisuAlg, no caso como //declarar MATRIZES e INTEIROS. inicio {para (ii=1;ii<=2;i++) para(j=1;j<=2;j++)} //pesquise na internet como utilizar o PARA no VisuaAlg Escreva ("Informe um numero inteiro") Leia (M[ii][j]) fimPara fimPara fimAlgoritmo Corrija esse trecho... depois insira um trecho para imprimir a Matriz, ou seja, para testar se leu a matriz corretamente. por ai vai... No aguardo.
  6. Olá, Essa questão ainda existe. No caso eu precisando dar 2 ENTER para continuar. Novos pontos que considero notáveis: 1) Pequeno ajuste... Acho que seria melhor dar um espaço após o "positivo". Algo como: write(' Digite um número inteiro e positivo (>0): '); readln(n); 2) Em relação ao trecho abaixo: Esse if passou a ser desnecessário... já que o while "garante" que o n vai ser maior que 0. 2) Em relação ao trecho abaixo: Por uma questão estética, acho que poderia inverter a ordem dos fatores... ficando algo como: soma:=soma+(1/fat); Não sei, mas acho que faz mais sentido nessa ordem... 3) Em relação ao trecho abaixo: Nesse caso, o begin/end é desnecessário... já que tem apenas umas instrução no for. 4) Código teste Tomei a liberdade e adicionei alguns linhas para efetuar testes, caso queira testar... while (x<=n) do begin fat:=1; for i:=1 to x do fat := fat*i; //1*1, 1*2, 2*3, 6*4, 24*5... writeln('Fat: ',x:3,' = ',fat:36:0,' - 1/fat = ',1/fat:0:30); //TESTE - exibe dados em tela para conferência if x mod 20 = 0 then readkey; //pause a cada 20 linhas soma:=soma+(1/fat); x:=x+1; end; É só substituir o trecho correspondente... PS: esse ":X:Y" depois das variáveis numéricas servem para "formatar o número". O X=casas reservadas a esquerda; e o Y=casas decimais a serem exibidas. Caso queira testar, vá modificando esses valores e vai verificado o que vai mudando. ** No aguardo.
  7. Olá @eiji7, Alguns ponto que acho que precisam ser verificados: 1) Você não deve usar o E para auxiliar no cálculo da divisão. O E serve para a resposta final e pronto!. Use outra variável! Mesmo sendo do mesmo tipo, e teoricamente não impactando no resultado, é bom não misturar as coisas... poderia ser result, calc etc... 2) Primeiro você tem que calcular o fatorial de N, e aí só depois obter o resultado da divisão de 1/N! e ir somando...você misturou uma coisa com outra e acho que o resultado não está dando correto!!! obs.: por sinal, você pode dividir direto na soma... algo como: soma:=soma+1/fat; (ou se quiser separado, lembrar do que foi dito acima e não usar o E) 3) No final de programa tem readkey de mais... basta um. 4) A variável soma não foi inicializada. Se N for igual a 0, qual o valor de soma em E:=1+soma; ? obs.: teoricamente o Pascal zera as variáveis, mas conceitualmente a variável deveria ser inicializada manualmente. 5) No programa você diz "Digite um número inteiro e positivo:", mas está aceitando o 0! Entretanto o 0 não é positivo!!! Precisa corrigir o texto! No aguardo.
  8. Olá. Dei uma analisada no seu código e fiz o seguinte teste: if A[y] = B[k] then begin p := p + 1; I [p] := A [y]; { armazena A[i] no conjunto interseção } Achou := true; writeln(I[p]); //<---TESTE end; Pelo testes, está armazenado corretamente... Se armazenou corretamente, advinha onde está o erro? for j:= 1 to p do writeLn(I[p]); //<---aqui deve usar o j! Eu acho que é só isso!
  9. Olá. Qual linguagem de programação? Por favor, poste aqui o que já conseguiu fazer e onde está com dúvidas. No aguardo.
  10. Olá @Luca Neto. 1) Em relação à ordenação, você pode usar um dos métodos de ordenação já existentes... claro que existe a possibilidade de você inventar um ou deduzir por conta própria algum, mas não aconselho, pelo menos por enquanto! (a roda já está inventada). Então, dos métodos existes, entre os mais práticos e simples, sugiro utilizar o Select Sort ou Bubble Sort. São intuitivos e de fácil implementação. Ai você também precisa ver se vai ordenar a lista original ou se vai fazer uma cópia (e ordenar a cópia). O algoritmo para esse método também está pronto e disponível na internet, apenas você terá que adaptar para "ponteiros", já que normalmente encontram-se com "vetores". Mas o princípio é o mesmo, em vez de "percorrer posição por posição do vetor", você terá que "percorrer posições da estrutura encadeada". Uma outra forma seria você utilizar uma outra estrutura de lista encadeada, onde está já insere os dados em ordem (algo como "Lista Encadeada Ordenada" (ou Lista Duplamente Encadeada Ordenada) - a sua é apenas "Lista Duplamente Encadeada"), ou seja, você adiciona todos os elementos da sua lista nessa "lista ordenada", e por consequência terá a lista ordenada. Obs.: Como é fácil deduzir, para cada ordenação, você precisa definir qual o parâmetro, no caso pelas letras, ou pelos números. *** 2) O que ocorre? Se for em relação aos caracteres armazenados, creio que está certo.. mesmo se digitar mais, ele só vai aceitar os 3 ou os 4 primeiros respectivamente. Se estiver se referindo na hora de digitar é assim mesmo, o Pascal não vai limitar a quantidade de caracteres digitados... esse limite é relacionado ao que vai ser armazenado. Ou se for outra coisa, por favor, tente explicar melhor. Obs.: Se tiver interesse para limitar na hora de digitar, ou seja, que só aceite 3 ou 4 letras e pare de escrever na tela, dá para implementar. Inclusive que só aceite letras ('A' a 'Z', no caso). Eu até tenho uma ideia de como pode fazer... mas você pode deixar isso para depois, já que não posso te dar uma resposta pronta para isso, e creio que não vai ser tão simples tentar explicar como fazer agora. (não seria nada de outro mundo, entretanto acho que isso seria tema para um tópico exclusivamente para isso). *** No aguardo.
  11. Olá @Matheus Santos_391593, primeiramente vamos tratar da questão da sintaxe... abaixo seu código com alguns comentários: algoritmo "FCdH" var a:inteiro funcao resultado(x:inteiro):inteiro var r,num:inteiro inicio num <- a mod 2 //aqui você deveria usar o X!!! [1][SimonViegas] se (num = 0) então r<- 1 senao r<- 0 fimse escreval(r) //aqui não é para escrever, mas sim retornar! [2][SimonViegas] fimfuncao inicio escreva("Digite o número: ") leia(a) escreval(resultado(a)) fimalgoritmo { OBSERVAÇÕES - [1] "a" é uma variável Global, até dá para usar diretamente como você está fazendo, entretanto, conceitualemente, tudo que for usado dentro de uma FUNCAO ou PROCEDIMENTO, deve ser repassado por parâmetro ou criado dentro da própria estrutura. Mas nesse caso, você apenas deve mudar para "x"!!! Perceba que você já está passando o "a" lá na parte do programa. "x" será uma cópia de "a"! RESUMIDAMENTE: troque "num <- a mod 2" por "num <- x mod 2" - [2] Você está tratando uma FUNCAO como se fosse um PROCEDIMENTO. Veja, nas FUNCAO é obritário retonrnar algo, como comentei anteriormente, "se não retornar algo, não fará sentido ser uma função, logo teria que transformar em PROCEDIMENTO.". RESUMIDAMENTE: troque de "escreval(r)" para "retorne r" } Veja, essas "correções" estão relacionadas à sintaxe, algo mais voltado as regras/conceitos da linguagem... não estou me preocupado se a lógica utilizada para «verificar se tal número é primo» está certa ou não!!! *** Segundamente, vamos à questão da lógica... você já sabe mais ou menos bem o que é um número primo? qual a forma que você idealizou para verificar se um número é primo ou não? Primeiro tem que entender o foco do programa (primos), depois buscar uma solução (verificar se é primo ou não). *** Veja, são duas coisas distintas: a primeira parte está relacionada a fazer o programa rodar. A segunda está relacionada a fazer o que se quer. PS: ainda estou do aguardo do código da Questão 2. No aguardo
  12. Se conseguiu, poste sua resposta... sugiro que tente fazer tanto com procedimento, tanto com funcao. (2 códigos)
  13. Olá @Matheus Santos_391593. Você está utilizando o procedimento de forma incorreta. Você não pode "escrever" extenso(), pois ele é um procedimento! Os procedimentos não retornam valores neles mesmo, para isso, você pode usar funcao... Você tem (pelo menos) duas opções: ou apenas chama o extenso(num) diretamente (tira do escraval()), ou transforma extenso() em funcao, ai lá dentro da funcao em vez de usar o escreval(ext), você retorna o valor utilizando o retorne. Todas as duas formas vão funcionar! Com funcao, daria por exemplo para fazer isso: escreval("A versao do meu VisuAlg é ",extenso(3),".",extenso(0),".",extenso(6),".",extenso(3)) Veja, as funções são basicamente iguais aos procedimentos, a diferença é que as funções TAMBÉM funcionam como uma espécie de variável, onde nela mesma será retornado algo. Obs.: "será retornado", pois se não retornar algo, não fará sentido ser uma função, logo teria que transformar em procedimento. PS: tanto que funcao e procedimento são semelhantes, que em outras linguagens, como Java, eles não são diferenciados, lá tudo é função, e quando não se quer ou não precisa retornar nada, declara como void, ou seja, "vazio" ("não retorna nada"). No aguardo.
  14. Por sinal, o mesmo raciocínio serve para ambos os caso (paridade e verificação se é inteiro), só acontece que o MOD e % "não aceita"* números Reais, daí tem que parti para outro raciocínio, que no caso um deles seria usar Int(). Entretanto, com dito, o raciocínio do Int() serve para os 2. * = ele aceita Reais, mas trata o número como se fosse inteiro, daí não servindo para o caso. Resumindo Pode usar Int() para usar uma técnica para verificar se é inteiro Pode usar o Mod (ou %) ou Int() para paridade. ou ainda, pode usar "caracteres" para verificar se é inteiro. (não parei para analisar, mas acho que dá sim para fazer. Só é menos trivial, pois pode precisar converter de caractere para inteiro).
  15. Olá, Depende raciocínio envolvido... veja, no mínimo já temos duas informações: "valor original" e "parte inteira deste mesmo valor". Aí é só trabalhar com elas. Obs. 1: Esses comandos "podem ser" úteis para "UMA" solução, e não "A" solução. Um mesmo problema pode ser resolvido de diversas formas (vai de 0 a infinitas possibilidades). Por exemplo, popularmente os algoritmos envolvidos para verificar paridade (par ou ímpar), utilizam o MOD (ou %), mas dá para resolver de outras formas, inclusive com o Int() ou mesmo sem "funções prontas".
  16. Se o intervalo é aberto, creio que seja Li+1 e Ls-1.
  17. Olá a todos. Fiz alguns testes aqui e vou comentar de um modo geral... no caso me baseando na versão 3.0.6.3 do VisuAlg (creio que mais atual), vamos lá: 1) VisuAlg utiliza "." ou "," para separa as casas decimais? Resp.: De fato é o ".", mas ele aceita "," também lá no prompt quando usar o leia(). 2) Dá para verificar se um número é par ou ímpar no VisuAlg? Resp.: Sim! 3) Dá para verificar se um número é inteiro (ou não) no VisuAlg? Resp.: Sim! 4) Como verificar? Resp.: São duas coisas diferentes, e podem (devem) ser pensadas separadamente. A primeira coisa a fazer é entender o que cada coisa é... saber o que é um par e um ímpar (e o que não é uma coisa nem outra). Saber o que é um número inteiro e o que não é. Daí, tentar criar um algoritmo mental para tentar verificar. Que passado são necessários para verificar se um número é par ou ímpar ou nenhum dos 2? Passa esses passos para o papel (ou bloco de notas) e tenta executar esses passos e vê se chega ao resultado esperado... o segredo é executar os passos sem saber do que se trata.. ver se com a entrada (valor) dada, após seguir os passos, encontra o valor esperado. O mesmo vale para verificar se é inteiro.. Tente fazer apenas uma coisa. Após tenta a outra. *** Para facilitar, tem dois comandos que podem ser muito úteis: MOD ou % //Operador de módulo (isto é, resto da divisão inteira). Por exemplo, 8 MOD 3 = 2. Tem a mesma precedência do operador de divisão tradicional. Int(real) - Retorna a parte inteira do valor representado No aguardo.
  18. Olá @phellyp.santtos Sugiro que pesquise individualmente o que é cada um. O que é um número PAR (e ímpar)? O que é um número INTEIRO (e os outros tipos números)? Assista alguns vídeos-aulas... se aprofunde no assunto. **** Aproveitando os comentários, vou tentar fazer uns adendos...: (não sou matemático, apenas vou complementar alguns conceitos com o que entendi até o momento) Só para complementar: na verdade ainda temos os Números Complexos, este sim engloba "todos os números", ou seja, da mesma forma que os Reais engloba os Irracionais e Racionais (e seus sub-conjuntos), os Complexos engloba os Reais. Enfim, na prática, "só utilizamos até os reais" na programação, mas o "complexos" existem. Obs.: Claro que por uma questão didática eles poderiam até ser "ignorados", apenas citei para conhecimento (já que nesse caso o real deixaria de ser "todo número" de fato). Mais uma vez complementando... essa definição acima seria didática, mas como, parafraseando @Guilherme K. Nakassima, está "distorcida", pois não necessariamente todo número com casas decimais infinitas é irracional. E isso confunde o conceito... por exemplo, quanto é 11/3? Dá um tal de 3,666666666... onde esses "6" são infinitos, é a famosa "dízima periódica"! No entanto, esse número 6,6666666666666666666666666... é RACIONAL, ou seja, "quebrando esse conceito". Uma definição mais precisa para Irracional seria algo como: "Número irracional é um número real que não pode ser obtido pela divisão de dois números inteiros, ou seja, são números reais, mas não racionais." [Wikipedia], logo, resumidamente, um número real é racional quando você pode representar este número como uma fração, e por consequência, quando não pode, é irracional (que por sua vez é dividido entre irracionais algébricos e irracionais transcendentes, o primeiro são as raízes inexatas, como "raiz quadrada de 10", o segundo temos como exemplo o famoso Pi..). Como citado por @dif, ainda não existe um consenso sobre a questão se zero é ou não natural. A quem defina que usar ou não o zero pode ser uma questão de "escolha"!!! ou seja, tanto faz considerar ou não, ambos são válidos. No caso tem que verificar o que o "professor" ou "contexto" diz. (acho que geralmente é considerado o 0 como incluso) Aqui outro pitaco: nesse contexto, a "possibilidade" não pode ser usada como referência para definição de "ser" natural, ou seja, o fato de "pode ser algo", não necessariamente o define como ser algo. Vejam que os números (inteiros) negativos e o zero também podem ser classificados como "par" ou "ímpar", logo, por exemplo, se "cair no Enem" algo como: "Os números ímpares são números naturais?", marque como NÃO! (eles são inteiros, são racionais, são reais e são complexos, como demonstra o diagrama. Eles ficariam dentro de qualquer parte amarela, o que inclui a verde, é claro) Fazendo uma analogia: Dizer que um número par ou ímpar é natural, é análogo a dizer que os carros são movidos a gasolina, ou seja, conceitualmente haveria um equívoco, pois temos carros movidos a álcool, carros elétricos, a pedaladas (Flintstones) etc. Então, pegando esses raciocínios e alguns pesquisas, resumiria: 1) Números pares: Todo número que pode ser escrito desta forma: n = 2*k, onde k e Z (k "pertence" aos números "Inteiros"), ou seja, um número é par se ele pode ser decomposto em dois outros números, sendo um deles o 2. Ex.: 36 = 2*18. Números ímpares: Todo número que pode ser escrito desta forma: n = 2*k+1 ou n = 2*k-1, onde k e Z (k "pertence" aos números "Inteiros"). É semelhante ao par, só que acrescido ou diminuído de 1. Ex.: 37, pois pode ser escrito em 2*18*+1 ou 2*19*-1. Perceba que por essa definição, necessariamente "n" tem que ser Inteiro, pois ao multiplicar um inteiro por outro, sempre teremos outro inteiro. Logo, como já citado por @dif e @Guilherme K. Nakassima números fracionados NÃO podem ser classificados como par ou ímpar (pois não é inteiro).
  19. Poste o que já conseguiu fazer e onde está com dúvidas... tente por exemplo fazer logo a segunda questão, é mais simples (basta usar SE para cada número ou o CASE). No aguardo
  20. Olá. Pelo que eu sei, se a "correção" é por ano, você tem que se basear por anos e não por meses... De fato um ano tem 12 meses, mas você tem sempre que se basear em "parâmetros iguais". Ano é ano, meses é meses. Entretanto, depende do contexto... por exemplo, se for algo um investimento, como em uma poupança, onde o rendimento anual é de 10%, se você tem 500 reais lá, em uma ano vai ter R$550. Em dois anos, o R$550 vai para R$605! Ano 0: 500 Ano 1: 550 Ano 2: 660 R$660 é o valor final!!! não tem mais conta para fazer... Agora, se você por exemplo estiver se referindo a um contexto como "salário por mês", onde todo ano o patrão dá um aumento de 10%, ai sim faria sentido... ou seja, no primeiro ano, o trabalhador ganhou 500*12, no segundo ano, teve um aumento para 550, daí ganhou mais 12 meses desse valor!!! Daí, essa soma sua seria "a soma dos salários em um ano" e a soma total seria "a soma de todos os salários", ou seja, quanto ele ganhou no total durante o período de trabalho.. São duas coisas diferentes.
  21. Olá Exemplo de código: echo off livestreamer azubu.tv/nomedastream 720p Abre o bloco de notas, cola o conteúdo acima e salva como "Nome Que Eu quiser.bat". (utilize as aspas para garantir que fica .bat).
  22. Olá @john209, Tem dois pontos que devem ser observados: 1) o que você precisa; (o que está sendo proposto) 2) como executar. (qual lógica ser implementada) Eu ainda não entendi o porque da necessidade de somar esses valores... nem também sobre essa parte de multiplicar por 12. Se você tem 500, e que sofre 10% ao ano, terá 550 no primeiro ano e pronto não? terá 605 no segundo e pronto... entende? No caso, qual a necessidade de multiplicar por 12? e qual a lógica para necessidade de somar esses valores que foram multiplicados? *** Então, uma coisa é essa parte de "tentar fazer o que se precisa"... mas supondo que de fato precisa somar esse valores, eu já "dei uma resposta" no comentário anterior... seria algo do tipo: total=total+(soma*12); ou seja, para cada ano, você pega o que você quer somar e vai somando... (em cada ano o valor não é "soma*12"? você pega essa valor e vai "jogando" no total) Obs.: primeiro você precisa ver o que está sendo pedido (pelo enunciado do problema ou pelo que você "criou como proposta de exercício", por exemplo) , não adianta calcular certo algo que está idealizado errado, ou seja, uma coisa é saber somar os valores corretamente, a outra é de fato ter a necessidade de somar ou não. No aguardo.
  23. Olá @Brunolima077, As verificações feitas são baseadas na versão 3 (3.0.6.3) do VisualAlg. Não sei dizer se vale para qualquer versão. 1) Creio que você não pode usar uma variável com nomenclatura tipo, pois é uma palavra reservada do VisuAlg. Sugiro alterar para para por exemplo tipoAp. 2) O texto do tipo de apartamento ficou muito grande, aqui "bugou" na hora de ler os dados... inclusive no VisuAlg tem um linha vertical marcando o limite horizontal para usar como referência. Eu sugiro dividir em duas linhas ou mudar o texto mesmo. 3) Ao "selecionar" o tipo de apartamento lá nos se, por definição você terá que usar um se/senao, pois são proposições mutuamente exclusivas entre si, ou seja, se for uma coisa, não pode ser outra, logo não tem porque continuar verificando após ser uma... (vide diferença entre se e se/senao) Por enquanto acho que é isso. Por favor, dê uma verificada e tente ser mais específico onde está com dúvidas. No aguardo.
  24. Tópico movido de Programação - outros para Iniciantes
  25. Olá... @Humberto_mi, @Mitnick8 e @devair1010. Pelo que eu entendi.. se quer saber "quantos dias de vida tem", creio que teria que usar os meses mesmo, mas também precisaria perguntar os dias... ex.: 20 anos, 4 meses e 16 dias. Partindo desse pressuposto, em relação a sintaxe, creio que tanto faz usar: escreva("sua idade em dias é:",(anos*365)+(meses*30)) ou escreva("sua idade em dias é:",anos*365+meses*30) A primeira fica "mais elegante e clara", a segunda também ficará matematicamente correta, já que "a multiplicação tem preferência sobre a adição". Se fosse usar dias, seria algo como: escreva("Sua idade em dias é:",(anos*365)+(meses*30)+(dias)) Lembrando que o parênteses é facultativo nesse caso. PS: aproveitando o contexto, uma outra forma seria perguntar a data de nascimento e a data atual e fazer as contas. Abaixo um trecho de código, aproveitando para exemplificar ideias de como organizar a estrutura do código: algoritmo "FCH" var dia, mes, ano, diaHoje, mesHoje, anoHoje :real inicio escreval("Programa que calcula quantos dias de vida você tem!") //apresentação do programa escreval("Digite sua data de nascimento") //informar mais ou menos do que precisa do usuário escreva("Dia: ") leia(dia) escreva("Mes: ") leia(mes) escreva("Ano: ") leia(ano) escreval("voce nascem em",dia,"/",mes,"/",ano) escreval //apenas para pular uma linha escreval escreval("Digite a data atual") escreva("Dia: ") leia(diaHoje) escreva("Mes: ") leia(mesHoje) escreva("Ano: ") leia(anoHoje) escreval("Hoje é",diaHoje,"/",mesHoje,"/",anoHoje) //agora fazer as contas e exibir 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!