Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Bruno Pacheco

Imprimir o maior e o menor valor - Linguagem C

Recommended Posts

Meu programa está recebendo tres valores e na hora de imprimir ele não exibe o maior e o menor e sim uns números estranhos. O que posso fazer para que o meu código compile normal?

 

/*  Construir  uma  função  que  receba  três  valores,  a,  b ,  c. E retornar  (passagem  por  referência)  o 
MAIOR e o MENOR valor desses três. Deve ser criado um módulo principal “main()” 
para ler os três valores e imprimir o maior e o menor valor computado. */

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

int maior_menor(int d,int e,int f,int n, int maior, int menor);
int main(){
    int a,b,c,ma,me,i=3;

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

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

    printf("C: \n");
    scanf("%d",&c);
    maior_menor(a,b,c,i,ma,me);

    printf("O maior numero é: %d\n",ma);
    printf("O menor numero é: %d\n",me);
system("Pause");
}

int maior_menor(int d,int e, int f,int n,int maior,int menor ){
    int vet[3];
maior=-2000;
menor=2000;
vet[0]=d;
vet[1]=e;
vet[2]=f;


   if (n)
      maior_menor(d,e,f,n-1,maior,menor);
   else{
         
       if (vet[n]>maior){
           maior=vet[n];
           return maior; 
       }
       else if (vet[n]<menor){
           menor=vet[n];
           return menor;
       }         
   }                  
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ler o próprio código e as mensagens do compilador é um começo:

 

isis@isis-desktop:~/src/imasters$ gcc -Wall -Wextra p9.c

p9.c: In function ‘main’:

p9.c:16: error: ‘B’ undeclared (first use in this function)

p9.c:16: error: (Each undeclared identifier is reported only once

p9.c:16: error: for each function it appears in.)

 

 

E seu programa ou levaria um zero se fosse avaliação ou o enunciado teria que ser reescrito.

O exercício diz 'função que receba três argumentos' e você cria uma com 6, que eu nem vou me dar ao trabalho de descobrir o que faz, porque tem uma recursão desnecessária.

Você não está usando passagem por referência.

Não existe retorno de múltiplos valores em C, como por exemplo em Python, que dá p/ escrever return a,b, o que, na verdade retorna uma tupla.

 

Por que você cria um array?

 

Main retorna um inteiro...

 

 

#include <stdio.h>

int maior (int a, int b, int c) {
int nmaior = a;
if (b > nmaior)
	nmaior = b;

if (c > nmaior)
	nmaior = c;

return nmaior;
}

int menor(int a, int b, int c) {
int nmenor = a;
if (b < nmenor)
	nmenor = b;

if (c < nmenor)
	nmenor = c;

return nmenor;
}

int main(){
int a,b,c;

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

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

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

printf("O maior numero é: %d\n",maior(a,b,c));
printf("O menor numero é: %d\n",menor(a,b,c));
return 0;
}

 

 

#include <stdio.h>


int maior (int a, int b, int c) {
int nmaior = a;
if (b > nmaior)
	nmaior = b;

if (c > nmaior)
	nmaior = c;

return nmaior;
}

int menor(int a, int b, int c) {
int nmenor = a;
if (b < nmenor)
	nmenor = b;

if (c < nmenor)
	nmenor = c;

return nmenor;
}


void ordem(int a, int b, int c, int *tmenor, int *tmaior) {

(*tmaior) = maior(a,b,c);
(*tmenor) = menor(a,b,c);

}

int main(){
int a,b,c;
int menor, maior;

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

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

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


ordem(a,b,c, &menor, &maior);
printf("O maior numero é: %d\n",maior);
printf("O menor numero é: %d\n",menor);
return 0;
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.