Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: MARIOAUGUSTO en 13 Junio 2011, 13:12 pm



Título: duda en c
Publicado por: MARIOAUGUSTO en 13 Junio 2011, 13:12 pm
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();
}


Título: Re: duda en c
Publicado por: Dark Invader en 13 Junio 2011, 23:16 pm
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:
Código
  1. #include<stdio.h>
  2. #include<conio.h>
  3. 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)
  4. { if (*x>*y)
  5.   printf ("el maximo es %d",*x);
  6.   else // cuerpo de la funcion deonde se busca el mayor de dos numeros
  7.   printf ("el maximo es %d",*y);
  8. }
  9. // ahora ponemos a funcionar la función
  10. int main()
  11. {
  12.    char respuesta;
  13.    int m,n;
  14.  
  15. do {
  16.    printf("\nintroduzca dos numeros y se mostrara el mayor: ");
  17. scanf ("%d %d", &m,&n) ;
  18. setbuf ( stdin, NULL );
  19. max(&m, &n); //pasar la direccion de memoria de las variables por parametro
  20. printf("\n¿quiere hacer otra comprobacion?");
  21. scanf("%c",&respuesta);
  22. setbuf ( stdin, NULL );
  23.  
  24. }
  25. while ((respuesta == 's') || (respuesta == 'S'));
  26. return 0;
  27. }

A mi este me va perfecto.

Edito:mejora del codigo.

Salu2


Título: Re: duda en c
Publicado por: bettu en 13 Junio 2011, 23:31 pm
Código:
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í:

Código:
maximo = max(numero1, numero2)

Saludos!