Ir ao conteúdo
  • Cadastre-se
CarlosSantana02

C Função em c para comparar números.

Recommended Posts

Eai galera, tenha uma dúvida em um exercício em c vê se vocês conseguir me ajudar, preciso fazer um algoritmo que receba números inteiros positivos. Determine o menor e maior só que utilizando funções, e a condição da parada é quando digitar um numero negativo. Eu comecei fazendo o while para ficar peguntado os números só que não sei como passar esses números para a função para comparar, vocês tem alguma dica para me ajudar? valeu

 

int main(){
int n;


do{

printf("Numero: \n");
scanf("%d",&n);


}while(a>=0)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom dia.

Crie duas funções fora do main, uma de calcular o maior e outra de calcular o menor.

Aí no seu código você só vai inserir a chamada maior(); e menor();

Obs: se não vai usar vetor, tem que criar uma variável global que irá guardar os números maior e menor.

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Math.Pi valeu pela dica, o que eu tentei só com o maior numero vou colocar aqui embaixo, só que não descobri o erro. 

 

#include <stdio.h>

int nmaior  = 0,nmenor = 0;

int maior (int x) {

if (x >= nmaior)
nmaior =x;
return x;
}

int main(){
int n;

do{
    printf("Numero : \n");
    scanf("%d",&n);

}while(n>=0);

    printf("O maior numero e: %d",maior(n));
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Use a tag de código.

 

#include <stdio.h>

int nmaior  = 0,nmenor = 0;

int maior (int x) {
  if (x >= nmaior)
  nmaior =x;
  return x;
}

int main(){
  int n;
  
  do{
    printf("Numero : \n");
    scanf("%d",&n);

  }while(n>=0);

  printf("O maior numero e: %d",maior(n));
}

 

Você não vai retornar nenhum valor. Somente armazenar o número dentro da variável "nmaior".

Se toda hora você retornar o valor, vão aparecer várias mensagens de retorno, e o ideal é que apareça somente ao final, quando digitar o número negativo.

Ao final do programa mostre o valor de "nmaior".

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Math.Pi Lá na comparação eu mudei o return 'x' para return 'nmaior' e mandei escrever o nmaior só que ele só retorna 0, eu acho que ele não ta entrando na comparação para ver qual o maior, não sei mesmo o que fazer.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tem coisa errada aí. Você tem que chamar a função dentro do while. E ela deve ser void (sem retorno).

No final você só mostra a variável nmaior e não a função.

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá todos, 

Achei curiosa a descrição do problema:

       Determine o menor e maior só que utilizando funções, 
e a condição da parada é quando digitar um numero negativo.

 

  • É realmente necessário duas funções? Ou é por exemplo: Utilizando funções escreva um programa que realize a soma de dois números (Um só função resolve). Pois esse também seria o caso do problema em questão, com isso uma função que determina o maior de dois números já é o bastante.
  • Por último, é para determinar o maior e o menor dentre dois números ou dentre todos os números até então 1 negativo ser digitado? Isso não me ficou bem claro.

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Mauro Britivaldo oi, o que estou tentado fazer é determinar o maior e menor dentro uma quantidade de números indeterminada, só finalizando quando for digitado qualquer número negativo. E precisa realmente ser mais de uma função.

adicionado 0 minutos depois

@Math.Pi Vou da uma olhada aqui no código para resolver o que você me falou, valeu.

Compartilhar este post


Link para o post
Compartilhar em outros sites
21 minutos atrás, Mauro Britivaldo disse:

Olá todos, 

Achei curiosa a descrição do problema:


       Determine o menor e maior só que utilizando funções, 
e a condição da parada é quando digitar um numero negativo.

 

  • É realmente necessário duas funções? Ou é por exemplo: Utilizando funções escreva um programa que realize a soma de dois números (Um só função resolve). Pois esse também seria o caso do problema em questão, com isso uma função que determina o maior de dois números já é o bastante.
  • Por último, é para determinar o maior e o menor dentre dois números ou dentre todos os números até então 1 negativo ser digitado? Isso não me ficou bem claro.

 

• Uma função resolve, mas como o enunciado informa "funções" sugeri a criação de duas. Além disso, podem ter casos em que 1 função com várias finalidades atrapalhem mais do que ajudem.

• Se fossem somente entre 2 números não haveria necessidade de um while com condicional.

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Math.Pi Olha o que eu dei uma ajeitado somente para o maior.

#include <stdio.h>

int nmaior,n;

void maior () {
	
	printf("Numero : \n");
    scanf("%d",&n);
    nmaior = n;
    
	do{
    printf("Numero : \n");
    scanf("%d",&n);
    	if (n > nmaior)
  		nmaior =n;

  	}while(n>=0);
  
  printf("O maior numero e: %d",nmaior);
}

int main(){
  
  maior();
}

 

Compartilhar este post


Link para o post
Compartilhar em outros sites
28 minutos atrás, CarlosSantana02 disse:

E precisa realmente ser mais de uma função.

Certo. Não diria que realmente, pois realmente não precisa, porque por eliminação o que não é o maior e o menor. Para ilustra que o que estou dizendo não é bobagem observe o exemplo abaixo. Daí fica bem visível a minha observação.

thebiggest.c

/*  
    Escrito por: Mauro Britivaldo
    Data da Criação: 01 - 03 - 018

    Propósito: Forum CdHardware

    */


#include <stdio.h>  // Incluir as rotinas que fazem Entra e Saída (E/S).
#include <stdlib.h> // Incluir as rotinas que fazem uso da memória.


inline char theBigNumberIs (int valNum0, int valNum1) {
   return (valNum0 < valNum1);
   }
int main (void) {
   puts ("SE O 1o FOR MAIOR, então ZERO SE O 2a FOR MAIOR então 1");
   printf ("RESPOSTA: %u\n", theBigNumberIs (10,12));
   
   return 0;
   }

Para que preciso de uma função para me dizer qual é o menor??? Deve esta enxergando errado!

 

14 minutos atrás, Math.Pi disse:

Se fossem somente entre 2 números não haveria necessidade de um while com condicional.

Discordo! Em momento algum isso foi bem claro. Poderíamos dizer que cada linha de teste constitui de dois números e que os casos de teste se encerram quando um deles é negativo e ainda seria necessário o WHILE. Por tanto, isso não exclui a dualidade de sentido do enunciado quando, bastava para tanto dizer que dentro os números digitados. Mas tudo certo.

 

14 minutos atrás, Math.Pi disse:

Uma função resolve, mas como o enunciado informa "funções" sugeri a criação de duas.

Resolver problemas usando funções, muitas vezes é pseudo para usando paradigma procedural, coisa estremante comum e corriqueira da programação. Daí usar isso com requisito para usar duas funções quando soluções são feitas apenas com uma unica é limitar o escopo do pensamento do programador (estudante). Mas tudo certo.

Compartilhar este post


Link para o post
Compartilhar em outros sites
31 minutos atrás, CarlosSantana02 disse:

@Math.Pi Olha o que eu dei uma ajeitado somente para o maior.


#include <stdio.h>

int nmaior,n;

void maior () {
	
	printf("Numero : \n");
    scanf("%d",&n);
    nmaior = n;
    
	do{
    printf("Numero : \n");
    scanf("%d",&n);
    	if (n > nmaior)
  		nmaior =n;

  	}while(n>=0);
  
  printf("O maior numero e: %d",nmaior);
}

int main(){
  
  maior();
}

 

 

Você deslocou tudo para a função. Se precisasse fazer várias funções não teria reaproveitamento de código. Além disso, ficaria mais parecido com 2 programas.

Compartilhar este post


Link para o post
Compartilhar em outros sites
1 minuto atrás, CarlosSantana02 disse:

Muito obrigado pelas dicas farei o resto aqui de acordo com as dicas de vocês. Obigado!

Por nada, sinto que quase não forneci dado algum. Mas nem por isso deixei de ser curioso, portanto, gostaria de ver seu trabalho finalizado, aqui mesmo no fórum quando o tiver terminado.

Boa Sorte.

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

×