Ir ao conteúdo
  • Cadastre-se
Estudante0123

C Função não esta funcionando

Recommended Posts

Boa noite, estou começando a usar funçoes em c, e tentando fazer um codigo simples para que graus de 0 a 39, seja apresentado tambem os valores em fahrenheit, até então eu tenho esse codigo,que roda de boas, mas a função não esta funcionando, e eu não sei o que poderia ser

#include <stdio.h>
  
  int main(){
      
      int matriz [40][2];
      int i;
      int j;
  
      int transformando (int graus);
     
      
      for (i=0; i<40; i++){
          while (j=0){
              int grau=i;
              matriz [i][j]= grau;
              matriz [i][j++]= transformando(grau);
          }
      }
      
      for (i=0; i<40; i++){
          while (j=0){
              printf ("%i ", matriz[i][j]);
              printf ("%i ", matriz[i][j++]);
              
          }
          printf ("\n");
      }
      
      
      return 0;
  }
  
  int transformando (int graus){
      int f= ((9/5) * graus ) + 32;
      
      return f;
  }

 

Alguém poderia me ajudar a resolver esse problema? Obrigado! 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Problema de indentação!?

#include <stdio.h>
float transformando(float graus);
int main(){
  ...
  return 0;
}

float transformando (float graus){
	float f = 0; 
	f = ((9.0/5.0) * graus ) + 32;

  return f;
}

Corrige apenas a função transformadora: Perceba que para garantir que as temperatura sejam bem convertidas nós operamos com variáveis do tipos flutuantes (type float) neste caso.

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

@AnsiC Não tem problema ele quer números inteiros apenas, o calculo precisa ser feito com ponto flutuante para chegar no valor correto, mas dá pra converter para int depois de calcular e retornar inteiro:

int transformando (int graus) {
    //Precisa colocar o .0 nos números literais para
    //calcular usando pontos flutuantes, senão ele faz
    //divisão inteira 9/5 = 1, o que não queremos.
    //Depois é só usar casting para inteiro (int):
    int f= (int)((9.0/5.0) * graus ) + 32;

    return f;
}

 

 

Fora isso tem problemas nos seus while(j=0) pois o operador com 1 único = é o operador de atribuição, ou seja j=0 está guardando o valor 0 na variável j, o operador de comparação de igualdade é o ==.

while(j==0){

 

Mas esses while nem deveriam existir, são desnecessários, retire esses while e simplesmente use matriz[ i ][0] e matriz[ i ][1].

int grau=i;
matriz[i][0]= grau;
matriz[i][1]= transformando(grau);

e

printf ("%i %i\n", matriz[i][0], matriz[i][1]);

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

@AnsiC Sim, corrigi o que foi apontado, a parte do while ali na hora que eu publiquei percebi o erro, mas o dos pontos flutuantes jamais perceberia, obrigado :)

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações 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

×