-
Conteúdo Similar
-
Por andiroldao
Então, estava trabalhando nesse algoritmo em Portugol e resolvi traduzir para C, porém, se eu entro com dados em veículos maior que 2000, a Média de acidentes em cidades com menos de 2000 veículos de passeio aparece como: -nan. Alguém sabe me dizer onde estou errando? #include <stdio.h> int main(void) { //- Variáveis int codigo, veiculos, acidentes; int codigo_menos_acidente = 0; int codigo_mais_acidente = 0; int indice_menor_cidade = 0; int codigo_menor_cidade = 0; int indice_maior_cidade = 0; int codigo_maior_cidade = 0; int soma_acidentes_menor_2000 = 0; int menor_indice_acidentes = 0; int maior_indice_acidentes = 0; int soma_geral_de_veiculos = 0; int numero_cidades = 0; float media_de_veiculos_cidades = 0; float numero_cidades_veiculos_menor_2000 = 0; float media_de_acidentes_menor_2000 = 0; char continuar_a_pedir_dados = 1; do{ //- Entrada de dados printf("\nEntrada de dados \n\n"); //- Código da cidade; printf("Insira o Código da Cidade: "); scanf("%d", &codigo); //- Número de veículos de passeio; printf("Insira o número de veículos de passeio: "); scanf("%d", &veiculos); //- Número de acidentes de trânsito com vítimas; printf("Insira número de acidentes de trânsito com vítimas: "); scanf("%d", &acidentes); soma_geral_de_veiculos += veiculos; numero_cidades += 1; if(acidentes< indice_menor_cidade || indice_menor_cidade == 0) { codigo_menor_cidade = codigo; indice_menor_cidade = acidentes; } if(acidentes > indice_maior_cidade || indice_maior_cidade == 0) { codigo_maior_cidade = codigo; indice_maior_cidade = acidentes; } if(veiculos < 2000) { soma_acidentes_menor_2000 += acidentes; numero_cidades_veiculos_menor_2000 += 1; } if(acidentes < menor_indice_acidentes || menor_indice_acidentes == 0) { codigo_menos_acidente = codigo; menor_indice_acidentes = acidentes; } if(acidentes > maior_indice_acidentes || maior_indice_acidentes == 0) { codigo_mais_acidente = codigo; maior_indice_acidentes = acidentes; } printf("\nPara inserir novos dados digite \"1\", para sair do programa digite outro valor: "); scanf("%s", &continuar_a_pedir_dados); } while(continuar_a_pedir_dados == '1'); printf("\n\nResultado da pesquisa\n"); media_de_veiculos_cidades = soma_geral_de_veiculos / numero_cidades; media_de_acidentes_menor_2000 = soma_acidentes_menor_2000 / numero_cidades_veiculos_menor_2000; //- Qual o maior índice de acidente de trânsito; printf("\nMaior índice de acidentes: %d\n", maior_indice_acidentes); //- Qual cidade pertence o maior índice de acidente de trânsito; printf("\nCidade com mais acidentes: %.d\n", codigo_maior_cidade); //- Qual o menor índice de acidente de trânsito; printf("\nMenor índice de acidentes: %d\n", menor_indice_acidentes); //- Qual cidade pertence o menor índice de acidente de trânsito; printf("\nCidade com menos acidentes: %d\n", codigo_menor_cidade); //- Qual a média de veículos nas0 cidades juntas; printf("\nMédia de víiculos: %.f\n", media_de_veiculos_cidades); //- Qual a média de acidentes de trânsito nas cidades com menos de 2000 veículos de passeio. printf("\nMédia de acidentes em cidades com menos de 2000 veículos de passeio: %.f\n", media_de_acidentes_menor_2000); printf("\n"); return 0; } -
Por nummularius
Salve, meus amigos!
Estou começando meus estudos em programação, ainda na fase de lógica da programação.
O código abaixo é para executar a seguinte tarefa: pegar, através do input (id = "inputValor" no HTML) três valores numéricos, através da função insereValor, colocar esses valores no array recebeValor e depois fazer a média desses valores.
Limitei a função insereValor em 3 valores, e depois a função mediaFunc faz a média desses 3 valores.
O problema: parece que o loop (while) só retorna o primeiro valor como numérico, os outros valores surgem como isNaN = true. Ou seja, não tenho como fazer o cálculo de média, pois o resultado da NaN.
O que estou fazendo de errado?
Obrigado.
<meta charset = "UTF-8"> <input id = "inputValor" /> <button id = "botaoInsere">Inserir</button> <p id = "pegaTexto"></p> <script type="text/javascript"> function mediaFunc(v1, v2, v3){ var media = parseInt((v1 + v2 + v3) / limite); return media; } function insereValor(){ while(posicao < limite) { //pega o valor inputado no campo em branco. recebeValor.push(parseInt(document.getElementById("inputValor").value)); //acrescenta uma posição no array. Ou seja, vai para a próxima posição. posicao++; inputValor.focus(); return recebeValor; } mediaFunc(); inputValor.focus(); } var posicao = 0; var limite = 3; var recebeValor = []; var botaoInsere = document.getElementById('botaoInsere'); botaoInsere.onclick = insereValor; </script>
-