<HTML><HEAD></HEAD>
<BODY dir=ltr>
<DIV dir=ltr>
<DIV style="FONT-SIZE: 12pt; FONT-FAMILY: 'Calibri'; COLOR: #000000">
<DIV>Hola que tal <IMG class="wlEmoticon wlEmoticon-smile"
style="BORDER-TOP-STYLE: none; BORDER-LEFT-STYLE: none; BORDER-BOTTOM-STYLE: none; BORDER-RIGHT-STYLE: none"
alt=Sonrisa src="cid:A3F4EAAD58B542E389E5C4256E94BED5@MasterPC"></DIV>
<DIV> </DIV>
<DIV>Steven, este es el código que he empleado ahora, y parece funcionar
correctamente por fin, que bien. ¿está bien hecho la definición de menor y el
include a cfloat?</DIV>
<DIV>También he observado que el programa parecía hacer cosas diferentes al
hacer if – else if que con if – if (que es ahora como lo he dejado), también he
notado que al poner primero el if a menor y luego el de mayor todo ha funcionado
a la perfección.</DIV>
<DIV> </DIV>
<DIV>Muchas gracias Steven por la luz sobre este tema, saludos a todos.</DIV>
<DIV> </DIV>
<DIV><FONT size=2 face="Courier New">#include
"std_lib_facilities.h"</FONT></DIV>
<DIV><FONT size=2 face="Courier New">#include <cfloat></FONT></DIV>
<DIV><FONT size=2 face="Courier New"></FONT> </DIV>
<DIV><FONT size=2 face="Courier New">int main()</FONT></DIV>
<DIV><FONT size=2 face="Courier New">{</FONT></DIV>
<DIV><FONT size=2 face="Courier New"> double uno, mayor,
menor, suma, metros;</FONT></DIV>
<DIV><FONT size=2 face="Courier New"> string que;</FONT></DIV>
<DIV><FONT size=2 face="Courier New"></FONT> </DIV>
<DIV><FONT size=2 face="Courier New"> int
cantidad;</FONT></DIV>
<DIV><FONT size=2 face="Courier New"></FONT> </DIV>
<DIV><FONT size=2 face="Courier New"> cantidad =
0;</FONT></DIV>
<DIV><FONT size=2 face="Courier New"> suma = 0;</FONT></DIV>
<DIV><FONT size=2 face="Courier New"> mayor = 0;</FONT></DIV>
<DIV><FONT size=2 face="Courier New"> menor =
DBL_MAX;</FONT></DIV>
<DIV><FONT size=2 face="Courier New"></FONT> </DIV>
<DIV><FONT size=2 face="Courier New">
while(cin>>uno>>que)</FONT></DIV>
<DIV><FONT size=2 face="Courier New">
</FONT></DIV>
<DIV><FONT size=2 face="Courier New"> if(que ==
"cm")</FONT></DIV>
<DIV><FONT size=2 face="Courier New"> {</FONT></DIV>
<DIV><FONT size=2 face="Courier New">
metros = uno / 100;</FONT></DIV>
<DIV><FONT size=2 face="Courier New">
que = "m";</FONT></DIV>
<DIV><FONT size=2 face="Courier New">
cout << metros << que << endl;</FONT></DIV>
<DIV><FONT size=2 face="Courier New">
cantidad++;</FONT></DIV>
<DIV><FONT size=2 face="Courier New">
suma += metros;</FONT></DIV>
<DIV><FONT size=2
face="Courier New">
</FONT></DIV>
<DIV><FONT size=2 face="Courier New">
if(uno < menor)</FONT></DIV>
<DIV><FONT size=2 face="Courier New">
{</FONT></DIV>
<DIV><FONT size=2
face="Courier New">
menor = uno;</FONT></DIV>
<DIV><FONT size=2 face="Courier New">
}</FONT></DIV>
<DIV><FONT size=2 face="Courier New">
if(uno > mayor)</FONT></DIV>
<DIV><FONT size=2 face="Courier New">
{</FONT></DIV>
<DIV><FONT size=2
face="Courier New">
mayor = uno;</FONT></DIV>
<DIV><FONT size=2 face="Courier New">
}</FONT></DIV>
<DIV><FONT size=2 face="Courier New"> }
</FONT></DIV>
<DIV><FONT size=2 face="Courier New"></FONT> </DIV>
<DIV><FONT size=2 face="Courier New"> else if(que !=
"cm")</FONT></DIV>
<DIV><FONT size=2 face="Courier New"> {</FONT></DIV>
<DIV><FONT size=2 face="Courier New">
cout << "no se reconoce medida" << endl;</FONT></DIV>
<DIV><FONT size=2 face="Courier New"> }</FONT></DIV>
<DIV><FONT size=2 face="Courier New"></FONT> </DIV>
<DIV><FONT size=2 face="Courier New">
cout << "Mayor: " << mayor << "m" << endl;</FONT></DIV>
<DIV><FONT size=2 face="Courier New">
cout << "Menor: " << menor << "m" << endl;</FONT></DIV>
<DIV><FONT size=2 face="Courier New">
cout << "Cantidad: " << cantidad << endl;</FONT></DIV>
<DIV><FONT size=2 face="Courier New">
cout << "Suma: " << suma << "m" << endl;</FONT></DIV>
<DIV><FONT size=2 face="Courier New"> </FONT></DIV>
<DIV><FONT size=2 face="Courier New">
keep_window_open();</FONT></DIV>
<DIV><FONT size=2 face="Courier New">
keep_window_open();</FONT></DIV>
<DIV><FONT size=2 face="Courier New"> return 0;</FONT></DIV>
<DIV><FONT size=2 face="Courier New">}</FONT></DIV>
<DIV><FONT size=2 face="Courier New"></FONT> </DIV>
<DIV>PD: Omar, no sabía que se podía hacer la comparación como tu la
haces.</DIV>
<DIV
style="FONT-SIZE: small; FONT-FAMILY: 'Calibri'; FONT-WEIGHT: normal; COLOR: #000000; FONT-STYLE: normal; TEXT-DECORATION: none; DISPLAY: inline">
<DIV style="FONT: 10pt tahoma">
<DIV><FONT size=3 face=Calibri></FONT> </DIV>
<DIV><FONT size=3 face=Calibri>Un saludo.</FONT></DIV>
<DIV><FONT size=3 face=Calibri></FONT> </DIV>
<DIV style="BACKGROUND: #f5f5f5">
<DIV style="font-color: black"><B>From:</B> <A title=omar.p9@gmail.com
href="mailto:omar.p9@gmail.com">omar mendoza</A> </DIV>
<DIV><B>Sent:</B> Saturday, January 12, 2013 2:48 PM</DIV>
<DIV><B>To:</B> <A title=cconclase@listas.conclase.net
href="mailto:cconclase@listas.conclase.net">Lista de correo sobre C y C++</A>
</DIV>
<DIV><B>Subject:</B> Re: [C con Clase]Número mayor y menor en bucle
While</DIV></DIV></DIV>
<DIV> </DIV></DIV>
<DIV
style="FONT-SIZE: small; FONT-FAMILY: 'Calibri'; FONT-WEIGHT: normal; COLOR: #000000; FONT-STYLE: normal; TEXT-DECORATION: none; DISPLAY: inline">Hola,
con respecto a la comparación de la string
<DIV> </DIV>
<DIV>Qué es mejor?</DIV>
<DIV> </DIV>
<DIV>if (que == "cm") </DIV>
<DIV> algo</DIV>
<DIV> </DIV>
<DIV>o</DIV>
<DIV> </DIV>
<DIV>if (que.compare("cm") == 0) </DIV>
<DIV> algo</DIV>
<DIV> </DIV>
<DIV>Yo uso la segunda, de hecho no sabía que se podía hacer de la manera que lo
hace Oscar</DIV>
<DIV>Saludos</DIV>
<DIV> </DIV>
<DIV> </DIV>
<DIV> </DIV>
<DIV>
<DIV> </DIV>
<DIV class=gmail_quote>El 11 de enero de 2013 20:12, Davidson, Steven <SPAN
dir=ltr><<A href="mailto:srd4121@njit.edu"
target=_blank>srd4121@njit.edu</A>></SPAN> escribió:<BR>
<BLOCKQUOTE class=gmail_quote
style="PADDING-LEFT: 1ex; MARGIN: 0px 0px 0px 0.8ex; BORDER-LEFT: #ccc 1px solid">
<DIV dir=ltr>Hola Óscar,
<DIV class=gmail_extra>
<DIV> </DIV>
<DIV class=gmail_quote>2013/1/11 Oscar Aparicio Holgado <SPAN dir=ltr><<A
href="mailto:enigma-si@hotmail.com"
target=_blank>enigma-si@hotmail.com</A>></SPAN><BR>
<BLOCKQUOTE class=gmail_quote
style="PADDING-LEFT: 1ex; MARGIN: 0px 0px 0px 0.8ex; BORDER-LEFT: rgb(204,204,204) 1px solid">
<DIV dir=ltr>
<DIV dir=ltr>
<DIV style="FONT-SIZE: 12pt; FONT-FAMILY: calibri">
<DIV>Hola que tal.</DIV>
<DIV></DIV></DIV></DIV></DIV></BLOCKQUOTE>
<DIV> </DIV>
<DIV> </DIV>
<DIV>Veamos el código fuente.</DIV>
<DIV class=im>
<DIV> </DIV>
<BLOCKQUOTE class=gmail_quote
style="PADDING-LEFT: 1ex; MARGIN: 0px 0px 0px 0.8ex; BORDER-LEFT: rgb(204,204,204) 1px solid">
<DIV dir=ltr>
<DIV dir=ltr>
<DIV style="FONT-SIZE: 12pt; FONT-FAMILY: calibri">
<DIV><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 'Courier New'">#include
"std_lib_facilities.h"</SPAN></DIV>
<DIV><FONT face="Courier New"></FONT> </DIV>
<DIV><FONT face="Courier New">int main()</FONT></DIV>
<DIV><FONT face="Courier New">{</FONT></DIV>
<DIV><FONT face="Courier New"> double uno, mayor, menor,
suma, metros;</FONT></DIV>
<DIV><FONT face="Courier New"> string que;</FONT></DIV>
<DIV><FONT face="Courier New"></FONT> </DIV>
<DIV><FONT face="Courier New"> int cantidad;</FONT></DIV>
<DIV><FONT face="Courier New"></FONT> </DIV>
<DIV><FONT face="Courier New"> cantidad = 0;</FONT></DIV>
<DIV><FONT face="Courier New"> suma = 0;</FONT></DIV>
<DIV><FONT face="Courier New"> mayor = 0;</FONT></DIV>
<DIV><FONT face="Courier New"> menor = 0;</FONT></DIV>
<DIV><FONT
face="Courier New"></FONT> </DIV></DIV></DIV></DIV></BLOCKQUOTE>
<DIV> </DIV></DIV>
<DIV>El valor inicial de 'menor' puede traer problemas para el funcionamiento
del algoritmo. Deberías elegir un valor inicial que obligue al algoritmo a
asignar un valor válido para 'menor' en la primera iteración. Podrías elegir
un número muy elevado, como por ejemplo,</DIV>
<DIV> </DIV>
<DIV>menor = DBL_MAX;</DIV>
<DIV> </DIV>
<DIV>esta constante se #define en <cfloat>.</DIV>
<DIV class=im>
<DIV> </DIV>
<BLOCKQUOTE class=gmail_quote
style="PADDING-LEFT: 1ex; MARGIN: 0px 0px 0px 0.8ex; BORDER-LEFT: rgb(204,204,204) 1px solid">
<DIV dir=ltr>
<DIV dir=ltr>
<DIV style="FONT-SIZE: 12pt; FONT-FAMILY: calibri">
<DIV><FONT face="Courier New">
while(cin>>uno>>que)</FONT></DIV>
<DIV><FONT face="Courier New">
</FONT></DIV>
<DIV><FONT face="Courier New"> if(que ==
"cm")</FONT></DIV>
<DIV><FONT face="Courier New"> {</FONT></DIV>
<DIV><FONT face="Courier New">
metros = uno / 100;</FONT></DIV>
<DIV><FONT face="Courier New"> que
= "m";</FONT></DIV>
<DIV><FONT face="Courier New">
cout << metros << que << endl;</FONT></DIV>
<DIV><FONT face="Courier New">
cantidad = cantidad + 1;</FONT></DIV>
<DIV><FONT face="Courier New">
suma = suma + metros;</FONT></DIV>
<DIV><FONT
face="Courier New">
</FONT></DIV></DIV></DIV></DIV></BLOCKQUOTE>
<DIV> </DIV></DIV>
<DIV>Deberías acostumbrarte a usar los operadores de incremento y de
incremento y asignación:<BR><BR>
<DIV>cantidad++;</DIV>
<DIV>suma += metros;</DIV></DIV>
<DIV class=im>
<DIV> </DIV>
<BLOCKQUOTE class=gmail_quote
style="PADDING-LEFT: 1ex; MARGIN: 0px 0px 0px 0.8ex; BORDER-LEFT: rgb(204,204,204) 1px solid">
<DIV dir=ltr>
<DIV dir=ltr>
<DIV style="FONT-SIZE: 12pt; FONT-FAMILY: calibri">
<DIV><FONT face="Courier New"></FONT></DIV>
<DIV><FONT face="Courier New">
//menor = uno</FONT></DIV>
<DIV><FONT face="Courier New"></FONT> </DIV>
<DIV><FONT face="Courier New">
if(uno > mayor)</FONT></DIV>
<DIV><FONT face="Courier New">
{</FONT></DIV>
<DIV><FONT
face="Courier New">
mayor = uno;</FONT></DIV>
<DIV><FONT face="Courier New">
}</FONT></DIV>
<DIV><FONT face="Courier New">
else if(uno >= 0 || uno <
menor)</FONT></DIV></DIV></DIV></DIV></BLOCKQUOTE>
<DIV> </DIV></DIV>
<DIV>Esto no va a funcionar como esperas. Básicamente, cada vez que un número
no sea el mayor, pero no sea negativo, se convierte en el menor. Esto no es
lógico. Por ejemplo,</DIV>
<DIV> </DIV>
<DIV>1, 5, 10, 9</DIV>
<DIV> </DIV>
<DIV>Al procesar 10, tendremos:<BR><BR>uno <-- 10</DIV>
<DIV>mayor <-- 10</DIV>
<DIV>menor <-- 0</DIV>
<DIV> </DIV>
<DIV>Cuando pasemos a recoger el valor de 9, obtendremos esto:<BR><BR></DIV>
<DIV>
<DIV>uno <-- 9</DIV>
<DIV>mayor <-- 10</DIV>
<DIV>menor <-- 9</DIV>
<DIV> </DIV>
<DIV>Obviamente, 9 no es el menor de todos los números de la lista.</DIV>
<DIV> </DIV>
<DIV> </DIV>
<DIV>Aparte de la solución dada previamente - usando 'DBL_MAX' - sugiero dar
valores iniciales a 'mayor' y a 'menor' que sean válidos. Esto significa que
estas variables deben guardar valores que pertenezcan a la lista introducida.
Para ello, realiza una primera lectura específica para dar valores iniciales a
'mayor' y a 'menor', al igual que para 'suma'. Esto es,</DIV>
<DIV> </DIV>
<DIV>// Caso particular: iteración #1</DIV>
<DIV>mayor = menor = suma = uno;</DIV>
<DIV> </DIV>
<DIV>
<DIV>// Caso general: iteración #2 al #n</DIV>
<DIV>while( ... )<BR>{<BR> ...</DIV>
<DIV>}</DIV></DIV>
<DIV> </DIV>
<DIV>De esta forma, no hay que dar valores iniciales que no sean válidos, y
además no malgastamos la primera iteración sumando 0 (cero) a 'suma'.</DIV>
<DIV> </DIV>
<DIV> </DIV>
<DIV>Espero que esto te ayude.</DIV><SPAN class=HOEnZb><FONT color=#888888>
<DIV> </DIV>
<DIV>Steven</DIV>
<DIV> </DIV></FONT></SPAN></DIV></DIV></DIV></DIV><BR>_______________________________________________<BR>Lista
de correo Cconclase <A
href="mailto:Cconclase@listas.conclase.net">Cconclase@listas.conclase.net</A><BR><A
href="http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net"
target=_blank>http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net</A><BR>Bajas:
<A href="http://listas.conclase.net/index.php?gid=2&mnu=FAQ"
target=_blank>http://listas.conclase.net/index.php?gid=2&mnu=FAQ</A><BR></BLOCKQUOTE></DIV><BR><BR
clear=all>
<DIV> </DIV>-- <BR>
<DIV>Omar Jonathan Mendoza Bernal</DIV>"Las cicatrices nos recuerdan que el
pasado fue real" Dr. Lecter en Dragón Rojo </DIV>
<P>
<HR>
_______________________________________________<BR>Lista de correo Cconclase
Cconclase@listas.conclase.net<BR>http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net<BR>Bajas:
http://listas.conclase.net/index.php?gid=2&mnu=FAQ</DIV></DIV></DIV></BODY></HTML>