| 
	
		|  Autor | Tema: Dos datos mayores [C]  (Leído 5,460 veces) |  
	| 
			| 
					
						| barnix456 
								
								 Desconectado 
								Mensajes: 128
								
								 
								El soft es como el sexo, cuando es Libre es mejor
								
								
								
								
								
								   | 
 
Holaaa tengo un problema, estoy haciendo un ejersicio que vi en un libro, pedir x datos y mostrar cuales son los dos datos mas grandes, me ha confundido un poco, para saber el dato mas grande no tengo problema pero para saber el segundo si, me esta quedando algo asi:  #include <stdio.h>#define sise 5 Int main (){    Int cont=1, b=0, a, x=0;   While (cont<=sise) {   Printf("introduzca el numero %d: ",cont);   Scanf("%d",&a);   If (a>b)      b=a;   If (x<=b) {       If (b>=a){           x=a;           If (x==b)              x=0;        }    }   cont++;   }    printf("El numero mas grandes es %d y el segundo es %d",b, x);   return 0;} 
 Gracias de antemano  Disculpen si se ve algo diferente estoy desde mi movil 
 
 |  
						| 
								|  |  
								|  |  En línea | 
 
 "No temo a los ordenadores; lo que temo es quedarme sin ellos"
 Isaac Asimov
 |  |  |  | 
			| 
					
						| naderST | 
 
Al hacer if (a>b)      b=a; 
 Estás perdiendo el valor que tenías en b, este valor lo necesitas porque pudiera ser tu segundo mayor. Fíjate haciendo la corrida al frío con 10, 20, 30 en ese orden. Una solución a tu problema sería que cuando un valor sea mayor al mayor, antes de asignar el nuevo mayor asignas el viejo como segundo mayor y en el caso de que el valor no sea mayor al mayor verificas si es mayor al segundo mayor y lo asignas.
 
 |  
						| 
								|  |  
								| « Última modificación: 13 Diciembre 2012, 18:42 pm por naderST » |  En línea | 
 
 |  |  |  | 
			| 
					
						| barnix456 
								
								 Desconectado 
								Mensajes: 128
								
								 
								El soft es como el sexo, cuando es Libre es mejor
								
								
								
								
								
								   | 
 
Si de echo hice unos cambios pero aun no me da, estoy haciendo algo asi: If (a>b)     b=a;If (x<=b && b>=a) {   If (a>=x || a<=x) {      If (a==b)          x=0;      If (a!=b)         If (a>x)             x=a;       }   }If (x==b)   x=0; 
 |  
						| 
								|  |  
								|  |  En línea | 
 
 "No temo a los ordenadores; lo que temo es quedarme sin ellos"
 Isaac Asimov
 |  |  |  | 
			| 
					
						| barnix456 
								
								 Desconectado 
								Mensajes: 128
								
								 
								El soft es como el sexo, cuando es Libre es mejor
								
								
								
								
								
								   | 
 
Aun que siento que el (a>b) = b=a esta bien por que siguiendo tu ejemplo de 10,20,30 mira: 
 b es inicializada en 0 entonces
 
 10>0 si b=10 primera vuelta
 20>10 si b=20 segunda vuelta
 30>20 si b= 30 tercera vuelta
 25>30 no b=30 cuarta vuelta
 18>30 no b=30 quinta vuelta
 
 Por eso digo que esta bien
 
 Gracias
 |  
						| 
								|  |  
								|  |  En línea | 
 
 "No temo a los ordenadores; lo que temo es quedarme sin ellos"
 Isaac Asimov
 |  |  |  | 
			| 
					
						| leosansan 
								       
								
								 Desconectado 
								Mensajes: 1.314
								
								
								
								
								
								   | 
 
Saluditos!.#include <stdio.h>#define sise 5 int main (){   int cont=1, cuasi_max=0, a, max=0;   while (cont<=sise) {   printf("introduzca el numero %d: ",cont);   scanf("%d",&a);   if (a>max) {        cuasi_max=max;        max=a;    }   else if (a>=cuasi_max)        (cuasi_max=a);   cont++;   }   printf("El numero mas grandes es %d y el segundo es %d",max,cuasi_max);   getchar();   return 0;}
 |  
						| 
								|  |  
								| « Última modificación: 13 Diciembre 2012, 21:43 pm por leosansan » |  En línea | 
 
 |  |  |  | 
			| 
					
						| barnix456 
								
								 Desconectado 
								Mensajes: 128
								
								 
								El soft es como el sexo, cuando es Libre es mejor
								
								
								
								
								
								   | 
 
