Help! Calcular máximo de 3 numeros usando función

Iniciado por sora_ori, 17 Febrero 2013, 12:52 PM

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

sora_ori

Estoy realizando un programa que calcula el máximo de tres números usando una función que nos de el máximo de dos números


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


int mayor(int num){

int main(){

int num1, num2, num3;
int max, mayor;

printf("Introduce un numero: ");
scanf("%d",&num1);
printf("Introduce un numero: ");
scanf("%d",&num2);
printf("Introduce un numero: ");
scanf("%d",&num3);

max = mayor(num1, num2);

printf("El mayor es: %d %d", mayor(max, num3));


  system("PAUSE");
  return 0;
}


// FUNCION
int mayor(int num){


if (num1 > num2){
        return num1;
else
        return num2;
}



Al compilar me da error en "max = mayor(num1, num2);" que puede ser?



Saludos

maxim_o

// FUNCION
int mayor(int num){


if (num1 > num2){
        return num1;
else
        return num2;
}

El problema esta en la funcion, y el prototipo, tu en la funcion solo tienes un valor como parametro, cuando le estas pasando dos.....

Y luego dentro de la funcion no lo llamas como el parametro....

seria :

int mayor(int num1 , int num2){


if (num1 > num2){
        return num1;
else
        return num2;
}

leosansan

Cita de: sora_ori en 17 Febrero 2013, 12:52 PM
Estoy realizando un programa que calcula el máximo de tres números usando una función que nos de el máximo de dos números


Además de en los argumentos de la función, tienes varios errores menores que te comento en el código:

Código (cpp) [Seleccionar]
#include <stdio.h>
#include <stdlib.h>

int mayor(int n1,int n2);/*aqui tenias"{" en lugar de ;*/

int main(){
 int num1, num2, num3;
 int max; /*<==aqui esta de mas "mayor"*/
 printf("Introduce un numero: ");
 scanf("%d",&num1);
 printf("Introduce un numero: ");
 scanf("%d",&num2);
 printf("Introduce un numero: ");
 scanf("%d",&num3);
 max = mayor(num1, num2);
 printf("El mayor es: %d \n", mayor(max, num3));/*y aqui tenias dos %d */
 system("PAUSE");
 return 0;
}
// FUNCION
int mayor(int n1,int n2){
if (n1 > n2)
       return n1;
else
       return n2;
}


Aunque sería más guay calcular el máximo con una función que calcule el máximo de tres:

Código (cpp) [Seleccionar]


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

int mayor(int n1,int n2,int n3);

 int main(){

 int num1, num2, num3;
 int max;

 printf("Introduce un numero: ");
 scanf("%d",&num1);
 printf("Introduce un numero: ");
 scanf("%d",&num2);
 printf("Introduce un numero: ");
 scanf("%d",&num3);
 max = mayor(num1, num2,num3);
 printf("El mayor es: %d \n", max);
 system("pause");
 return 0;
}
// FUNCION
int mayor(int n1,int n2,int n3){
 if ((n1= n1>n2 ? n1:n2)>(n3))
   return n1;
 else
 return n3;
}


Saluditos!.

Stakewinner00


sora_ori

Muchas gracias por corregirme los errores de esa forma, lo he entendido mejor  ;-)



Saludos

BatchianoISpyxolo

Para un caso general (n datos) el problema se puede resolver con distintos algoritmos. Unos con unas ventajas y desventajas y otros con otras... Como ocurre siempre :P
Puede que desees aprender a programar desde 0: www.espascal.es