duda en c

Iniciado por MARIOAUGUSTO, 13 Junio 2011, 13:12 PM

0 Miembros y 1 Visitante están viendo este tema.

MARIOAUGUSTO

quisiera saber si alguien tiene una mejor forma de hacer la siguiente funcion
7.   Escriba un programa que tenga la función Max misma que devuelve el número mayor de dos enteros
#include<stdio.h>
#include<conio.h>
int max(int x, int y)// declaracion del nombre de la sus parametros y el valor que devuelve
{ if (x>y)
   return x;
   else // cuerpo de la funcion deonde se busca el mayor de dos numeros
   return y;
}
// ahora ponemos a funcionar la función
int main()
{
    int m=8;
    int  n=89;
do {
scanf ("%d %d", &m,&n) ;
printf("Maximo de %d,%d es %d\n",max(m, n)); /*llamada a max*/
}
while (m != 0);
return 0;
}
EJEMPLO DOS
#include<stdio.h>
#include<conio.h>
int max(int x, int y)// declaracion del nombre sus parametros y el valor que devuelve
{ if (x>y)
   return x;
   else // cuerpo de la funcion deonde se busca el mayor de dos numeros
   return y;
}
// ahora ponemos a funcionar la funcion
int main()
{
    int numero1;
    int numero2;
    int maximo=0;
    printf("por favor introduzca un numero\n");
    scanf("%d",&numero1);
    printf("por favor introduzca un numero\n");
    scanf("%d",&numero2);
    maximo = int max(int x,int y);
    printf("el numero maximo es %d\n \a",maximo);
    getch();
}

Dark Invader

#1
Mira a ver si esto es lo que buscas,no puedes pasarle a una funcion unos parametros que son variables,pero puedes jugar con los punteros para hacerlo:
#include<stdio.h>
#include<conio.h>
void max(int *x, int *y)// declaracion del nombre de la sus parametros(pero ahora transformo las direcciones de memoria de los parametros en numeros enteros)
{ if (*x>*y)
  printf ("el maximo es %d",*x);
  else // cuerpo de la funcion deonde se busca el mayor de dos numeros
  printf ("el maximo es %d",*y);
}
// ahora ponemos a funcionar la función
int main()
{
   char respuesta;
   int m,n;
   
do {
   printf("\nintroduzca dos numeros y se mostrara el mayor: ");
scanf ("%d %d", &m,&n) ;
setbuf ( stdin, NULL );
max(&m, &n); //pasar la direccion de memoria de las variables por parametro
printf("\n¿quiere hacer otra comprobacion?");
scanf("%c",&respuesta);
setbuf ( stdin, NULL );

}
while ((respuesta == 's') || (respuesta == 'S'));
getchar();
return 0;
}


A mi este me va perfecto.

Edito:mejora del codigo.

Salu2

bettu

maximo = int max(int x,int y);

Esto es incorrecto. Has declarado la función int max (int x, int y) arriba, porque lo pones aquí otra vez?

El programa de ejemplo dos que has puesto funcionaría bien si lo arreglaras así:

maximo = max(numero1, numero2)

Saludos!