Foros del Web » Programación para mayores de 30 ;) » C/C++ »

usar la sentencia if

Estas en el tema de usar la sentencia if en el foro de C/C++ en Foros del Web. soy estudiante de mecanica pero esto de programación no me sale y necesito hacer un programa en el cual yo introduzca 4 numeros y me ...
  #1 (permalink)  
Antiguo 18/04/2010, 12:01
 
Fecha de Ingreso: abril-2010
Mensajes: 1
Antigüedad: 14 años
Puntos: 0
usar la sentencia if

soy estudiante de mecanica pero esto de programación no me sale y necesito hacer un programa en el cual yo introduzca 4 numeros y me diga cual es el mayor, cualquier ayuda ser{a muy agradecida
  #2 (permalink)  
Antiguo 18/04/2010, 13:04
 
Fecha de Ingreso: abril-2010
Mensajes: 10
Antigüedad: 14 años
Puntos: 0
Respuesta: usar la sentencia if

Buenas alejin1290....podrías hacer algo así


Código:
#include <stdio.h>

int main(int argc,char*argv[]){

	int num1,num2,num3,num4;
	
	printf("ingrese el primer numero:");
	scanf("%d",&num1);
	printf("\ningrese el segundo numero:");
	scanf("%d",&num2);
	printf("\ningrese el tercer numero:");
	scanf("%d",&num3);
	printf("\ningrese el cuarto numero:");
	scanf("%d",&num4);
	
	if(num1 == num2 && num1 == num3 && num1 == num4){
		printf("Son todos iguales");
		return 0;
		}
	if(num1>=num2 && num1>=num3 && num1>=num4){
		printf("el numero mas grande es:%d",num1);
		return 0;
	}
	if(num2>=num1 && num2>=num3 && num2>=num4){
		printf("el numero mas grande es:%d",num2);
		return 0;
	}
	if(num3>=num1 && num3>=num2 && num3>=num4){
		printf("el numero mas grande es:%d",num3);
		return 0;
	}if(num4>=num1 && num4>=num2 && num4>=num3){
		printf("el numero mas grande es:%d",num4);
		return 0;
	}
return 1;
}
espero que se entienda...saludos !
  #3 (permalink)  
Antiguo 18/04/2010, 13:53
 
Fecha de Ingreso: junio-2008
Ubicación: Seattle, USA
Mensajes: 733
Antigüedad: 15 años, 10 meses
Puntos: 61
Respuesta: usar la sentencia if

Parecen muchas comparaciones,

Si a, b, c y d son los nros,

Una alternativa es quedarse con el maximo entre a y b, luego comparar el maximo con c, cambiando el maximo de ser necesario y luego el maximo con d. Resultando en 3 comparaciones para obtener el maximo del conjunto.

Código C:
Ver original
  1. if( a > b )
  2.    maximo = a;
  3. else
  4.   maximo = b;
  5.  
  6. if( c > maximo )
  7.     maximo = c;
  8.  
  9. if( d > maximo )
  10.     maximo = d;
  11.  
  12. printf( "Maximo: %d", maximo );
  #4 (permalink)  
Antiguo 19/04/2010, 04:10
poi
 
Fecha de Ingreso: octubre-2008
Mensajes: 73
Antigüedad: 15 años, 6 meses
Puntos: 2
Respuesta: usar la sentencia if

Y aun se podria ahorrar una sentencia suponiendo que el maximo es el primero

Código C++:
Ver original
  1. maximo = a;
  2.       if( b > a )
  3.          maximo = b;
  4.  
  5.       if( c > maximo )
  6.           maximo = c;
  7.  
  8.       if( d > maximo )
  9.           maximo = d;
  10.  
  11.       printf( "Maximo: %d", maximo );
  #5 (permalink)  
Antiguo 19/04/2010, 04:25
 
Fecha de Ingreso: junio-2008
Ubicación: Seattle, USA
Mensajes: 733
Antigüedad: 15 años, 10 meses
Puntos: 61
Respuesta: usar la sentencia if

Siendo riguroso, el "ahorro" no es tal, puesto que cuando el computador va y ejecuta un programa, en el peor de los casos la version ahorrativa gasta mas recursos. Visto de otro punto de vista, si la asignacion "costara" $1, y las comparaciones "costaran" otro $1,

El trozo ahorrador:
Código C:
Ver original
  1. maximo = a;       // $1
  2. if( b > maximo )  // $1
  3.     maximo = b;   // $1
gasta, en el mejor de los casos $2, y en el peor, $3

mientras que
Código C:
Ver original
  1. if( a > b )       // $1
  2.     maximo = a;   // $1
  3. else
  4.     maximo = b;   // $1

gasta en el peor caso $2, y en el mejor $2 tambien.
  #6 (permalink)  
Antiguo 19/04/2010, 13:46
Avatar de sadalsuud  
Fecha de Ingreso: marzo-2010
Ubicación: en la casa del duende
Mensajes: 96
Antigüedad: 14 años, 1 mes
Puntos: 1
Respuesta: usar la sentencia if

@poi @CalgaryCorpus jajajaj me ha gustado la exposicion de sus ideas felicitaciones y bacano el aporte, el codigo para mi tiene un costo constante sean muchas comparaciones o menos creo que lo ya prima es la legibilidad del codigo mas que su costo.

un saludo
  #7 (permalink)  
Antiguo 19/04/2010, 14:07
poi
 
Fecha de Ingreso: octubre-2008
Mensajes: 73
Antigüedad: 15 años, 6 meses
Puntos: 2
Respuesta: usar la sentencia if

Sadalsuud tiene toda la razon, el coste temporal es constante en los 3 codigos. O(1)

saludos

Etiquetas: sentencia
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 17:16.