Holaa amigo, disculpa si es que estoy teniendo una mala visualizacion en mi movil, pero "max" es una funcion definidad en una libreria o es una variable, aunque entiendo que es una funcion de libreria, por que mi IDE asi lo reconoce, la verdad no le entiendo mucho, a la hora de imprimir, no dices que variable es la que se debe imprimir y creo que tu ejemplo es para saber solo el mas grande, yo quiero saber los dos mas grandes, repito no se si es que estoy teniendo una mala visualizacion, igual cuando tenga mi pc de escritorio lo checare pero gracias por la respuesta |  
						| 
								|  |  
								|  |  En línea | 
 
 "No temo a los ordenadores; lo que temo es quedarme sin ellos"
 Isaac Asimov
 |  |  |  | 
			| 
					
						| durasno 
								 
								
								 Desconectado 
								Mensajes: 373
								
								
								
								
								
								   | 
 
max es una variable, mejor espera a usar la pc    Saludos |  
						| 
								|  |  
								|  |  En línea | 
 
 Ahorrate una pregunta, lee el man |  |  |  | 
			| 
					
						| leosansan 
								       
								
								 Desconectado 
								Mensajes: 1.314
								
								
								
								
								
								   | 
 
Holaa amigo, disculpa si es que estoy teniendo una mala visualizacion en mi movil, pero "max" es una funcion definidad en una libreria o es una variable, ....
 Es una variable, podía haberle llamado "mayor" y "cuasi_max" es el segundo mayor ...... y funciona , da los dos valores¡ ¡  ¡Saluditos!.Fíjate que está reeditado.
 |  
						| 
								|  |  
								| « Última modificación: 13 Diciembre 2012, 21:45 pm por leosansan » |  En línea | 
 
 |  |  |  | 
			| 
					
						| barnix456 
								
								 Desconectado 
								Mensajes: 128
								
								 
								El soft es como el sexo, cuando es Libre es mejor
								
								
								
								
								
								   | 
 
Gracias si que ha funcionado, y lo has echo de una manera tan facil. Nunca habia pensado en esa logica, tendre que trabajar en eso... Gracias de nuevo  |  
						| 
								|  |  
								|  |  En línea | 
 
 "No temo a los ordenadores; lo que temo es quedarme sin ellos"
 Isaac Asimov
 |  |  |  | 
			| 
					
						| rir3760 
								       
								
								 Desconectado 
								Mensajes: 1.639
								
								
								
								
								
								   | 
 
"max" es una funcion definidad en una libreria o es una variable, aunque entiendo que es una funcion de libreria, por que mi IDE asi lo reconoce Si eso pasa debes verificar el lenguaje de programación y las opciones de tu IDE, esto porque: A) En lenguaje C no hay problema en utilizar "max" como el nombre de una variable, mejor ejemplo el programa de leosansan . B) En C++ si incluyes el encabezado <algorithm> tienes acceso a la funcion std::max . Un saludo |  
						| 
								|  |  
								|  |  En línea | 
 
 C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.--
 Kernighan & Ritchie, The C programming language
 |  |  |  |  |  
 
	
 
 
				
					
						| Mensajes similares |  
						|  | Asunto | Iniciado por | Respuestas | Vistas | Último mensaje |  
						|   |   | Solo mayores de Edad... Juegos y Consolas
 | JarquinSoft | 7 | 4,202 |  6 Junio 2007, 17:09 pm por Vagueza
 |  
						|   |   | Cyclosa, el grupo detrás de los mayores robos de datos en 2013 Noticias
 | wolfbcn | 0 | 1,601 |  1 Abril 2014, 13:41 pm por wolfbcn
 |  
						|   |   | [C] Llenar archivo Binario, y borrar datos mayores al promedio Programación C/C++
 | ramaa000 | 3 | 5,260 |  5 Marzo 2015, 02:57 am por rir3760
 |  
						|   |   | 'Hackean' los datos de 34.000 clientes de uno de los mayores laboratorios .... Noticias
 | wolfbcn | 0 | 2,122 |  13 Diciembre 2016, 02:19 am por wolfbcn
 |  
						|   |   | Microsoft elimina de Internet una de las mayores bases de datos públicas de ... Noticias
 | wolfbcn | 0 | 1,504 |  6 Junio 2019, 21:47 pm por wolfbcn
 |    |