Ir ao conteúdo

Posts recomendados

Postado

Não ta rodando a parte que identifica se é maior ou menor , mas acho que era pra ser como ponteiros, mas não sei como colcolar como ponteiros. Não sei se vai estar certo.

#include <stdio.h>
#include <stdlib.h>

/* Escreva uma função (bem como um programa que exercite tal função) que receba 3
números informados pelo usuário no programa principal. A função deverá retornar o
maior e o menor número. Posteriormente, o programa principal deverá imprimir essas
informações. Essa função não possui o comando printf. */

int i;
int maior_numero(int num[i]);
int menor_numero(int num[i]);

int main() {
	int num[3], maior, menor, i;
	
	for(i=0 ;i<3 ; i++){
	printf("Digite o [%d] numero:", i+1);
	scanf("%d", &num[i]);
	}

	maior= maior_numero(num[i]);
	
	menor= menor_numero(num[i]);
	
	printf("O maior numero foi: %d", maior);
	printf("O menor numero foi: %d", menor);
	
	return 0;
}
 int maior_numero(int num[i]){
	int maior;
 	
    if(num[i]>maior){
  	maior=num[i];
	}
	return maior;
}

 int menor_numero(int num[i]){
	int menor;
 	
    if(num[i]<menor){
  	menor=num[i];
	}
	return menor;
}

 

  • Membro VIP
Postado

O exercício pede para escrever uma única função logo terá que alterar a estrutura. Para encontrar o maior/menor número você deve percorrer o vetor com um for comparando cada posição com uma variável. De início você pode preencher essa variável com o valor da 1º posição do vetor e depois ir comparando com as demais posições.

 

Para a função retornar mais de um valor você pode passar as variáveis por referência, algo assim:
void encontra_maior_menor (int num, int &maior, int &menor)

  • Curtir 1
Postado

Quando você passa um vetor como argumento para uma função basta colocar o nome dele.

maior = maior_numero(num[i]); ~ int maior_numero(int num[i]) == Errado.
maior = maior_numero(num); ~ int maior_numero(int num[]) == Certo.


Outro erro também é que você compara os valores do vetor com uma variável que não tem nenhum valor atribuído, assim o programa vai comparar com lixo de memoria lhe retornando provavelmente um valor errado.
 

Postado
20 minutos atrás, grievous disse:

O exercício pede para escrever uma única função logo terá que alterar a estrutura. Para encontrar o maior/menor número você deve percorrer o vetor com um for comparando cada posição com uma variável. De início você pode preencher essa variável com o valor da 1º posição do vetor e depois ir comparando com as demais posições.

 

Para a função retornar mais de um valor você pode passar as variáveis por referência, algo assim:
void encontra_maior_menor (int num, int &maior, int &menor)

Pode crer, eu coloquei duas funções ¬¬. Beleza, vou mudar a estrutura pra ver se vai.

adicionado 0 minutos depois
17 minutos atrás, HeartBreat disse:

Quando você passa um vetor como argumento para uma função basta colocar o nome dele.


maior = maior_numero(num[i]); ~ int maior_numero(int num[i]) == Errado.
maior = maior_numero(num); ~ int maior_numero(int num[]) == Certo.


Outro erro também é que você compara os valores do vetor com uma variável que não tem nenhum valor atribuído, assim o programa vai comparar com lixo de memoria lhe retornando provavelmente um valor errado.
 

Poo, eu estava com dúvida se ele encherga o vetor estando em outra função. Ou se tenho que fazer um for pra cada função..

Postado
16 minutos atrás, Dafne Guimarães disse:

Poo, eu estava com dúvida se ele encherga o vetor estando em outra função. Ou se tenho que fazer um for pra cada função..

Se eu não estou enganado quando se passa um vetor pra uma função é como se tivesse passando o endereço do primeiro índice dele, sendo assim é possível acessar todos os outros índices do vetor na função.

Postado
11 horas atrás, Dafne Guimarães disse:

int maior_numero(int num[i]){

int maior; if(num[i]>maior){ maior=num[i];

} return maior;

}

int menor_numero(int num[i]){

int menor; if(num[i]<menor)

{ menor=num[i];

}

return menor; }

Qual o valor da variável "i"? Não está vazio deste jeito?

  • 6 anos depois...
Postado

@Dafne Guimarães Olá!

 

O Problema

Escreva uma função (bem como um programa que exercite tal função) que receba 3 números informados pelo usuário no programa principal. A função deverá retornar o maior e o menor número. Posteriormente, o programa principal deverá imprimir essas informações.

 

Essa função não possui o comando printf.

 

 

Chamam de passagem por referência, nisso maior e menor são ponteiros para maior e menor no escopo da função main.

 

Por exemplo

 

C'11 -gcc'11.4

#include <stdio.h>
int proceed (float array[3], float *max, float *min);
int main (void){
  float array[3];
  
  for (int count= 3 ; count ; --count) {
    printf ("%c%s%d%s",'\r',"entre com ",count," números: ");
    
    int c= scanf ("%f",&array[count- 1U]);
    if (c==EOF) {
      perror ("Falha na leitura");
      return 1;
      }
    if (c==1) continue;
    getchar ();
    ++count;
    }
  float maior ,menor;
  int c= proceed (array,&maior,&menor);
  if (!c) printf ("%c%s%f%c%f%c",'\r',"O maior e menor número é: ",maior,' ',menor,'\n');
  return 0;
  }
int
proceed (float A[3], float *a1, float *a2){
  if (NULL==A || NULL==a1 || NULL==a2) return 1;

  *a1= *a2= *A;
  for (float const *LIMIT= A+ 3U ; A<LIMIT ; ++A)
    if (*A>*a1) *a1= *A;
        else
    if (*A<*a2) *a2= *A;

  return 0;
  }

 

O processo (função `proceed`) tem 3 argumentos,

sendo ela do tipo (float *, float *, float *)

 

Às vezes, as ponteiros são ditas referências!

 

 

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...