Ir ao conteúdo
  • Cadastre-se

C Função: Retornar maior e Menor


Dafne Guimarães

Posts recomendados

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

 

Link para o comentário
Compartilhar em outros sites

  • Membro VIP

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
Link para o comentário
Compartilhar em outros sites

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.
 

Link para o comentário
Compartilhar em outros sites

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

Link para o comentário
Compartilhar em outros sites

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.

Link para o comentário
Compartilhar em outros sites

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?

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