Ir ao conteúdo

Simon Viegas

Membro VIP
  • Posts

    3.940
  • Cadastrado em

Tudo que Simon Viegas postou

  1. Olá @Mr.Bháskara, em relação ao código acima, o y está servindo para "percorrer" o terceiro vetor. Veja que em cada valor de x, o vetor resultado será preenchido em 2 posições.. Daí ficou um "gerenciador do contador de x" pelo para, e um contador "manual" (y< y+1) para y.
  2. Olá @ET Bilu. Veja que esse utilizou a mesma lógica apresentada por @devair1010 com um "contador decrescente" e também separou as partes... primeiro leu, depois gerou o novo. Abaixo demonstro um outra forma: algoritmo "semnome" // Autor : Simon Viegas // Data : 21/10/2016 var v, v2 :vetor[1..30] de inteiro i,tam :inteiro INICIO tam<-30 para i de 1 ate tam faca //leia(v[i]) v[i]<-randI(1000) //gera um número aleatório entre 0 e 999 fimPara para i de 1 ate tam faca v2[i]<-v[(tam-i)+1] //correlaciona i com seu inverso* fimPara para i de 1 ate tam faca escreval("Posição: ",i:2," em V=",v[i]:3," <--->"," em V2=",v2[i]:3) fimPara fimAlgoritmo Abraços
  3. Olá @devair1010. Seu raciocínio me pareceu correto também... mas por favor, só evite da uma resposta pronta pro usuário. Abaixo levando uma questão... O enunciado diz: Pelo que eu entendi, primeiro deve ler os 30 número, e com o vetor pronto, gera um segundo com os dados que está nesse primeiro vetor. No seu código, você está gerando os dois ao "mesmo tempo". Vejam, não é só o resultado final que importa, pois daria por exemplo para usar apenas um vetor... e na hora de imprimir, iria imprimindo um valor em ordem crescente e o outro se invertido, algo como: escreval("em v= ",v[i]," <---> "," em v2= ",v[i2]) No caso o i2 tendo o valor decrescente. Atenção: essa solução acima NÃO seria válida!!! @ET Bilu, caso queira tentar fazer separado (ler um vetor, e gerar o segundo a partir dele), dá para usar o mesmo raciocínio sugerido por @devair1010... a base desse problema é que "a posição no segundo vetor tem que ser simétrico a posição no primeiro". v2[xxx]:=v[yyy] Ou seja, o valor em xxx deverá ser simétrico* ao valor em yyy. Ex.: Se yyy=1 então xxx=30, se yyy=2, então xxx=29. Ai pode usar esse raciocínio de usar outro contador decrescente, ou usar uma fórmula que correlacione essa simetria, ou outra forma que consiga imaginar/descobrir... No aguardo.
  4. Olá @Klash e @laisschn. Só complementando: A variável "media" teoricamente deveria receber a média em si... ficou um pouco estranho dividindo ela por 10... ou seja, matematicamente falando a conta tá certa, mas estaria conceitualmente errado... Então, a média é basicamente "a soma dos valores, dividido pela quantidade de valores"... a soma você já tem, lá em soma e a quantidade também, que está em MAX. Logo, minha sugestão seria usar algo assim: cout<<"\nMedia dos numeros maiores que 100: "<<soma/MAX; ou media=soma/MAX cout<<"\nMedia dos numeros maiores que 100: "<<media; Obs.: não sei a sintaxe do C++, mas essa primeira linha acima seria para "atribuir o valor". Sei lá, pode ser que seja "media<<soma/MAX" ou algo do tipo.
  5. Olá @kakajr10. Por favor, siga as orientações passadas na minha postagem anterior. Em relação ao item 1), abaixo já deixo seu código com letras minúsculas. Favor usar esse código... faltando apenas fazer alguns pequenos ajustes em algumas palavras que devem ficar todo em maiúsculo ou só as iniciais. program atividade3; var prodcr :string; precocr :real; quantcr :integer; totalpcr:real; totalccr:real; desccr :real; totallcr:real; respcr :char; //controle do laço BEGIN repeat ClrScr; //limpar a tela writeln(' sistema compra/venda - tela entrada '); writeln(' ----------------------------------- '); writeln(' produto---------------------------- '); readln(prodcr); writeln(' preço unitário--------------------- '); readln(precocr ); writeln(' quantidade------------------------- '); readln(quantcr ); writeln('------------------------------------ '); totalpcr:= precocr*quantcr; totalccr:= totalccr+totalpcr; writeln(' total parcial----:', totalpcr:0:2); writeln('total da compra---:', totalccr:0:2); writeln('---------------------------------'); write( 'outro produto ( s/n )?'); readln(respcr); until (respcr=' n '); readln; //inicio dos calculos if (totalccr<100) then desccr:=totalccr*0.10 else if(totalccr>=100)then desccr:=totalccr*0.20; totalccr:=totalccr-desccr; ClrScr; writeln('------------------------------'); writeln( ' sistema compra/venda - tela saida '); writeln('------------------------------'); writeln(' total da compra:',totalpcr:0:2 ); writeln(' desconto:',desccr:0:2 ); writeln(' total liquido:',totallcr:0:2 ); writeln('------------------------------'); writeln('fim de programa, tecle enter' ); END.
  6. beleza. No aguardo dos outros pontos...
  7. Olá. Veja o comentário lá no código: Algoritmo "PROGRAMINHA" tipo pessoa = registro rg: inteiro nome: caractere fimRegistro var func:vetor[1..100] de pessoa i :inteiro menu:inteiro procedimento Adicionar() inicio limpaTela se (i<101) então escreval(" FUNCIONÁRIO") escreva("RG : ") leia(func[i].rg) //aqui faltou o [i] escreva("Nome: ") leia(func[i].nome) //aqui faltou o [i] i<-i+1 senao escreval("NÃO PODE MAIS CADASTRAR NENHUM FUNCIONÁRIO!") fimSe fimProcedimento procedimento Pesquisar() var rg :inteiro j :inteiro inicio limpaTela escreval("BUSCAR RG DO FUNCIONÁRIO") escreva("Número da pesquisa") leia(rg) para j de 1 ate (i-1) faca se (func[j].rg = rg) então escreval("RG:",func[j].rg) escreval("NOME",func[j].nome) fimSe fimPara leia(rg) fimProcedimento INICIO i <- 1 repita limpaTela escreval("UNICARIOCA – PROGRAMA RG") escreval("[1] Adicionar") escreval("[2] Pesquisar") escreva("Opção:") leia(menu) escolha menu caso 0 escreval("Desconectado") caso 1 Adicionar() caso 2 Pesquisar() fimescolha ate (menu=0) fimAlgoritmo Aproveite e siga a orientação: Ou seja, troque a nomenclatura de desse i para qualquer outra coisa (ex.: total)!!! Desse modo, inclusive, já daria para usar o i lá no outro procedimento (em vez de j). Outro ponto: Eu sugeri fazer o procedimento para LISTAR, mas você fez para PESQUISAR . São coisas diferentes*! Tente fazer esse procedimento para listar logo, (mesmo que não faça parte dos requisitos!!! depois você remove!) pois ele vai servir para verificar se o vetor está armazenando corretamente. Será muito útil principalmente na hora de verificar se ordenou corretamente ou não. RESUMINDO (sugestões): - Troque o i para total; (ou outro nome sugestivo para a sua função no programa) - Faça o procedimento para listar; (utilize por exemplo a opção de menu "9"); - Faça testes e deixe o ADICIONAR e LISTAR funcionando direitinho. Deixa o PESQUISAR também funcionado. - Posta aqui o código atual e onde está com dúvidas nele (ou apenas para revisarmos). E parte para "imaginar" como vai fazer para REMOVER. No aguardo.
  8. Olá @ET Bilu. O que você define como "posição atual -1"? seria posição do i lá no para -1? Se a "posição atual" for 30, terá 30-1=29. Creio que não vai servir... A posição 1 tem que corresponder à 30 (ou 30 tem que corresponder à 1, dá na mesma) Posição 2 à 29 Posição 3 à 28 Posição 4 à 27 Assim sucessivamente. No aguardo.
  9. Olá @EDC, Pelo que eu vi, o seu código está incompleto... qual a linguagem de programação e qual programa usa para compilar? No aguardo.
  10. Olá @kakajr10. Seja bem vindo ao Fórum do Clube do Hardware... Alguns ponto que acho importante: 1) Padrão do texto do código Não use CAIXA ALTA, pois dificulta a leitura das informações (e parece que tá gritando). Veja a diferença: program Atividade3; var prodcr :string; precocr :real; quantcr :integer; totalpcr:real; totalccr:real; desccr :real; totallcr:real; respcr :char; //controle do laço BEGIN repeat ClrScr; //limpar a tela writeln(' SISTEMA Compra/Venda - Tela Entrada'); writeln(' -----------------------------------'); writeln(' Produto----------------------------'); readln(prodcr); writeln(' Preço Unitário---------------------'); readln(precocr); writeln(' Quantidade-------------------------'); readln(quantcr); writeln(' -----------------------------------'); totalpcr:=precocr*quantcr; totalccr:=totalccr+totalpcr; writeln(' Total Parcial-----: ',totalpcr:0:2); writeln(' Total da Compra---: ',totalccr:0:2); writeln(' -----------------------------------'); write (' Outro produto <s/n> ?'); readln(respcr); until (respcr = ' n '); END. Obs.: já fiz alguns ajustes para tentar ajudar... Obs.2: 2) Condição do repeat Lá no until não existe esses espaços... fica apenas 'n' (não ' n '). 3) Padronização do texto Da mesma forma que o Total Parcial e Total da Compra, o texto na parte de cima tem que ficar no lado, e não embaixo (use também write - sem o ln) 4) Segunda tela O próprio enunciado já explica como faz. Basta usar os write/writeln e os readln de modo que fique parecido com a tela do anexo, assim como efetuar a referida conta...é bem parecido com a primeira tela, a diferença que não precisa de um repeat/until. 5) O que significar esses "CR" no final de cada variável??? Não entendi... *** No aguardo
  11. Olá @anonymouatour, a minha sugestão é que tente fazer o seu algoritmo por partes, e não tudo de uma vez... Primeiro faça a parte de ADICIONAR e LISTAR (somente esses). Testa, e verifica se está mais ou menos certo, aí poste seu código aqui. Após, analisaremos e daremos continuidade. Obs.: se fizer o adicionar e listar e já quiser adiantar para outra parte, pode sem problemas, o que não pode é tentar seguir em frente sem antes deixar essa parte "inicial" sem está funcionando corretamente. (é mais fácil corrigir no início e seguir em frente, do que tentar fazer tudo de uma vez e tentar corrigir também tudo de uma vez) PS: de antemão já adianto que você está utilizando a variável i para duas finalidades diferentes: tanto para armazenar o total de cadastros já feitos, tanto para percorrer um para, ou seja, ao executar o para, irá perder o valor de antes!!! RESUMINDO: utilize outra variável para armazenar o total já cadastrado (ex.: total, cont etc), e deixe o i (e j) exclusivamente para "auxiliar nos para". Obs.: por convenção, o i, j, k... são usados para esse fim mesmo (no para). Evite usar eles para outra coisa. Obs2.: veja, é apenas uma CONVENÇÃO. Você poderia usar qualquer outro nome de variável no para! ou mesmo usar o i para outra coisa... mas recomendo "seguir o padrão". No aguardo.
  12. Olá @ET Bilu, Veja: Tire essa segunda linha. (ou reveja a lógica que tentou utilizar) Primeiro você precisa simplesmente gerar um vetor de inteiros (trecho acima, basta o leia()). Após, pegar os dados desse vetor e jogar no outro, de modo que os dados fiquem invertidos, como indicado no enunciado. Pense assim: como posso associar a primeira posição de um vetor com a ultima de outro? No aguardo
  13. Olá @gcbL, Por favor, poste o seu código para podermos, caso necessário, dá uma revisada e também poder servi de base para futuros visitantes. PS: à título de curiosidade/informação, as estruturas if e for só precisam de begin/end quando possuem mais de umas instrução vinculada a eles. Como demonstrado abaixo, apenas o primeiro for precisaria do begin/end. PS2: de certo modo não tem problema deixar os begin/end, apenas estou tentando demonstrar que são facultativos Program num_perfeitos; var v:array[1..3] of integer; i,j,num,soma:integer; Begin soma:=0; for j:=1 to 3 do //esse for precisa de begin/end, pois tem um for e um if dentro (duas estruturas) begin for num:=1 to 500 do //esse for não precisa, pois só tem um comanando (o for) dentro dele for i:=1 to num-1 do //esse for não precisa, pois só tem um comando (o if) dentro dele if (num mod i =0) then //esse if não precisa, pois só tem um comanado (a soma/atribuição) dentro dele soma:=soma+i; if (soma=num) then //esse if não precisa, pois só tem um comanado (a atribuição) dentro dele v[j]:=num; end; for j:=1 to 3 do write(v[j],' '); readln; End. No aguardo.
  14. Olá @helen_cris, você está utilizando algum programa para "compilar" e executar o código? Se sim, qual? Senão, esse pseudocódigo está em qual a linguagem de programação? Então, se estiver utilizando o VisuAlg, fiz alguns ajustes básicos, e no próprio código tem alguns comentários: {algoritmo} //É necessário informar o "nome do programa" algoritmo "Aqui um nome ou descrição do algoritmo" { declare idade, peso, altura, i numerico} //usar VAR em vez de DECLARE { olhos, sexo, cabelo caracter} var idade, peso, altura, i :inteiro olhos, sexo, cabelo :caracter INICIO //aqui começa a parte da execução do programa para i <- 1 ate 20 faca {inicio} //o "O "inicio" fica logo abaixo da declaração das variáveis escreva ("Digite sua idade:") {leia idade} //a variável precisa ficar dentro de parênteses. "()" leia (idade) escreva ("Digite seu peso:") leia (peso) escreva ("Digite sua altura:") leia (altura) escreva ("Informe olhos") leia (olhos) escreva ("Informe cabelo") leia (cabelo) escreva ("Informe sexo") leia (sexo) {se idade >= 65} {fimSe} //comando que delimita o comando SE {fim_algoritmo} //antes fimPara //comando que delimita o fim do comando PARA fimAlgoritmo //comando que delimita o fim do comando INICIO Abaixo o código sem os comentários e alguns complemetos: algoritmo "Aqui um nome ou descrição do algoritmo" var idade, peso, altura, i :inteiro olhos, sexo, cabelo :caracter INICIO para i <- 1 ate 2 faca //mudei 20 para 2, para facilitar os testes escreva ("Digite sua idade:") leia (idade) escreva ("Digite seu peso:") leia (peso) escreva ("Digite sua altura:") leia (altura) escreva ("Informe olhos") leia (olhos) escreva ("Informe cabelo") leia (cabelo) escreva ("Informe sexo") leia (sexo) escreval (" ") //para pular uma linha //a) A quantidade de pessoas com idade superior a 65 anos. se (idade >= 65) então fimSe //b) A média de altura das pessoas entre 15 e 25 anos. se (altura>=15) e (altura<=25) então fimSe //c) A porcentagem de pessoas entre 18 a 24 anos que possuem filhos entre as pessoas de mesma faixa etária. //d) A porcentagem de pessoas que possuem olhos azuis e cabelo ruivo. fimPara fimAlgoritmo Veja, para facilitar as criações das estrutura de seleção (se), deixei as alínias referentes aos requisitos no próprio código... tente dar continuidade. Minha sugestão é tentar fazer um por um, não tente fazer tudo de uma vez e depois testar! Faz o primeiro se, testa e vê se tá funcionado. Faz o outro, testa e vê se tá funcionado... -> Então, no primeiro se, ele está querendo uma quantidade, daí você pode utilizar uma variável para ir contando... no segundo, ele precisa da média... daí você precisa analisar e ver o que precisa para calcular essa média... e assim por diante. Após os ses.. exibe os resultados. Lembrando: tente faz apenas um se de cada vez (não importa qual), apenas analise, tente fazer, vá corrigindo até ficar pronto. No aguardo.
  15. Olá. Podemos ajudar. Por favor, poste o que já conseguiu fazer e onde está com dúvidas. No aguardo.
  16. Ai que está... o nome dos moradores já está em moradores. O nome do morador 1 está na posição 1, do morador 2, está na posição 2... e assim por diante. Já o vetor contas servirá para armazenar as contas desses moradores. As contas do morador 1 está na posição 1, do morador 2 está na posição 2... e assim por diante. Vamos imaginar que é apenas um conta por morador: moradores:vetor[1..10] de caracter contas :vetor[1..10] de inteiro ou seja, o nome do morador fica no primeiro vetor, e a conta do morador fica no segundo. Para posições iguais, terá dados para o mesmo morador. Beleza? Esses vetores também são matrizes, no caso ambas são matriz linha. Como uma matriz 1x10. Ex.: escreval("Digite o nome do morador") leia (moradores[totalM]) escreval("Digite o valor da conta") leia (contas[totalM]) Veja que está cadastrando dados usando a mesma posição como referência para ambos os valores! Supondo totamM vale 3 naquele momento, o morador 3 terá seu nome e sua conta na posição 3 respectivamente nos vetores. Mas ai, você precisa que um mesmo morador tenha mais de uma conta!!! E agora? Ai entra o vetor de 2 coordenadas. Conta agora tem DUAS COORDENADAS, no caso como uma matriz 10x10. A moradores tem apenas uma linha! essa linha tem 10 posições, onde cada uma delas armazenará um nome, certo? Já em contas, temos 10 linhas e cada linha com 10 colunas!!! Podemos imaginar os vetores assim: moradores = ["João","Maria","Bruno","Simon"," "," "," "," "," "," ",] contas = [415,345,100,230,242,425,524,324,425,320] //linha um é referente a posição um do outro vetor, logo de João [430,340,450,860,240,680,350,620,723,560] //linha dois de Maria (que tá na posição 2) [0,0,0,0,0,0,0,0,0,0] //linha 3 de Bruno [0,0,0,0,0,0,0,0,0,0] //linha 4 de Simon [0,0,0,0,0,0,0,0,0,0] //e assim por diante [0,0,0,0,0,0,0,0,0,0] [0,0,0,0,0,0,0,0,0,0] [0,0,0,0,0,0,0,0,0,0] [0,0,0,0,0,0,0,0,0,0] [0,0,0,0,0,0,0,0,0,0] Daí, na hora de cadastrar as contas, precisa saber para qual morador está cadastrando. No caso, a posição que ele está. Vamos supor que quer cadastrar as contas de Bruno. Ele está na posição 3, logo posM tem que valer 3 ("posição do morador"). Cadastrando as contas em ordem, posC começaria com 1 e iria aumentando de um em um. leia(posM,posc); *********** Tente fazer o seguinte!!! Cadastre apenas uma conta para cada morador. Veja, precisa saber a POSIÇÃO do morador, e não "nome da conta". Armazena a posição em posM, e ler o valor da conta: leia(posM,1); //posM será posição do morador, e esse 1 é a posição dessa única conta desse morador) Ai poste o seu código completo aqui. No aguardo.
  17. Olá @brunoalv182. Contas é uma matriz de duas coordenadas. Você só está passando uma. Por favor, releia a minha postagem anterior. adicionado 4 minutos depois PS: cole seu código inteiro, que aproveitamos para revisar.
  18. Olá @brunoalv182. Antes de somar as contas, é necessário armazená-las corretamente. Abaixo dou algumas sugestões de como melhorar o seu código. Obs.: Sugiro diminuir a quantidade de cadastro no início. Ex. para 2 moradores e 3 contas. Você precisa primeiramente arrumar as suas variáveis (mais abaixo já dou uma sugestão). - Nomenclatura mais sugestível A orientação é que as variáveis tenham nomes mais próximos dos seus usos. - Variáveis declaradas e não usadas Algumas das suas variáveis não estão sendo usadas no código, que é o caso da a2, a3, a4 e a5. Devem ser apagadas! - Reutilização de variáveis Geralmente as variáveis que verificam se deseja continuar podem ser reutilizadas. Haja vista que essas respostas não precisam ficar armazenadas após serem verificadas. - Declaração correta das variáveis Você declarou: Os vetores só tem "UM tipo", que no seu contexto seria inteiro (ou real, se for considerar as frações). Você declarou como caractere inteiro. Nesse caso, as coordenadas têm 2 posições, o que fica caracterizado uma MATRIZ (de duas coordenadas), mas essas coordenadas apontam para UMA única posição da matriz. Não tem mistério. Veja: Vamos imaginar o vetor de um coordenada: Essa estrutura comportar-se como um conjunto de 10 variáveis, ou seja, como se estivesse declarando moradores1, moradores2, moradores3 etc. A diferença que pode acessar as posições (as variáveis) mais facilmente. (o que você já faz no seu código) A diferença de contas é que ela tem 2 coordenadas, logo, para acessá-las seriam necessárias 2 valores. Ex.: contas[3,5] Para demonstração, veja esse exemplo: contas :vetor[1..3, 1..5] de inteiro Chamemos a primeira coordenada de linha, e a segunda de coluna. Logo, para cada linha, temos 5 colunas, o que totalizam 15 variáveis!!! Entende? Contextualizando, poderíamos dizer que as linhas representam os moradores e as colunas as contas dos respectivos moradores. Se eu quero a 4a conta do morador 2, acessaria como: contas[2,4]. Abaixo uma base de como pode reorganizar as variáveis: Var //VARIÁVEIS AUXILIARES menu :caracter //utilizado no menu principal continuar :caracter //para verificar se deseja continuar ou não totalM :inteiro //total de moradores cadastrados posM :inteiro //posição do morador na matriz posC :inteiro //posição da conta do morador na matriz //VARIÁVEIS PARA ARMAZENAMENTO moradores:vetor[1..10] de caracter //cadastro dos nomes dos moradores contas :vetor[1..10, 1..10] de inteiro //cadastro das contas dos moradores* {contas[x,y]; x=posição do morador (ex.: morador da posição 2 em "moradores", terá suas contas na posção 2 em contas) y=contas do morador. Cada posição será uma conta, ou seja, cada morador pode ter até 10 contas} Daí, na hora de cadastrar as contas, precisa saber em qual posição está o morador antes. Logo, primeiro pergunta qual é o morador (posição) e após o valor das contas... As contas seriam inseridas assim: contas[posM,posC] O posM é informado pelo usuário (ou o código acha usando o nome*) e o posC vai de 1 a 10. Ai você vê como vai gerenciar... se vai cadastrar os 10 de uma vez ou se vai cadastrando aos poucos. Lembrando que você pode inicialmente diminuir a quantidade de cadastras (ex.: 2 moradores com 3 contas cada) No aguardo.
  19. Olá @Vengefull, Por favor, poste o que já conseguiu fazer e onde está com dúvidas. No aguardo.
  20. Olá @EvandroT, Quase isso... Agora é fazer testes de mesa e verificando se bate com o desejado, caso não, teve verificar e corrigir. Exemplo de valores para A, B e C. - Todos os valores diferentes; - Um maior e os outros dois iguais; - Dois maiores e um menor. Inicialmente, você pode inserir qualquer valor, ex.: - 1, 2, 3; (deverá exibir 3 2 1) - 2, 1, 1; (deverá exibir 2 1 1) - 1, 2, 2. (deverá exibir 2 2 1) Respectivamente... Após está certo, precisa também verificar as outras possibilidade, ou seja, trocando os números de ordem... No aguardo. adicionado 2 minutos depois PS: o código tá bem organizado!!! só precisa de alguns ajustes. PS2: essa algoritmo está utilizando o princípio 1) que citei lá em cima, caso depois queira tentar fazer pelo 2), estamos aqui tentar ajudar também.
  21. Olá. Seja bem vindo. Em que linguagem?
  22. Olá @hrodwulf, Vamos lá: 1) Identação Sempre mantenha seu código identando (ia dizer "bem identado", mas é redundância! ou tá ou não tá, rs) Abaixo um exemplo: Nesse caso, utilizado 2 espaços como "dentes". 2) Separar casas decimais Temos pelo menos duas formas: a - Utilizando utilizando "números" (inteiro ou real) mesmo e utilizando recursos de divisões e de "pegar o resto"... Nesse processo dá para ir separando e coletando os valores; b - Utilizando caracter, existem funções prontas que conseguem "pegar" o caractere em determinada posição, logo na última posição teremos as "unidades", na segunda as "dezenas" etc. Acho que seria mais prático por aqui... Vou deixar você tentar analisar e implementar.. vide "Funções para manipulação de cadeias de caracteres" em VisuaAlg *** Então, a primeira etapa seria "conseguir separar". Tendo isso, basta "selecionar os textos correspondentes". No aguardo. No aguardo. adicionado 3 minutos depois PS: adianto que utilizando caracter, os se podem não funcionar corretamente (no Pascal por exemplo, > e < funcionam com caracter (char), acho que no VisuAlg não). Para tanto, é também possível converter o número de "caracter" para "inteiro", daí usar nos se normalemnte). Como converter? dê seus pulos! No aguardo.
  23. Olá a todos. @devair1010, só pedimos que evite dar uma uma "resposta pronta" para o usuário, ok? recomendamos que estimule o próprio usuário a implementar as sugestões... Vou tentar complementar... 1) Utilizando variáveis simples @EvandroT, em relação ao seu código original, você está utilizando variáveis individuais, daí precisaria revisar as sentenças das suas estruturas de seleção (dos se), assim como sugerido por @devair1010. Essas estruturas de "se"s devem abranger todas as possibilidades, ou seja, quais são os casos possível em relação a essas 3 variáveis? por exemplo: "Uma delas maior", "Duas delas maiores (iguais)", "As três iguais" etc. Após, criar os se de forma que todas as formas sejam tratadas... Uma forma de verificar e testar é utilizando o conceito de "teste de mesa"! 2) Utilizando vetores Uma forma também interessante de verificar o maior é deixar os valores em ordem decrescente, ou seja, daí o primeiro será o maior... claro que nesse caso também será necessário verificar se o seguintes são iguais, pois pode haver empate! Essa técnica está maios ou menos apresentada no código de @devair1010 na postagem acima. A primeira etapa seria ler os dados inserindo no vetor (cada posição do vetor, seria uma variáveis, só que acessível mais facilmente, utilizando um valor de posição). A segunda, seria "ordenar esse vetor", utilizando um Algoritmo de ordenação. Recomendam-se o Bubble Sort, creio que seja o mais famoso e de fácil entendimento e implementação. Se não me engano é o utilizando no código acima... (de qualquer sorte, o código precisa ser revisado, tem um pequeno errinho lá). *** Em fim, o código acima já tem uma boa base de como pode se basear o seu código, apenas sendo necessário revisar o método de ordenação, ou seja, entendo que seria necessário compreendê-lo um pouco mais a fundo caso venha querer utilizá-lo (e até mesmo corrigir um pequeno errinho que tem lá.) No aguardo.
  24. Isso.. Obs.: precisa corrigir a condição do ate. Experimente digitar um valor maior que 10 ou menor ou igual a 0... Para adiantar: Esqueceu de incluir o 0, teria que utilizar o "="... e está utilizando ou, mas deveria ser e. (no "ou", se uma condição for verdadeira, a expressão é verdadeira, mas o que você precisa que "ambas sejam verdadeiras" - "o número tem que ser maior ou igual a 0 E menor ou igual a 10) Lá nos se, qual o preconceito com o "0"??? :D. É necessário um senão lá também. (veja, se for "0", não poderá ser "1", ou "2" etc) Antes de ajustar o código, experimente utilizar o recurso do "F8" lá no VisuaAlg... cada vez que vai pressionando, o programa vai andando uma linha (a linha fica em azul)... Faça alguns testes... informe um valor como "5", e veja como vai ser o fluxo (verás que depois do 5 pula pro final). Após insira o "0" e veja como ocorre (e outros valores diferentes também). Próximo passo é ir para: Mas antes!!! Veja que para seu contexto existe uma outra estrutura mais organizada de seleção: o escolha. Em vez de "um monte de se/senão", altere para escolha. Resumindo: - Experimente alguns testes utilizando o F8; - Altere os se/senão para escolha; (só ai, você já dá uma "revisada" em se, se/senão e escolha) - Tente implementar um novo código que vai de 20 a 99. (pode usar como base esse atual).
  25. Certo... Agora, em relação a esse código, você precisa ajustar o "tipo de seleção", ou seja, a forma que o "se" deve se comportar. Como são condições mutualmente exclusivas entre si (se é uma coisa, não vai ser outra), logo devem-se utilizar o "se\senão" (e não só se puro). Pois do jeito que está, o programa sempre irá verificar TODAS as condições, onde deveria "parar de verificar" assim que uma condição seja verdadeira (pois os outros não tem como ser mais, entende?). Resumindo: Mude esses "se" para "se/senão" Após isso, tente agora fazer outro programa: Por exemplo, que que escreva por extenso os número que vão de 20 a 99 (incluindo-os). Veja que agora não será tão prático fazer um monte de se/não... esse programa deverá separar de alguma forma as casas decimais, ou seja, dezena e unidade. Ficando "vinte", "trinta", "quarenta" etc, e depois o o "e um", "e dois", "e três", "e quatro" etc... Resumindo: Precisa verificar alguma forma de separar as dezenas das unidades. (o restante acho que é mais fácil, já que é a mesma base do que você já fez) Obs.: Sugiro que primeiro faça a alteração para o se/senão e poste aqui no fórum.... e após, tentar imaginar como fazer o novo código que vai de 20 a 99. No aguardo.

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!