Ir ao conteúdo
  • Cadastre-se

C Função não esta funcionando


Posts recomendados

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! 

Link para o comentário
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.

Link para o comentário
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]);

 

Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário 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 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...