Ir ao conteúdo

Simon Viegas

Membro VIP
  • Posts

    3.940
  • Cadastrado em

Tudo que Simon Viegas postou

  1. @NOT DEAD, aparentemente é a falta de espaço após o Enquanto. Dá uma testada aí nos avisa. Dica: Mantenha o código sempre indentado. No VisualG, pressione Ctrl+G para ganhar uma ajuda. Segue um exemplo de código um pouco mais organizado: algoritmo "sem nome" var n: inteiro inicio n <- 0 enquanto (n <= 0) faca escreval(n) n <- n+1 fimEnquanto fimAlgoritmo ADENDO: Sugiro também utilizar a versão 3.0.6.5, que seria a mais estável. Exemplo de fonte para download: https://baixe.net/download/4313/visualg/
  2. @NOT DEAD, por favor, poste o texto do código para testarmos.
  3. @BrunoSouza586, seja bem vindo ao Fórum do Clube do Hardware. No veja esses trecos destacados: No retângulo vermelho o código estaria correspondendo a algo como "toda pessoa que for do sexo 'Feminino' terá a menor idade e também terá a maior idade". Isso não está correto. Já no trecho em azul, como o senao é referente ao se anterior, estaria correspondendo a algo como "para toda pessoa que não for do sexo 'Feminino", verifique se a idade dela é maior que a maior idade feminina. Caso não seja, verificar se a idade dela é menor que a menor idade feminina". Também não está correto. ATENÇÃO: entenda que na estrutura "se/senao", OU executa o se, OU executar o senao, ou seja: ou executar o que está em vermelho, ou o que está em azul... daí, dentro do azul, tem OUTRO se/entao que por sua vez respeita a mesma regra (ou o se, ou o senao)... e dentro do senao tem outro se simples...). Minha sugestão: Tente quebrar um problema maior e problemas menores... Em vez de tentar verificar "qual é a idade da mulher mais jovem", tente primeiro treinar a verificação de um menor qualquer... Crie um novo programa que ler apenas uma certa quantidade de idades... aí informe qual a menor idade. Poste o código aqui. Depois, modifique ele para ler o sexo e verifique a menor idade do "Feminino". Observação: primeiro poste o código da verificação do menor funcionando corretamente... NÃO tente fazer a segunda parte antes de terminar a primeira. No aguardo.
  4. @Luciano Penha, por favor, poste o código que já conseguiu fazer e em que partes está com dúvidas.
  5. Perfeito! Sobre: Você chegou a reinstalar o VisualG ou atualizar para ver se o erro para? ADENDO: Fiz novos testes no VisualG 2.X... nos testes, se não informar um valor, dá erro mesmo. Veja: Digitei 3, depois apenas dei um ENTER... Não seria necessariamente um bug, pelo contrário, faz mais sentido!!! O valor que vem do teclado geralmente é considerado como caractere mesmo... daí o VisualG é que "inventa" de tentar converter automaticamente para inteiro, nesse caso... Esse problema NÃO ocorre na versão 3.0.6.5. Exemplo: Aqui, ao dar ENTER, o VisualG está considerando como sendo um inteiro com valor 0 (zero). Já no VisualG 2.X, ele deve considerar como um caractere vazio (""). Aí, dá erro pois inteiro não comporta caractere. PS: Já no Pascal, "pai" do VisualG, o programa solicita novamente que insira um dados. Ex.: RESUMINDO: VisualG 2.X = considera um ENTER como sendo "" (um caractere "vazio"); VisualG 3.X = considera um ENTER como um 0; Pascal = entende um ENTER como "pular uma linha" e a leitura do caractere é ignorada e solicita ler novamente. *e isso pode mudar de subversão para subversão. Uma loucura. Para ser um pouco mais objetivo em relação ao problema do @VictorMenezesNA, segue um exemplo de como poderia ficar: algoritmo "media_pares" var n, i: inteiro quantidaDePares, somaPares: inteiro media: real vet: vetor[0..20] de inteiro inicio escreva("Quantos elementos terá o vetor? ") leia(n) quantidaDePares <- 0 somaPares <- 0 //preenche o vetor para i de 0 ate n-1 faca escreva (i+1:1, "º número: ") leia(vet[i]) fimPara //analisa o vetor para i de 0 ate n-1 faca se vet[i] % 2 = 0 entao somaPares <- omaPares + vet[i] quantidaDePares <- quantidaDePares + 1 fimSe fimPara se quantidaDePares > 0 entao media <- somaPares / quantidaDePares escreva("A MÉDIA DOS PARES É: ", media:1:3) senao escreva("NÃO HÁ NÚMEROS PARES") fimse fimAlgoritmo Observem que o escreva() serve APENAS para ter uma interface mais amigável, mas ela NÃO tem qualquer relação técnica com o leia(). É importante saber diferenciar uma coisa da outra. São comandos totalmente distintos e independentes. Daí..... para tentar o programa fazer algum sentido para quem está usando (o usuário), o programador combina um e outro de forma que fiquem semânticos entre si. Mas NÃO é obrigatório ter um escreva() antes do leia() para funcionar. Por fim, apenas uma demonstração como poderia inicializar o vetor: Mas, tem uns detalhes: se for para inicializar com 0, não precisa. O VisualG já faz isso para gente; como o vetor está sendo utilizado para "ler do teclado", não precisa inicializar de qualquer forma, pois não importa o que tem lá. Os valores serão substituídos; já, por exemplo, para somaPares, é a mesma coisa: como começa com 0, não precisava inicializar pois já está com 0, entretanto, seria uma boa prática fazer isso, pois é mais comum em linguagens de programação mais avançadas, as variáveis não serem auto-inicializadas, daí, se tiver algum valor que não seja 0, iria dar problema. (A soma não ia calcular corretamente.) Ao rodar, todas as variáveis já são zeradas aqui no VisualG:
  6. Sobre: A função da variável seria para posicionar o vetor na posição desejada ("qualquer coisa" que seja do tipo inteiro serviria). A estrutura está correta. O vetor começa vazio* (com valores padrões), daí é preciso em algum momento ler o dado desejado e inserir na posição correspondente. Perceba: Se está "definindo os valores do vetor no próprio código", para que está perguntando quantos elementos terá no vetor? A proposto do algoritmo seria preencher o vetor lendo os dados do usuário. A estrutura original está "correta": Segue um teste na versão 2.5 do VisualG: Apenas copiei, colei e rodei... Experimente reinstalar o VisualG ou aproveite para atualizar para a versão mais estável... a 3.0.6.5. Exemplo de fonte para download: https://baixe.net/download/4313/visualg/ Adendo 1: Sobre: Os dados estão sendo armazenados e logo verificados... posteriormente o vetor não está sendo utilizado para algo... bastaria uma variável simples. Exemplo: Utilizando vetores, faria mais sentido se primeiro lesse os dados (num para), e posteriormente faria as verificações (outro para). Adendo 2: o problema original de divisão por zero ainda existe e precisaria ser tratado.
  7. Sim! Sim!.. acontece. Possivelmente fez testes viciados. Meio que precisa enxergar as possibilidades gerais. Tipo: com 0 números; só pares; só ímpares; só um número; números negativos etc. No meu caso, pelo erro, eu já imaginava que era alguma divisão por 0 em algum momento. (Ou poderia ser um erro no VisualG da máquina dele.) Sobre: Em poucas palavras: se será substituído, não importa o que tinha antes. Tanto que o vetor nem precisa ser inicializado para o contexto. O que tem lá na variável não está fazendo parte da lógica do algoritmo... simplesmente o computador irá substituindo para novos valores. Ter um "monte de zeros" é apenas uma característica do VisualG, ele automaticamente se dar o trabalho de fazer isso. Veja que está, sim, lendo: Ah! repare que QuantidadePares e SomaPares estão sendo inicializados logo acima... no VisualG, como é para ficar com 0, nem precisava! Mas, como boa prática, é recomendado inicializar manualmente, pois fica mais semântico... já as "variáveis" do vetor não precisariam mesmo, pois não importa o que está lá... já que simplesmente serão substituídos. Sobre: O i é uma variável qualquer. Poderia chamar de letra que iria funcionar da mesma forma. Usa i, j, k etc, seria apenas uma convenção/padrão. Qualquer nomenclatura (válida) iria funcionar. Sobre: Nops! Segue um teste com o código original (apenas copiei, colei e rodei) : Ou seja: o ALEATORIO serve apenas para não precisar ficar digitando. Uma outra pergunta que pode surgir é: "ué? para que está utilizando vetores?". Aí já outro problema.. rs.
  8. Sobre: Aí que tá... depende do que ele está tentando fazer... por isso que perguntei: Ou seja: uma solução para um problema vai depender de qual é o problema em si. ("O cerne está no problema, não na solução".) Sobre "não aparece nenhuma mensagem". Vide: Se só informar ímpares, vai dar pau! Então, no caso eu "analisei o código e forcei o erro"... vi ali que tem uma divisão... logo, o denominador não pode ser 0 para esse contexto (computadores não funcionam muito bem com divisão por 0)... mas vejam: de um modo geral não caberia a nós "ajudantes" ficarmos caçando erros em código... ele que deveria já mais ou menos indicar. A partir do relato, partiríamos para ver o que está acontecendo . (Claro que vale como exercício ficar caçando.) Sobre: Como citado, ele está tentando "ler um vetor"... ou seja: "está preenchendo o vetor do programa com valores vindos do teclado". Não há problema em relação a isso... é diferente de "usar o conteúdo de um vetor não inicializado"... e mesmo assim, SEMPRE haverá valores no vetor... no caso do VisualG, vão estar automaticamente com 0 (não sei porque, mas o desenvolvedor quis assim). No caso de outras linguagens mais avançadas, podem ficar com o "lixo de memória"... daí meio que fica "obrigatório" inicializar manualmente. Sobre o uso do i, não importa o que se está utilizando para "acessar o vetor". Não existe qualquer relação técnica entre o valor passado para definir a posição e o valor do conteúdo da variável. Seria algo assim: vetor[<algum valor inteiro qualquer>] Vamos pegar o exemplo que você citou: vet[0] <- 2 vet[1] <- 8 vet[2] <- 3 Veja: Para todos os casos (propositalmente) está acessando a posição 2. O VisualG não faz ideia do "o que" está sendo utilizando no parâmetro.. ele simplesmente vê se o valor desse "o que" e vai simplesmente (tentar) acessar o vetor naquela posição. Nesse caso, "qualquer coisa" que seja um valor inteiro. Já no caso do código do @VictorMenezesNA, a leitura estaria tecnicamente de funcional... veja: O possível problema geral é esse: Toda vez que não existir pares, vai dar erro. (Pois a quantidade de pares vai ser 0.)
  9. @Juniorjbk7, por favor, poste o seu código completo para pode ser revisado e também servir de base para outros visitantes.
  10. @VictorMenezesNA, sobre: Qual problema? Por favor, dê outros detalhes do que está ocorrendo e também envie prints do erro relatado.
  11. Creio que não. Esse trecho, infracitado, está inicializando com o "primeiro valor", que é diferente de inicializar com o "valor 1". No caso, sempre vai ficar com o primeiro valor... o se está verificando a quantidade já cadastrada, não o valor informado. Só vai inicializar sempre com 1, se o primeiro valor informado pelo usuário sempre for 1. Inclusive daria para fazer assim: se contador = 1 entao menorV = valor maiorV = valor fimSe Já que o primeiro menor e o primeiro maior é o primeiro valor mesmo. Adendo: quando é o primeiro valor, não precisaria verificar novamente. Poderia ficar algo como: contator <- 0 enquanto (contador < 8) faca contador <- contador + 1 escreva("Informe o valor do ", contador:1, "º produto: ") leia(valor) se contador = 1 entao menorV = valor maiorV = valor senao se (valor > maiorV) entao maiorV <- valor senao se (valor < menorV) entao menorV <- valor fimSe fimSe fimSe fimEnquanto Observe que um novo valor NUNCA poderá ser um novo menor e um novo maior ao mesmo tempo, por isso ficariam também com um senao entre eles. (Se o número for um novo menor, não precisa verificar se também seria um maior, pois nunca será.)
  12. Exatamente... apenas troque "entende como" por "é inicializado com". Tecnicamente não existe uma variável sem valor... sempre vai ter algo lá... nem que seja null ou NaN, . Funcionaria mais ou menos assim: quanto executam-se um código no VisualG, vai sendo interpretado (VisualG não compila códigos) linha a linha ... da forma que lemos textos... ou seja: da esquerda para direita, de cima para baixo. Ao chegar lá no var, o o VisualG entente que é para "criar uma variável na memória"... mas como nada se cria nesse mundo, na verdade o VisualG vai "reservar um pedaço da memória RAM... de modo que consiga armazenar dados doe determinado tipo que foi definido". Assim, quando criou o menorV, ou qualquer outra variável - de qualquer tipo, essa variável vai ficar com o valor que já está lá na memória... também conhecido como "lixo"... no caso os bits que eram de outro programa (que pode ser do próprio programa de uma execução anterior.....). Acontece que, por conveniência, o desenvolvedor do VisualG resolveu "inicializar automaticamente todas as variáveis após declará-las". Entenda que isso é um "favor do programador". Daí, todas as variáveis ficam com um valor padrão (default). Para números é o 0; para caractere é ""; para logico é FALSO etc. ADENDO: essa característica de inicializar as variáveis automaticamente é herdade de seu pai, o Pascal/Delphi; no Pascal não é inicializado dentro de funções e procedimentos. No VisualG é meio nebuloso, testei aqui e tá inicializado, mas lembro de casos que não ocorreu e deu problemas na lógica; na dúvida, sempre quando não é uma variável que vai ser lida, dê um valor inicial; em outras linguagens do dia a dia, é comum ser obrigatório inicializar (caso contrário, não compila ou pelo menos a IDE dá um alerta avisando)
  13. Creio que não... e de um modo geral, os cálculos deveriam fica após o ate mesmo... já que precisam ser feito apenas uma única vez. e para sair, de fato, apenas utilizando o comando de Parar localizado no Menu ou por meio das teclas CTRL + F2. Porquê isso acontece? @Hatchiko, tente entender o que o erro significa... No VisualG, nem sempre a mensagem ajuda, mas já é um pontapé inicial. Uma forma interessante de ver onde está dando esse erro é pressionando F8 (em vez de F9) e ir seguindo passo a posso o fluxo do programa. Veja onde está o erro, entenda o erro e daí busque uma solução. Adendo: esse problema já existia antes das novas alterações... ou seja: é bom ter a noção que não necessariamente "um problema detectado após uma alteração é fruto da alteração em si". É preciso exercitar e praticar a abstração.
  14. @Hatchiko, tem mais um probleminha... experimente apenas informar valores pares ou só valores ímpares...
  15. Caro usuário, Seja bem-vindo ao Clube do Hardware. No intuito de servir como fonte de pesquisa no caso de instituições de ensino, informamos que incorrer no resolvimento por completo de questões relacionadas a disciplinas escolares de cursos técnicos e faculdades podem ser revistas e removidas pela Equipe de Moderação do Clube do Hardware. Para sanar dúvidas sobre esse tipo de problema, por gentileza, publique o passo a passo do desenvolvimento da questão, projeto, monografia ou conteúdo em dúvida para que possamos analisar se a resposta está correta ou não, ou para que possa ser auxiliado com a dúvida no desenvolvimento do exercício. Infelizmente, não há como resolver os trabalhos pelos usuários. O objetivo do Clube do Hardware é auxiliar seus usuários a encontrar soluções para que possam sanar suas dúvidas, e não de trazer soluções prontas para seus usuários. Além disso, copiar e colar respostas que não são de autoria própria do qualquer usuário é considerado plágio, o que é ilegal. Esperamos que compreenda. Atenciosamente, Equipe Clube do Hardware
  16. Caro usuário, Seja bem-vindo ao Clube do Hardware. No intuito de servir como fonte de pesquisa no caso de instituições de ensino, informamos que incorrer no resolvimento por completo de questões relacionadas a disciplinas escolares de cursos técnicos e faculdades podem ser revistas e removidas pela Equipe de Moderação do Clube do Hardware. Para sanar dúvidas sobre esse tipo de problema, por gentileza, publique o passo a passo do desenvolvimento da questão, projeto, monografia ou conteúdo em dúvida para que possamos analisar se a resposta está correta ou não, ou para que possa ser auxiliado com a dúvida no desenvolvimento do exercício. Infelizmente, não há como resolver os trabalhos pelos usuários. O objetivo do Clube do Hardware é auxiliar seus usuários a encontrar soluções para que possam sanar suas dúvidas, e não de trazer soluções prontas para seus usuários. Além disso, copiar e colar respostas que não são de autoria própria do qualquer usuário é considerado plágio, o que é ilegal. Esperamos que compreenda. Atenciosamente, Equipe Clube do Hardware
  17. Isso. No sentido que eu estou falando, a (ideia¹ da) lógica no teu código estaria correta: Ali, antes, estaria verificando se é menor que zero, ou seja: não bastaria simplesmente ser um "senao" (não ser positivo)... precisaria existir OUTRA verificação específica (ser menor que 0). Já abaixo... poderia levar a uma interpretação errada para quem ler desatento. Vide: Ao dizer "EXECUTA PARA TODOS OS OUTROS CASOS" estaria meio que dizendo que "todos os outros casos são negativos". E não seria. Se existir um caso que não é, o "todo" deixa de existir na frase. De um modo prático... o se/senão é uma estrutura que SEMPRE ou vai executar o que está no se, ou vai executar o que está no senao. Seria um caso de ou exclusivo... sempre será uma coisa ou outra.. nunca ambos, e nunca nenhum dos dois. Como analogia, vejamos o conjunto ℤ+ = {0, 1, 2, 3, 4, ...}. É comum, erroneamente, denominar de "conjunto dos números positivos", quando na verdade seria definido de "conjunto dos números não-negativos". É um sutil diferença que faz toda a diferença. O conjunto dos números positivos seria Z+*, que seria o conjunto dos números inteiros, sem os negativos e sem o zero. Por aí vai. ¹ falo de "ideia", pois, como citei em outra postagem, faltou o se e teria que ficar na linha de baixo. Ficar algo assim: Cada se é uma estrutura isolada. Daí um se pode ter senao ou não. O teu código estaria assim: Para o retângulo vermelho, sempre vai executar ou o que tá no se, ou o que está no senao. Para o azul, ou executar o se, ou simplesmente não executa... Poria ser assim também: Percebam que o retângulo azul está dentro do vermelho. Caso o se vermelho resultar em falso, vai executar o senao. Tudo que está lá.. eventualmente tem um outro se/senao... mas poderia ter qualquer coisa... não existe vínculo entre um uma estrutura e outra, sacam? aí o se azul vai segui a mesma lógica normal do se/senao... computador simplesmente vai seguindo o fluxo... os se servem para direcionar para um caminho ou outro. Adendo: se não me engano, tem uns bugs usando casa decimal (ex.: 0.0). Tô com preguiça de testar nesse momento, rs.
  18. @danteerich, qual o enunciado do problema?
  19. Só para complementar e ao mesmo tempo demonstrar... vejam: Como a exibição do saldo está repetido. Daria para simplificar. Exemplo: se resultado > 0 entao escreva ("Sua conta do banco está positiva.") senao se resultado = 0 entao escreva ("Sua conta do banco está zerada.") senao escreva ("Sua conta do banco está negativa.") fimSe fimSe escreval(" Tem R$ ", resultado:1:2) fimAlgoritmo Outra forma: escreval("Saldo no banco: R$", resultado:1:2) se resultado > 0 entao escreval("Sua conta do banco está positiva") senao se resultado = 0 entao escreval("Sua conta do banco está zerada") senao escreval("Sua conta do banco está negativa") fimSe fimSe fimAlgoritmo @danteerich, qual o enunciado dessa questão? A criação do algoritmo depende do que foi pedido. Mesmo "corrigindo" esses detalhes da sintaxe, ele pode está errado em relação ao que deveria ser feito... Tipo... é meio que um cliente pedir um cachorro-quente e o garçom trazer um delicioso hambúrguer artesanal, cheio de acompanhamento e tal... mas sendo que o cara quer um cachorro-quente. Não basta ser bem feito, tem que fazer o que se pede.
  20. @danteerich, só para ficar claro: Esse código do @MidoraQuebraTudo está com erro de sintaxe: Ali depois do senao faltou o se (e teria que ficar na linha de baixo). Esse código não era nem para rodar... para provar, veja: 2000 não é menor que 0 (é maior)... ou seja: não era para exibir a mensagem... concordam? De um modo geral.., como citado mais acima, o "erro" já estaria em colocar comandos ao lado do senao... o VisualG não aceita isso (por algum bug ele não informa que está errado e simplesmente ignora o que veio depois).. teria que ficar na linha de baixo. Vide meu código na postagem anterior. No aguardo.
  21. @Gustavo.Loggin, só um adendo. Sobre: Para o senao, seria algo meio que "EXECUTA PARA TODOS OS OUTROS CASOS (NÃO MAIORES QUE ZERO)", ou seja: para iguais a 0 ou negativos. Cuidado: nem todo número que não é maior que zero é negativo. @MidoraQuebraTudo, só um adendo também. Sobre: O senao basicamente funcionado como um "caso contrário" do se. No caso, o computador SEMPRE vai executar, OU o que está no se, OU vai executar o que está no senao. Mas, caso queira ter outra verificação dentro do senao, teria que colocar um outro se. Algo como: se salario > divida entao escreval ("Sua conta do banco está positiva: ",resultado) senao se salario < 0 entao escreval ("Sua conta do banco está negativa: ",resultado) fimSe fimSe Mas de qualquer forma temos um erro conceitual nos códigos... Essa "análise" meio que valeria para todos... Então, o que está sendo verificado é o resultado, e não o salário. Seria algo como: algoritmo "Algoritmo_Sobre_Salario" // Descrição : Aqui você descreve o que o programa faz! (função) // Autor(a) : Nome do(a) aluno(a) // Data atual : 17/12/2020 var salario, divida : real resultado: real inicio escreval("Qual o seu salário: ") leia(salario) escreval("Quanto você esta devendo: ") leia(divida) resultado <- (salario - divida) se resultado > 0 entao escreval("Sua conta do banco está positiva. Tem R$ ", resultado:1:2) senao se resultado = 0 entao escreval("Sua conta do banco está zerada. Tem R$: ", resultado:1:2) senao escreval("Sua conta do banco está negativa. Tem R$: ", resultado:1:2) fimSe fimSe fimAlgoritmo A dica sempre permanece: foquem no problema, e não na solução. Por aí vai.
  22. Sobre: Então provavelmente o erro está nessa declaração. No caso, não existe (ou não é mais utilizado) literal em VisualG. O mais correto seria utilizar caractere em seu lugar. Segue referência básica: https://www.apoioinformatica.inf.br/produtos/visualg/linguagem/item/6-tipos-de-dados Adendo: sugiro utilizar a versão 3.0.6.5 do VisualG. É a versão mais estável. Link https://baixe.net/visualg Link direto (pois tem uma propagandas confusas no site) https://baixe.net/dwn/4/125/VISUALG3_REV60.rar
  23. Sobre o método exibeDifMedia(): o nome do método está como "exibexxxx". Onde está exibindo alguma coisa nele?; (Ou você exibe a resposta nele, ou muda o nome.) para que está recebendo o vInsc[]?; (Se não está utilizando, não receba. Ou se deveria utilizar, utilize...); você declarou um mediaSal local. Qual valor está nesta nova variável? (O valor já foi calculado fora da método, deve ser passado por parâmetro. Cria uma variável local com o mesmo nome não faz o valor "entrar" ou "ficar disponível" na função¹.) no laço de repetição, você está definindo várias vezes um novo valor para um mesmo difMedia, ou seja: simplesmente vai ficar o último valor. (No caso, você calcula e já exibe, assim como fez no segundo código.) Você precisa entender o que quer fazer primeiro e e só depois fazer o que entendeu. ¹ Observação: a depender como implementar, poderia utilizar variáveis globais dentro da função, mas não seria recomendado. Para uma função, tudo que vai ser utilizada nela, OU é recebida por parâmetro, OU é criada dentro. Como "essa média" já tá lá no "main", então passa o valor por parâmetro para função. Acho que a assinatura poderia ficar algo assim: float exibeDifMedia (int mediaSal; int vInsc[], float vSal[], int tam) { Aí dentro da função exibe os dados
  24. Olá. Vou tentar complementar. Um primeiro ponto é sempre deixar a indentação do código bem organizada. Exemplo: #include <stdio.h> float calcMedia(float vet[], int tam) { float media, soma = 0; int i; for (i=0; i<tam; i++) { soma = soma + vet[i]; } media = (float)soma/tam; return media; } float exibeDifMedia (int vInsc[], float vSal[], int num) { float difmedia, soma=0, salario, media; int x,i; for (i=0; i<num; i++) { calcMedia(vSal, 6); difmedia=vSal[x]-calcMedia(vSal,x); } return difmedia; } int main(void){ int vInsc[6] = {1010,1020,1030,1040,1050,1060}; float vSal[6] = {1000.00,4020.00,900.00,10400.00,20000.00,1000.00}; float mediasal, difsal; int i; mediasal = calcMedia(vSal, 6); printf("A media dos salários é de %.2f\n", mediasal); for (i = 0 ; i <= 7; i++) { difsal = exibeDifMedia(vInsc, vSal, i); printf("\nDiferença de salário do funcionário [%d] para a média = %.1f\n",vInsc[i], difsal); } return 0; } Visualmente ajuda na compreensão do código. Em relação ao comportamento desejado, a minha sugestão é focar em entender o problema. O que está solicitando lá no enunciado? Creio que seja essa parte: Tá! Mas o que seria a "diferença entre o salário e a média"? O que é uma diferença? Então, pelo que eu entendi, seria algo como: "média geral" - "salário do empregado".... ou algo do tipo, correto? Se for isso, vai lá no código e implementa... se não for, vem e tenta definir o que é para ser feito, entende? Primeiro tem que definir melhor o que é para ser feito... "o como" eu entendo que seria parte posterior. Vou me basear pelo que eu defini acima... o que seria preciso para calcular a tal da diferença supracitada? Atualmente o código está assim: float exibeDifMedia (int vInsc[], float vSal[], int num){ float difmedia, soma=0, salario, media; int x,i; for (i=0; i<num; i++){ calcMedia(vSal, 6); difmedia=vSal[x]-calcMedia(vSal,x); } return difmedia ; } Por exemplo: perceba que inscrição não tem algo a ver com o contexto... você sequer está utilizando na função. Outro ponto é que a cálculo da média é feito apenas uma vez, já que ela não muda... e, inclusive, já foi feito. Você apenas precisa desse valor. Então, creio que precisaria da "média atual", que estaria na variável mediaSal e dos salários, que estariam em vSal[]. Aí, para cada empregado, você faz a subtração correspondente e exibia a respectiva resposta. Seria basicamente algo como: difMedia = mediaSal - vSal[i] Fazendo isso cada empregado (dentro de um laço de repetição). Outros pontos podem ir surgindo... vai entendendo (antes) e dando o devido tratamento.
  25. @MidoraQuebraTudo, simplesmente pare para prestar mais atenção naquilo que está sendo pedido e no que está sendo orientado. Ele está solicitando que fique lendo valores até que seja inserido o 0. Algo como: algoritmo "semnome" var num: inteiro inicio repita escreva ("Numero: ") leia(num) ate num = 0 fimAlgoritmo Aí, implementa só mais uma coisa, exemplo: Poderia fazer algo como: algoritmo "semnome" var num: inteiro qtdMaior50: inteiro inicio qtdMaior50 <- 0 repita escreva ("Numero: ") leia(num) se num > 50 entao qtdMaior50 <- qtdMaior50 + 1 fimSe ate num = 0 escreval("Quantidade de valores acima de 50: ", qtdMaior50:1) fimAlgoritmo Pronto. @MidoraQuebraTudo, pegue esse código acima. Já adianto que ele não está funcionando corretamente. Faça testes e ajuste o que tem que ajustar. Se tiver dúvidas, pare para entender o que está acontecendo e se vire para corrigir... caso não consiga, pode ficar a vontade para tirar dúvidas aqui... mas não tente fazer outra coisa antes de corrigir esse trecho. Após conseguir deixar esse trecho funcionando, ou seja: contanto corretamente a quantidade de maiores que 50, faça um próximo: você vai fazer apenas a soma valores pares e exibir o resultado na tela. Só isso. Se tiver dúvidas, se vire para tentar corrigir, caso tenha dúvidas sobre alguma parte, é só postar. Poste o código aqui. 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!