Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

andiroldao

Problema com NaN em C

Recommended Posts

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;
}

Compartilhar este post


Link para o post
Compartilhar em outros sites
2 horas atrás, andiroldao disse:
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;
}

essa parte eu alterei para isso

 

//*essa é a parte que eu alterei

        if(media_de_acidentes_menor_2000 < 2000) {

            printf("\nMédia de acidentes em cidades com menos de 2000 veículos de passeio: %.f\n", media_de_acidentes_menor_2000);

         }

         else {

            printf("\nNão existe média de acidentes em cidades com menos de 2000 veículos de passeio, pois não dados respectivos");

         }

         printf("\n");

return 0;

}

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por biza
      Ola
      Estou  a construir um datalogger em código C.Desta forma necessito passar os dados entre ficheiros. O meu problema está na inclusão de algumas variáveis no topo de um arquivo .txt onde os dados são salvos. Variáveis como tempo de data e hora, id do dispositivo e muito mais... Para isso preciso de ajuda, gostaria que os dados estivessem disponíveis para todos os arquivos, até aí é fácil, basta incluir a variável como extern, no arquivos *.h e incluí-lo em todos os outros que você deseja que a variável esteja disponível. mas como posso fazer para ter acesso a ele dentro do array que preciso?
      Exemplo: main.c
      #include "main.h" char dateTimeFormat[24]; void main(void){ dateTimeFormat = "22-02-22 13:23:04"; } main.h
      extern char dateTimeFormat[24];  
      teste.c
       
      #include "main.h" extern char dateTimeFormat[24]; /*Header .txt file initialization*/ volatile char headerFile[] ="\n\n" "# HEALT MONITORING SYSTEM \r\n" "# DEVELOPED: BIZA \r\n" "# VERSION: B \r\n" "# DATATIMECAPTURE:"+dateTimeFormat+ "\r\n" "# SAMPLINGFREQUENCY: 500 \r\n" "# SAMPLECHANNELS: 1 2 3 4 5 6 7 8 \r\n" "# SAMPLINGRESULUTION: 24 \r\n" "# IDDEVICE: HEALTHY \r\n" "# ENDOFHEADER  
      Como posso incluir a variável "dateTimeFormat" dentro do headerFile como descrevi acima?
       
    • Por 4Unknow
      Bom dia comunidade Imasters.

      Venho aqui tratar de um problema dúvida que estou tendo com um layout que estou tentando usar o formulário php dele.
      Quando clico em enviar ele me enviar para um arquivo .php  (assets/vendor/simple-forms/sendmail.php)

      Ele não envia o e-mail, acredito que deveria aparecer uma mensagem que o contato foi enviado corretamente.
      Vou deixar os arquivos aqui em anexo quem puder me ajudar nessa, ficaria muito grato.
       
      Link Website (wetransfer.com)
    • Por thiago_tw
      eu to com uma tarefa que preciso de ajuda, já tentei alguns algoritmos que achei por aqui mas nunca dá certo, mandei a imagem do que é para ser feito, agradecido se me ajudarem

    • Por oromotoceu
      #include <stdio.h>
      #include <stdlib.h>
      #define MAXTAM 1000
      int Frente, Tras, Lista[MAXTAM];
      void Lista_Construtor(){
      Frente=0;
      Tras=-1;
      }
      int Lista_Vazia(){
      if(Tras==-1)
      return 1;
      else
      return 0;
      }
      int Lista_Cheia(){
      if(Tras==MAXTAM-1)
      return 1;
      else
      return 0;
      }
      int Lista_Tamanho(){
      return Tras+1;
      }
      int Lista_Inserir_Inicio(int Valor){
      if(Lista_Cheia()){
      return 0;
      }else{
      /*se quero inserir na posição 0,
      vou deslocar todos os elementos para frente*/
      for(int i=Tras+1;i>Frente;i--){
      Lista=Lista[i-1];
      }
      Lista[Frente]=Valor;
      Tras++;
      return 1;
        }
      }
      int Lista_Inserir_Fim(int Valor){
      if(Lista_Cheia()){
      return 0;
      }else{
      Tras++;
      Lista[Tras]=Valor;
      return 1;
        }
      }
      int Lista_Inserir(int Valor, int Posicao){
      if(Lista_Cheia()){
      return 0;
      }else{
      /* Para verificar se a posição
      está no meio da lista */
      if(Posicao>Frente && Posicao<Tras){
      for(int i=Tras+1;i>Posicao;i--){
      Lista=Lista[i-1];
      }
      Lista[Posicao]=Valor;
      Tras++;
      return 1;
      }else{ 
      return 0;
         }
        }
      }
      int Lista_Remover_Inicio(int *Valor){
      if(Lista_Vazia()){
      return 0;
      }else{
      *Valor =Lista[Frente];
      for(int i=Frente;i<Tras;i++){
      Lista=Lista[i+1];
         }
      Tras--;
        }
      }
      int Lista_Remover_Fim(int *Valor){
      if(Lista_Vazia()){
      return 0;
      }else{
      *Valor=Lista[Tras];
      Tras--;
      return 1;
        }
      }
      int Lista_Remover(int *Valor, int Posicao){
      if(Lista_Vazia()){
      return 0;
      }else{
      if(Posicao>Frente && Posicao<Tras){
      *Valor=Lista[Posicao];
      for(int i=Posicao;i<Tras;i++){
      Lista=Lista[i+1];
      }
      Tras--;
      return 1;
         }
        }
      }
      int Lista_Get_toda(int *Valor){
      if(Lista_Vazia()){
      return 0;
      }else{
      *Valor=Lista[Frente];
      return 1;
        }
      }
      int Lista_Get_inicio(int *Valor){
      if(Lista_Vazia()){
      return 0;
      }else{
      *Valor=Lista[Frente];
      return 1;
        }
      }
      int Lista_Get_Fim(int *Valor){
      if(Lista_Vazia()){
      return 0;
      }else{
      *Valor=Lista[Tras];
      return 1;
        }
      }
      int Lista_Busca_Valor(int Valor, int *Posicao){
      int i;
      if(Lista_Vazia()){
      return 0;
      }else{
      for(i=Frente;i<Tras;i++){
      if(Lista==Valor){
      break;
        }
      }
      if(i==Tras){
      return 0;
      }else{
      *Posicao=i; 
      return 1;
         }
        }
      }
      int Lista_Busca_Posicao(int *Valor, int Posicao){
      if(Lista_Vazia()){
      return 0;
      }else{
      if(Posicao>Frente && Posicao<Tras){
      *Valor=Lista[Posicao];
      return 1;
      }else{
      return 0;
         }
        }
      }
      int main(){
      int i,Valor,op=0,pos;
      Lista_Construtor();
      while(op!=12){
      printf("*** Menu de opções ***\n");
      printf("1-Inserir início\n");
      printf("2-Inserir fim\n");
      printf("3-Inserir meio\n");
      printf("4-Excluir início\n");
      printf("5-Excluir fim\n");
      printf("6-Excluir meio\n");
      printf("7-Mostrar toda lista\n");
      printf("8-Mostrar primeiro item da lista\n");
      printf("9-Mostrar último item da lista\n");
      printf("10-Mostrar a posição de um item da lista\n");
      printf("11-Mostrar o valor de uma posição\n");
      printf("12-Sair\n");
      printf("Escolha uma opção: ");
      scanf("%d", &op);
      switch(op){
          case 1:
              printf("Digite o valor a ser inserido: ");
              scanf("%d", &Valor);
              Lista_Inserir_Inicio(Valor);
              break;
          case 2:
              printf("Digite o valor a ser inserido: ");
              scanf("%d", &Valor);
              Lista_Inserir_fim(Valor);
              break;
            case 3:
              printf("Digite o valor a ser inserido: ");
              scanf("%d", &Valor);
              printf("Digite a posição que deseja inserir: ");
              scanf("%d", &pos);
              Lista_ Inserir_meio(int Valor, pos); 
              break;
            case 4:
              printf("Digite a remoção do início: ");
              scanf("%d", &*Valor);
              Lista_ Excluir_inicio(*Valor); 
              break;
              case 5:
              printf("Digite a remoção do fim: ");
              scanf("%d", &*Valor);
              Lista_ Excluir_fim(*Valor); 
              break;
              case 6:
              printf("Digite a remoção do meio: ");
              scanf("%d", &Valor);
              printf("Digite a posição que deseja remover: ");
              scanf("%d", &*Posicao);
              Lista_ Excluir_meio(intValor, * pos); 
              break;
               case 7:
              printf("Digite ao a mostrar toda lista: ");
              scanf("%d", &Valor);
              Lista_ mostrar_toda_lista(Valor);
              break;
             case 8:
              printf("Digite ao a mostrar primeiro item da lista: ");
              scanf("%d", &*Valor);
              Lista_ mostrar_primeiro_item_da_lista(*Valor);
              break;
             case 9:
              printf("Digite ao a mostrar último item da lista: ");
              scanf("%d", &*Valor);
              Lista_ mostrar_ultimo_item_da_lista(*Valor);
              break;
              case 10:
              printf("Digite ao a mostrar a posição de um item da lista: ");
              scanf("%d", &Valor);
              printf("Digite a posição que deseja mostrar na lista: ");
              scanf("%d", &* pos);
              Lista_ mostrar_posicao_de_um_item_da_lista(intValor, *pos);
              break;
              case 11:
              printf("Digite ao a mostrar o valor de uma posição: ");
              scanf("%d", &*Valor
              printf("Digite a posição que deseja mostrar no valor: ");
              scanf("%d", &pos);
              Lista_ mostrar_posicao_de_um_valor_da_lista(int*Valor, pos);
              break;
              case 12:
              default:
              printf("Valor Invalido!\n");
              system("PAUSE");
               }
         }
       return 0;
      }
    • Por oromotoceu
      bom dia pode me ajudar nessa questão por favor
      O programa deverá trabalhar dados de um veículo, onde será armazenado, Nome do proprietário, placa do carro, modelo do carro e preço do carro.
      O programa deve ter as seguintes opções:
      Inserir dados (todos os dados sugeridos no enunciado acima).
      Excluir um Carro específico com a busca pela placa.
      Editar dados de um Carro com a busca pela placa.
      Consultar carro por Placa.
      Exibir todos os dados cadastrados.
      Finalizar programa.
      A opção exibir todos os dados, apresenta tudo que já foi cadastrado e está na memória.
       
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.