Ir ao conteúdo
  • Cadastre-se

Simon Viegas

Moderadores
  • Total de itens

    4.485
  • Registro em

  • Qualificações

    0%

Reputação

2.421

Sobre Simon Viegas

  • Data de Nascimento 22/06/1982 (38 anos)

Informações gerais

  • Cidade e Estado
    Salvador/BA
  • Sexo
    Masculino

Outros

  • Biografia
    Carregando...
  • Ocupação
    Técnico e Analista de Sistemas
  • Interesses
    Tecnologia
  1. Outra forma de implementar seria utilizando registros, exemplo: algoritmo "Vetores - Menor altura" tipo t_Pessoa = registro nome: caractere altura: real fimRegistro var pessoas: vetor[1..3] de t_Pessoa posicao: inteiro indiceMenorAltura: inteiro i: inteiro inicio para posicao de 1 ate 3 faca escreva("Digite o seu nome: ") leia(pessoas[posicao].nome) escreva("Digite a sua altura: ") leia(pessoas[posicao].altura) limpaTela fimPara escreval(" REGISTROS ") para i de 1 ate posicao faca escreval("Nome : ", pessoas[i].nome) escreval("Altura: ", pessoas[i].altura:1:2) escreval("") fimpara indiceMenorAltura := 1 para i de 1 ate posicao faca se (pessoas[i].altura < pessoas[indiceMenorAltura].altura) entao indiceMenorAltura <- i fimSe fimPara escreva (pessoas[indiceMenorAltura].nome, " é o(a) mais baixo(a) da lista, com ") escreval(pessoas[indiceMenorAltura].altura:1:2, " metros de altura") fimAlgoritmo
  2. Alguns pontos: Condição para repetição Sendo objetivo... teu código só está repetindo se digitar "N" (maiúsculo), uma forma de ajustar seria: while UpCase(sair) = 'N' do Dê uma trato na identação Basicamente as assinaturas das funções ficariam mais a esquerda. No meu padrão, todo código identaria assim: program Pzim; function m2km(m:real):real; begin m2km := m*3.6; end; function km2m(km:real):real; begin km2m := (km/3.6); end; var m, km: real; opcao: char; begin sair := 'n'; while UpCase(sair) = 'N' do begin ClrScr; writeln(' *** CONVERSÃO DE UNIDADES ***'); writeln(''); writeln(' 1 - ms/s para km/h'); writeln(' 2 - km/h para ms/s'); writeln(''); write ('==> '); ReadKey(); readln(opcao); writeln('Convertendo unidades de medidas'); writeln('Transformar metros por segundo em quilometro por hora. Digite uma velocidade:'); readln(m); writeln(); writeln(); writeln('Resultado:'); writeln(m2km(m):3:2, ' Km/h'); writeln(); //trocando as unidades writeln('-----------------------------------------------------------'); writeln(); writeln(); writeln('Convertendo unidades de medidas - parte 2'); writeln('Transformar quilometro por hora em metros por segundo. Digite uma velocidade:'); readln(km); writeln(); writeln(); writeln('Resultado:'); writeln(km2m(km):3:2, ' m/s'); writeln(); writeln ('Deseja sair? Responda com S/N use a letra maiuscula. '); readln(sair); end; end. Eu sou acostumado a deixar as linhas dentro do begin/end começando no mesmo dente. Outro padrão seria assim: program Pzim; function m2km(m:real):real; begin m2km := m*3.6; end; function km2m(km:real):real; begin km2m := (km/3.6); end; var m, km: real; opcao: char; begin sair := 'n'; while UpCase(sair) = 'N' do begin ClrScr; writeln(' *** CONVERSÃO DE UNIDADES ***'); writeln(''); writeln(' 1 - ms/s para km/h'); writeln(' 2 - km/h para ms/s'); writeln(''); write ('==> '); ReadKey(); readln(opcao); writeln('Convertendo unidades de medidas'); writeln('Transformar metros por segundo em quilometro por hora. Digite uma velocidade:'); readln(m); writeln(); writeln(); writeln('Resultado:'); writeln(m2km(m):3:2, ' Km/h'); writeln(); //trocando as unidades writeln('-----------------------------------------------------------'); writeln(); writeln(); writeln('Convertendo unidades de medidas - parte 2'); writeln('Transformar quilometro por hora em metros por segundo. Digite uma velocidade:'); readln(km); writeln(); writeln(); writeln('Resultado:'); writeln(km2m(km):3:2, ' m/s'); writeln(); writeln ('Deseja sair? Responda com S/N use a letra maiuscula. '); readln(sair); end; end. Sugiro ajustar as nomenclaturas das funções. "Metros por segundo" (m/s) não deveria ser associado a "metros" (m). O primeiro é uma medida de velocidade, o segundo de comprimento. Veja: function m2km(m:real):real; begin m2km := (m*3.6); end; Poderiam-se ler essa função assim: meters to kilometers. O nome da função dar a entender que está "convertendo de metros para quilômetros", e não de "metros por segundo para quilômetros por hora". Entendo que todo o contexto deixa claro que é uma coisa e não outra, mas acho que seria menos intuitivo. Exemplo: function ms2kmh (ms:real): real; begin ms2kmh := ms*3.6; end; É apenas um detalhe, talvez tanto faz. Experimente inserir um menu no programa Em vez de sempre executar uma opção e depois a outra. Poderia inserir um menu e perguntar qual opção deseja executar. Algo como: Por aí vai. No aguardo.
  3. Simon Viegas

    C <code> unico em c

    Só para complementar: Esse "+1" não altera o conteúdo da variável i. É apenas uma operação de adição comum... Se i vale, por exemplo, 0, vai continuar com 0. Lá no printf() vai ser efetuado um cálculo e vai retornar o seu resultado, logo, vai aparecer 1 na tela. Nos comandos abaixo, o i vai continuar com o valor 0, portanto acessando as posições 0 do vetor. Seria algo como: <valor da variável i> + 1 Se fosse necessário atualizar i, poderia utilizar i++, assim, atualizaria o valor da própria variável i. Iria aparece 1 na tela, e abaixo também acessaria a posição 1. Mas não é o teu caso!!!. Seria algo como: <faça i = i+1, depois utilize i> Ou utilizar ++i. Assim, exibiria 0, e abaixo acessaria 1, ou seja: no printf() iria utilizar o valor atual de i, que seria 0, e depois iria atualizar a variável i passando para 1. Seria algo como: <use i, depois faça i = i+1> São 3 comandos diferentes, com 3 propósitos diferentes.
  4. Sobre: É. Parece que não tem muita coisa no enunciado... Para o fórum, é mais interessante os TEXTOS dos documentos, pois fica mais fácil para nós colaboradores e visitantes, caso necessário, copiarem e também para ajudar na indexação da página. Para adiantar, segue uma descrição do enunciado: Prezado(a) estudante, faça um algoritmo que imprima o nome, a idade, o sexo e a quantidade de salários mínimos. Considere um salário mínimo de R$ 1.045,00. Também faça um diagrama de fluxo utilizando notação BPM. Utilize o programa Visual G para realizar este exercício. Você pode desenhar o fluxo em uma folha de papel ou utilizar qualquer 'software' de sua preferência (Exemplos: LibreOffice Draw, LibreOffice, Impress, MS Office Power Point, Bizagi, Bonita, Aris, BPMN.io, Draw.io, Yaoqiang BPMN Editor, HEFLO, Modelio, Sydle, Pix Sol BPM etc...). Atenção: A entrega devr ser em um único documento (word, pdf, ppt) com o algoritmo e com a imagem do diagram de fluxo. Em caso de dúvidas, acione o (a) professor (a) mediador (a) através do fórum. Prazo para postagem: 12/07/2020 (domingo). -- O ponto central é: que nome, que idade, que sexo, que salários mínimos? De onde vem esses dados? Acho que precisaria entender melhor e, depender, tirar dúvidas com o professor. Sobre: Não incomoda. A ideia do fórum é justamente um colaborar com o outro. Sobre: É impressão minha ou você já enviou o arquivo para avaliação? Por quê? Se já enviou, é possível reenviar? Então, independentemente, sugiro revisar o enunciado e e refazer o código em VisualG. A depender, você entrega ao professor separadamente, mesmo que não valha nota. VAMOS LÁ: Precisamos de dois passos iniciais: [1] Entender o que o enunciado quer [2] Desenvolver um algoritmo em VisualG que sirva como UMA solução para o problema proposto. PRIMEIRO é necessário entender do que se trata o problema... para só DEPOIS tentar achar uma solução para ela. Eu vejo isso todo dia aqui no fórum... é normal. Nós estudantes temos uma propensão a se preocupar mais "em dar uma solução", mas não percebemos que o principal na verdade é o problema em si!!! Seria aceitável um médico receitar um remédio sem mesmo ainda saber qual a doença? Ou um mecânico desmontar parte do carro sem saber qual o defeito que o dono está reclamando? Ou seja: como vamos dar uma solução para algo que ainda não sabemos bem do que se trata? Isso de "se preocupar em dar uma solução" é mais comum do que parece!!! Veja um exemplo caricaturado: Pegadinha, seu filho já usou Twitter? Nesse exemplo (que provavelmente são selecionadas as respostas mais interessantes...) as pessoas costumam responder sem mesmo saber o que é um "Twitter". Talvez, pela entonação da pergunta, alguns dos entrevistados "supõem" que "Twitter" seja algo ruim, como por exemplo, uma droga perigosa, ou ao algo do tipo (a maioria não faz ideia do que é)... Essas pessoas talvez estejam preocupadas em dar uma resposta que supostamente iria agradar o perguntador ou que normalmente é imposta como sendo uma boa resposta entre a sua comunidade (não necessariamente o que ele pensa), mas não percebendo que o contexto da resposta não tem algo a ver com o que foi perguntado. Algo por aí.. Percebe como isso não faz sentido? Poucas pessoas percebem isso... o estudo de técnicas de programação também serve para ajudar a sair desse senso comum. (Não que isso seja uma coisa ruim, mas pelo menos não deveria funcionar para esse nosso ambiente de desenvolvimento!) Um exemplo de comportamento que acho que seria mais adequado seria desse cara aos 29 segundos: Ele PRIMEIRO quer saber do que se trata, para depois então tentar dar uma resposta (ou não)... Um simplesmente: "não sei do que você está falando" ou "já ouvi falar dessa ferramenta, mas não tenho ideia do seu impacto no indivíduo"... Esse é o cerne: saber do que se trata. Veja que isso vale tanto para um exercício que estamos tentando resolver, tanto para outros contextos em geral. Entenda o problema... se tiver dúvidas, poderia consultar, por exemplo, o Fórum, ou mesmo entrar em contato diretamente com o professor (ele que definiu o problema, e é ele que quer determinado tipo de resposta). O desenvolvimento do algoritmo está 100% relacionado ao entendimento do enunciado... eu particularmente ainda não entendi do que se trata, logo, não posso te ajudar analisando o teu código atual! Veja: A ideia da minha resposta lá foi apenas para demonstrar um fluxo de desenvolvimento... não é algo final ou já uma tentativa de resposta do enunciado. Você agora já postou o enunciado completo, mas não ajudou muito, daí, a minha sugestão seria revisá-lo antes de começar a pensar no código. RESUMINDO: Poste o código completo em forma de texto, para podermos copiar e testar. Mesmo não sendo necessariamente o que o enunciado quer, é possível extrair algo; Poste o que você entendeu do enunciado. O que você acha que deve ser feito. No aguardo.
  5. @Gilmar Souzq, qual o enunciado completo da questão?
  6. A parte do diagrama de fluxo podemos verificar depois. O enunciado é só isso? Imprimir os dados de onde? adicionado 43 minutos depois Seguem duas dicas fundamentais: Procure seguir exatamente o que o enunciado está propondo. É ele que define o que vai ser feito; Sempre deixe seu código rodável. Não deixe estruturas inacabadas ou com erros (mais a baixo explico mais) A qualquer momento que "der um F9", o código tem que rodar sem erros; Segue um exemplo: // Faça um algoritmo que imprima nome, idade, sexo, salario e a quantidade de //salarios minimos. Considere o salário mínimo no valor de 1045.00. //Depois faça um diagrama de fluxo BPM. algoritmo "Cadastro de funcionários" var nomes: vetor[1..5] de caractere sexos: vetor[1..5] de caractere udades: vetor[1..5] de inteiro salario: vetor[1..5] de real inicio fimAlgoritmo Nesse código apenas declarei algumas variáveis iniciais. VEJA: Isso é só um esboço. É necessário o enunciado original e completo. Como não consegui entender o que é para ser feito ainda, apenas supus que será feito um cadastro de funcionários ou algo do tipo... (quando tiver outras informações, só ir ajustando. Não tem problemas) Daí, resolvi inserir uma parte para cadastrar os funcionários. Para testar, vamos utilizar um para/faca. Ex.: algoritmo "Cadastro de funcionários" var nomes: vetor[1..5] de caractere sexos: vetor[1..5] de caractere idades: vetor[1..5] de inteiro salario: vetor[1..5] de real cod: inteiro inicio escreval(" CADASTRO DE FUNCIONÁRIO ") para cod de 1 ate 5 faca fimPara fimAlgoritmo Se você estiver prestando bem atenção, percebeu que tinha digitado udades, em vez de idade. Não tem problema!!! Foi só um erro de digitação (já tinha visto antes)... se botar para rodar, vai rodar da mesma forma... (o VisualG não faz ideia do que se trata as variáveis, apenas quer saber se está com uma sintaxe correta... como iniciar com letras e não ter espaços em brancos, por exemplo) Agora vamos tentar implementar mais um pouco: // Faça um algoritmo que imprima nome, idade, sexo, salario e a quantidade de //salarios minimos. Considere o salário mínimo no valor de 1045.00. //Depois faça um diagrama de fluxo BPM. algoritmo "Cadastro de funcionários" var nomes: vetor[1..5] de caractere sexos: vetor[1..5] de caractere idades: vetor[1..5] de inteiro salario: vetor[1..5] de real cod: inteiro inicio escreval(" CADASTRO DE FUNCIONÁRIO ") para cod de 1 ate 5 faca escreval("") escreval("") escreval("Informa os dados do funcionário ", cod:1) escreval(" ") escreva ("Nome: ") leia(nomes[cod]) escreva ("Sexo (M/F): ") leia(sexos[cod]) escreva ("Idades: ") leia(idades[cod]) escreva ("Salário: ") leia(idades[cod]) fimPara fimAlgoritmo Fazendo um teste para ter uma ideia de como tá: Salário ficou zerado... utilizei o vetor errado ali na leitura... só corrigir!!! Uma outra forma bacana de testar é colocar para imprimir na tela, algo como: Percebe que ficou tudo bagunçado.. ainda está com o erro na leitura dos salários e utilizei cod (que é o código do funcionário) em vez de utilizar o i, que foi utilizado para "varrer" o vetor... Tentando corrigir... Vai começando a tomar cara... e vai indo.. A maioria das coisas que vai inserindo no código são basicamente estruturas já vistas em outros códigos que fizemos ou que vimos... no início vai demorando um pouco para achar formas mais práticas, mas é basicamente uma reutilização. Tem que ir metendo as caras para passar por perrengues e ir aprendendo e assimilando aos poucos mesmo. Por fim, segue outra dica super útil: utilize o ALEATORIO do VisualG para gerar valores nessa etapa de desenvolvimento... é muito chato ficar digitando valores para preencher os dados!!! Exemplo: // Faça um algoritmo que imprima nome, idade, sexo, salario e a quantidade de //salarios minimos. Considere o salário mínimo no valor de 1045.00. //Depois faça um diagrama de fluxo BPM. algoritmo "Cadastro de funcionários" var nomes: vetor[1..5] de caractere sexos: vetor[1..5] de caractere idades: vetor[1..5] de inteiro salarios: vetor[1..5] de real cod: inteiro i: inteiro parada: caractere inicio ALEATORIO 1, 1000 escreval(" CADASTRO DE FUNCIONÁRIO ") para cod de 1 ate 5 faca escreval("") escreval("") escreval("Informa os dados do funcionário ", cod:1) escreval(" ") escreva ("Nome: ") leia(nomes[cod]) escreva ("Sexo (M/F): ") leia(sexos[cod]) escreva ("Idades: ") leia(idades[cod]) escreva ("Salário: ") leia(salarios[cod]) fimPara ALEATORIO off escreval("") escreval("") escreva ("Pressione ENTER para listar os funcionários") leia(parada) LimpaTela() para i de 1 ate 5 faca escreval("FUNCIONÁRIO :", i) escreval("Nome : ", nomes[i]) escreval("Sexo : ", sexos[i]) escreval("Idade : ", idades[i]:1) escreval("Salário: ", salarios[i]:1:2) leia(parada) fimPara fimAlgoritmo Onde tiver leia(), o VisualG vai inserir valores aleatório... Teste aí e veja como fica... RESUMINDO: Reveja a questão do enunciado completo. É necessário seguir o que tá lá. Esse exemplo acima foi baseado num fluxo qualquer; Faça um código novo. Pode seguir mais ou menos o fluxo apresentado acima (não copie meu código), vá fazendo o seu pouco a pouco; Poste o enunciado completo e seu código atual para revisarmos. Lembre de SEMPRE DEIXAR O CÓDIGO RODÁVEL. Não existe isso de código com erro!!! Se está dando pau, precisa resolver o que está errado.. inclusive perguntando aqui no fórum, pesquisando na internet, fazendo testes com algo que faz sentido... No aguardo.
  7. Segue o enunciado: Cadê as funções? Então, se um exercício com uso de funções foi passado, é porque você já estudou sobre. Se tem dúvidas sobre function/procedure, dê uma pesquisa sobre o tema. Veja exemplos... se aprofunde no tema. Após, se tiver dúvidas sobre isso (funções), é só perguntar!!! Segue um esboço: {$CODEPAGE UTF8} //uma forma de tentar conseguir imprimir palavras acentuadas program conversaodemedidas; { Criar um algorítimo que tenha 2 funções: A primeira deverá receber como parâmetro uma velocidade em metros por segundo (m/s) e retornar esta velocidade em quilômetros por hora (km/h). A segunda deverá receber ccomo parâmetro uma velocidade em quilômetros por hora (km/h) e retornar esta velocidade em metros por segundo (m/s). } uses CRT; function ms_para_kmh (ms: real): real; begin ms_para_kmh := 0; end; function kmh_para_ms (kmh:real): real; begin kmh_para_ms := 0; end; var ms, kmh:real; begin end. Você iria implementar duas funções: uma para para cada conversão e no programa principal, você utilizaria elas... Lembrando: revise sobre o tema, e tira as suas dúvidas sobre o que é uma função... se não souber o que é isso, não adianta fazer qualquer outra coisa (pois o exercício trata-se disso). Tente fazer qualquer outros exercícios com funções... apenas treine um pouco e entenda seu funcionamento... No aguardo. adicionado 8 minutos depois Segue um exemplo qualquer utilizando funções: program soma_dois_valores; uses CRT; function somaDoisValores (a, b: real): real; var soma: real; begin soma := a + b; somaDoisValores := soma; end; var num1, num2: real; resultado: real; begin ClrScr; writeln('Digite o primeiro valor'); readln(num1); writeln('Digite o segundo valor'); readln(num2); resultado := somaDoisValores(num1, num2); writeln('A soma do primeiro valor + o segundo valor deu ', resultado:1:3); ReadKey(); end.
  8. @pedrolagecs, poste o que já conseguiu fazer e em qual parte está com dúvidas. adicionado 14 minutos depois Esboço sobre a declaração das variáveis e um teste de uso: { •receba o preço de 10 produtos e armazene-os em um vetor; •receba a quantidade estocada de cada um desses produtos em cinco armazéns diferentes, utilizando uma matriz 5 x 10. Calcule e mostre: •a quantidade de produtos estocados em cada um dos armazéns; •a quantidade de cada um dos produtos estocados em todos os armazéns juntos; •o preço do produto que possui maior estoque em um único armazém; •o menor estoque armazenado de cada produto; •o custo de cada armazém. } {$CODEPAGE UTF8} //uma forma de tentar conseguir imprimir palavras acentuadas program Exercicio01; uses CRT; var vet_precoProduto: array [1..10] of real; vet_armazem_qtdProduto: array [1..5, 1..10] of integer; codProduto, codArmazem: integer; BEGIN codProduto := 5; vet_precoProduto[codProduto] := 4.90; codArmazem := 2; vet_armazem_qtdProduto[codArmazem, codProduto] := 10; codArmazem := 4; vet_armazem_qtdProduto[codArmazem, codProduto] := 13; codProduto := 5; writeln('Produto ', codProduto:1, ': R$', vet_precoProduto[codProduto]:1:2); codArmazem := 2; writeln('Armazém ', codArmazem:1, ': ', vet_armazem_qtdProduto[codArmazem, codProduto], ' (unidades)'); codArmazem := 4; writeln('Armazém ', codArmazem:1, ': ', vet_armazem_qtdProduto[codArmazem, codProduto], ' (unidades)'); ReadKey(); END.
  9. Poste o enunciado completo da questão. Poste o código completo do que já conseguiu fazer e onde está com dúvidas. Obs.: a imagem do código não serve. Precisamos do texto.
  10. @Alice Braga, Era só inverter de ">" para "<" nas condições. Mas ainda existirá ouros problemas, como no caso de empates. Experimente inserir duas ou mais alturas iguais, que sejam as menos (ou maiores, caso ainda não tenha corrigido)... Segue alguns pontos: 1# Seguindo a ideia de utilizar nomes de variáveis mais sugestíveis, seria preferível, por exemplo, utilizar as nomenclaturas dos vetores no plural. Vide: var nomes: vetor[1..3] de caractere alturas: vetor[1..3] de real posicao: inteiro Assim dando uma ideia que é um conjunto de coisas... nome = 1 nome nomes = conjunto de nomes 2# Uma outra forma mais elegante para verificar o menor seria guardar a posição do então menor... exemplo: algoritmo "semnome" var nomes: vetor[1..3] de caractere alturas: vetor[1..3] de real posicao: inteiro indiceMenorAltura: inteiro i: inteiro inicio para posicao de 1 ate 3 faca escreva("Digite o seu nome: ") leia(nomes[posicao]) escreval("") escreva("Digite a sua altura: ") leia(alturas[posicao]) limpaTela fimPara escreval(" REGISTROS ") para i de 1 ate posicao faca escreval("Nome : ", nomes[i]) escreval("Altura: ", alturas[i]:1:2) escreval("") fimpara indiceMenorAltura := 1 para i de 1 ate posicao faca se (alturas[i] < alturas[indiceMenorAltura]) entao indiceMenorAltura <- i fimSe fimPara escreva (nomes[indiceMenorAltura], " é o(a) mais baixo(a) da lista, com ") escreval(alturas[indiceMenorAltura]:1:2, " metros de altura") fimAlgoritmo Qual dúvida é só perguntar.
  11. @Gilmar Souzq, por favor, poste o texto do código e em qual parte está com dúvidas.
  12. Por favor, poste o que já conseguiu fazer e em qual parte está com dúvidas.
  13. Vou tentar explicar com exemplos. Tente entender o passo-a-passo, mas também dê uma pesquisa mais a fundo sobre o que é uma função/procedimento em VisualG. Veja exemplos na internet. Entenda os seus funcionamentos... Vamos lá: Geralmente os enunciados já são meios que algoritmos, ou seja: já dão as etapas, no texto, para resolvê-los. Veja: Só implementar. O segredo é sempre tentar deixar o código mais "semântico" possível... em outras palavras deixando as coisas auto-explicativas... Exemplo: algoritmo "Desconto no combustível" var litrosVendidos: real tipoCombustivel: real precoAlcool: real precoGasolina: real inicio precoAlcool <- 2.90 precoGasolina <- 3.30 escreval("Litros vendidos: ") leia(litrosVendidos) escreval("Tipo de combustível (1-Álcool 2-Gasolina): ") leia(tipoCombustivel) fimAlgoritmo Tente ler o enunciado e ir comparando com o código... quanto mais próximo eles tiverem, melhor! Veja que os valores a serem utilizados para função DEVEM ser repassadas pelos parâmetros da própria função, ou seja: não pode utilizar as variáveis globais. Outro detalhe importante, e que está claro, é que está se referindo aos DADOS DE ENTRADA. Ele quer que use "o número de litros vendidos e o tipo de combustível" como parâmetro. Exemplo: funcao valorASerPago(lv: inteiro; tc: real): real inicio retorne 123.45 fimFuncao Essas variáveis lv e tc serão variáveis locais da função, ou seja: só existem lá!!! Ao invocar essa função no programa principal, vão ser passados os valores das variáveis globais e estas serão copiadas, respectivamente, para as variáveis da função... daí, na função vai utilizar as tais variáveis próprias (lv e tc, em vez de litrosVendidos e tipoCombustivel). Perceba também no código acima que ainda não implementei o miolo da função... coloquei para retornar um valor aleatório apenas para deixar o esqueleto pronto. A ideia é que se botar para rodar, deve rodar. Veja: O objetivo aí é fazer o bagulho rodar... por exemplo: eu tive uma certa dificuldade para descobrir que precisava do ";" ali depois do inteiro!!! Sem isso nada ia funcionar... Mas fui testando, testando, dando uma olhada no Google... não achei, daí tive a ideia de colocar uma ";" e funcionou. Se não funcionasse, poderia vir no Fórum e pesquisar mais um pouco e, até mesmo, abrir um tópico para perguntar como se resolver... entende? Teria que resolver isso primeiro... talvez usasse, por enquanto, ambos como real... ou usasse as variáveis globais... em fim., teria que resolver de alguma forma... Esse ponto já foi resolvido. Continuando: funcao valorASerPago(lv: inteiro; tc: real): real var valorItem: real inicio se (tc = 1) entao // se álcool valorItem <- lv*precoAlcool fimSe se (tc = 2) entao // se gasolina valorItem <- lv*precoGasolina fimSe retorne valorItem fimFuncao Para testar, apenas deixei com o preço sem o desconto. Vide: Ficou sem as casas decimais... Uma forma de resolver é utilizando um padrão de formatação :x:y. Exemplo: escreval("") escreval("Valor a ser pago: R$", valorTotal:1:2) Por aí vai... Daí tente dar continuidade ao código... Exemplos de passos: Mude de 2 se/entao para um se/senao/entao; Insira uma lógica para dar um desconto geral de 3% para álcool e 4% para gasolina; Após (não tente fazer esse, antes do anterior), insira uma lógica para dar um desconto de 3% ou 5% para álcool, ou 4% ou 6% para gasolina, de acordo com a regra do enunciado. Insira uma validação para não aceitar valores negativos para os litros de combustíveis etc Se tiver dúvidas ou dificuldades em algum ponto qualquer, é só falar... Caso termine estes pontos de boa, posta o código aqui e já parte para implementar mais outros "pequeno" pontos do enunciado... Veja: NÃO TENTE FAZER TUDO DE UMA VEZ. Faça uma coisinha e teste... se não funcionar, pare para corrigir até terminar... após, insira uma nova coisa... por aí vai... Por exemplo: por enquanto, nada de se preocupar com laços de repetições, outras validação de valores, inserir menus.. etc. Vá fazendo coisas pequenas e aos poucos... Lembrando: NÃO TENTE FAZER TUDO DE UMA VEZ. Para adiantar, que as vezes é um pouco chato de arrumar, segue um exemplo de como ficaria só implementando o 1. algoritmo "Desconto no combustível" var litrosVendidos: real tipoCombustivel: inteiro precoAlcool: real precoGasolina: real valorTotal: real funcao valorASerPago(lv: inteiro; tc: real): real var valorItem: real inicio valorItem <- 0 se (tc = 1) entao // se álcool valorItem <- lv*precoAlcool senao se (tc = 2) entao // se gasolina valorItem <- lv*precoGasolina fimSe fimSe retorne valorItem fimFuncao inicio precoAlcool <- 2.90 precoGasolina <- 3.30 escreval("Litros vendidos: ") leia(litrosVendidos) escreval("Tipo de combustível (1-Álcool 2-Gasolina): ") leia(tipoCombustivel) valorTotal <- valorASerPago(litrosVendidos, tipoCombustivel) escreval("") escreval("Valor a ser pago: R$", valorTotal:1:2) fimAlgoritmo No aguardo.
  14. @Alice Braga, sei que o código é para @João Vitor Volpin, mas vamos lá: São dois métodos. LeNumero() e Tabuada(). Os 2 devem ser implementados, pois assim foi solicitado no enunciado (é o enunciado que manda). Outro ponto é sobre o uso das variáveis. De um modo geral, não devem-se utilizar variáveis globais dentro de procedimento, ou seja: ou as variáveis são as que estão nos parâmetros (no caso n1 e n2), ou as variáveis são declaradas dentro do próprio procedimento. Veja: Aqui você está utilizando t, i e n que são variáveis externas à função ("não pode"). Perceba também que foi declarada para receber valores em n1 e n2, mas essas variáveis sequer foram utilizadas. @Alice Braga, perceba que precisa de um ajuste na expressão da condição lá no se também: Pense em um número qualquer... É possível número qualquer ser maior que 10 e, ao mesmo tempo, ser menor que 1? Não. Essa condição nunca vai ser verdadeira. No caso, ali seria "maior que 10 OU menor que 1". Só lembrar lá das teorias dos conjuntos... Segue um esboço inicial: algoritmo "Exercicio 01" var n: inteiro funcao LeNumero(n1, n2:inteiro):inteiro var num: inteiro inicio repita escreval("Digite um número entre ", n1:1, " e ", n2:2, " (inclusos)") leia(num) se (nao ((num >= n1) e (num <= n2))) entao escreval("Número inválido. Digite novamente!") fimSe retorne num ate ((num >= n1) e (num <= n2)) fimfuncao procedimento Tabuada(n :inteiro) inicio // Em construção fimProcedimento inicio n <- LeNumero(1, 10) escreval("Teste de número lido: ", n:1) // fimAlgoritmo Daí, o valor de n seria utilizado como parâmetro para Tabuada(). ADENDO: Talvez a expressão esteja um pouco confusa ali no se, né?... vejam: se (nao ((num >= n1) e (num <= n2))) entao Mas não tem mistério... A minha estrategia foi mais ou menos assim: a condição que eu quero é que "o número seja maior ou igual a n1 e menor ou igual a n2", certo? Desta forma, assim ficou ali no ate do repita, ou seja: vai ficar repetindo até que essa condição seja satisfeita. Daí, a condição para aparecer a "mensagem de erro", é justamente o oposto da condição para parar repetir... é ou não é? Logo, apenas coloquei "tudo" da condição do ate e usei o "nao" para inverter o valor do resultado (já que está sendo verificado justamente esse resultado inverso). Poderia ser assim também: //se (nao ((num >= n1) e (num <= n2))) entao se ((num < n1) ou (num > n2)) entao São equivalentes... a negação de ">=" é "<". A negação de e é ou. E a negação de "<=" é ">"... (a negação de não é sim... logo, o comando some). Segue um complemento sobre a estrutura se/entao: No aguardo.
  15. @Soul1Gamer, você precisa "varrer" o vetor. No teu código, você está comparando a pesquisa apenas em uma posição fixa. Veja: Na quarta linha, está acessando o vetor informacao na posição i. Mas qual o valor de i naquela posição? Daí, teu código está mandando o VisualG apenas comparar a pesquisa na posição que i vale. É isso que você precisa? Veja o enunciado: Creio que a ideia seja ir comparando a pesquisa com o nome de cada uma das posições do vetor, fazendo isso sequencialmente, ou seja: compara com a posição 1, depois com a posição 2, depois com a posição 3 etc. Como "varrer" um vetor? Basta utilizar um laço de repetição, inda da primeira posição até a última posição cadastrada. A partir daí, vai analisando o comportamento do programa e vai fazendo ajustes... 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...

placa-mae-popup.jpg

Tenha uma nova fonte de renda!

CLIQUE AQUI E CONFIRA AGORA MESMO!