Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.
    • DiF

      Poste seus códigos corretamente!   21-05-2016

      Prezados membros do Fórum do Clube do Hardware, O Fórum oferece um recurso chamado CODE, onde o ícone no painel do editor é  <>     O uso deste recurso é  imprescindível para uma melhor leitura, manter a organização, diferenciar de texto comum e principalmente evitar que os compiladores e IDEs acusem erro ao colar um código copiado daqui. Portanto convido-lhes para ler as instruções de como usar este recurso CODE neste tópico:  
rjort_nine

Funcao que recebe funcao como argumento

Recommended Posts

Ola galera, eu tenho esse codigo http://pastebin.com/nM9Xmbck

ele na linha 21. chamo a função 'analise' e essa mesma função recebe a função 'retorno' e essa função (retorno) recebe dois argumentos 1 array e um inteiro. O problema esta na leitura da função 'analise' que acaba imprimindo a condição do 'else'... Eu suspeito que isso seja devido ao recebimento do valor do array que a função 'retorno' recebe e acaba imprimindo a condição de 'else'... Esse codigo eu ja fiz ele corretamente mas estou testando o uso de chamada de função e tal em 'main'... alguem saberia me dizer se ha algum jeito de corrigir isso ou é gambiarra? Obrigado desde já =)

Codigo:

//Codigo do exercicio 2 da pagina 161 (livro Luis Damas)
#include <stdio.h>
#include <stdlib.h>
#define N 10
 
int retorno (float[], int);
int main (void){
  int analise (int);
 
  float vetor[N];
  int numLim;
 
  printf("Digite 10 valores:\n");
  for(int i=0;i<N;i++){
    scanf("%f", &vetor[i]);
  }
 
  printf("\nLimitacao de verificao(1~10):");
  scanf("%d", &numLim);
 
  analise(retorno(vetor, numLim)); //<---- 'analise' recebe outra função que recebe dois argumentos
  return 0;
}
 
int analise (int lim){
/*
**o problema é que possivelmente essa função tambem lê o valor do array e imprime o argumento de 'else'
*/
  if ((lim>=1) && (lim<=10)){
    system ("clear");
  }
  else
    printf("Limitacao excedida!\n");    
}
 
int retorno (float v[N], int n){
  float max;
  max = v[0];
 
  for(int i=0;i<n;i++){
    if(v[i] > max)
      max = v[i];
  }
    printf("Maior Valor dos numeros digitados:[%.1f]\nLimitacao usada:[%d]", max, n);
}

 

Editado por rjort_nine

Compartilhar este post


Link para o post
Compartilhar em outros sites

Posta o código aqui para ficar mais fácil.

 

Mas o que eu vi aí é que a função retorno() na verdade está sem retorno quando na verdade deveria retornar um int.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu não entendi direito o que o programa tem que fazer, mas acredito que o erro seja só a falta do retorno na função returno().

A declaração é

Citação

int retorno (float v[N], int n)

Então deve ter o 

Citação

return variavel;

 

Compartilhar este post


Link para o post
Compartilhar em outros sites
  • Autor do tópico
  • @MassakiMsk é um programa simple só de exercicio para treinar o aprendido mesmo... tipo, a pessoa digita X numeros e depois desses X numero usa um limitador para ver quais daqueles é o maior... Ex: 3.23,4.12,5.43,2.21,5.44,9.12. depois ele limita a "verificação" para apenas X casa dos vetor. Se digitar 3, ele só ira ver qual desses ->3.23, 4.12, 5.43 <- é o maior. Mas ai eu usei uma função que recebe outra função como argumento, chamei primeiro a função limita as casas do vetor para serem vistas e como argumento da chamada eu usei a outra função que recebe o array e o inteiro... entende?? -.-' acho que não tô sabendo explicar... enfim... é só um codigo pra testar as paradas mesmo

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites
    Citação
    
    void analise (float lim){  //Aqui pode ser void porque você não precisa retornar nenhum valor na main.
      							//No parametro também deve ser float para receber o retorno da função retorno()
      if ((lim>=1) && (lim<=10)){
        system ("clear");
        printf("O maior valor foi %f\n", lim); //Aqui ele só imprime o valor máximo detectado se for entre 0 e 10
      }
      else
        printf("Limitacao excedida!\n");    
    }

     

     

     

    float retorno (float v[N], int n){ //aqui tem que ser float para poder retornar o maior valor digitado
      float max;
      max = v[0];
     
      for(int i=0;i<n;i++){
        if(v[i] > max)
          max = v[i];
      }
        printf("Maior Valor dos numeros digitados:[%.1f]\nLimitacao usada:[%d]", max, n);
      return max; //Aqui ele retorna o valor máximo que vai ser usado como parametro para a função analisa()
    }

     

    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






    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

    ×