<div dir="ltr">Hola Sebastián,<div><br></div><div>Tienes la idea correcta, pero no su implementación. Escribes,</div><div><br></div><div>cin >> peaje;<br></div><div><br></div><div>Ten presente que 'cin >>' se comporta de diferente manera según el tipo del operando derecho. En este caso, 'cin >>' interpreta 'peaje' como una cadena de caracteres y no meramente como un array de caracteres. Esto implica que se agregará un carácter nulo al final de los caracteres introducidos. Por ejemplo, si escribes: 's', el resultado en 'peaje' es "s\0".</div><div><br></div><div>Luego, compruebas el resultado de 'peaje' en la sentencia 'if':<br><br><span style="font-size:12.8px">if (peaje[0])</span><br></div><div><span style="font-size:12.8px"><br></span></div><div><span style="font-size:12.8px">Esto comprueba si el valor guardado en el primer elemento - 's' en nuestro ejemplo - es el código ASCII 0 (cero), y por tanto falso, o distinto de cero, y por tanto verdadero. En otras palabras, la sentencia anterior es equivalente a:</span><br><br><span style="font-size:12.8px">if (peaje[0] != 0)</span><br></div><div><br></div><div>Como los caracteres imprimibles, como 's' y 'n', se representan con códigos ASCII a partir del 32, esta condición siempre será verdadera. Lo mismo sucede con la siguiente condición, 'peaje[1]', pero esta vez sí guardar el carácter nulo y por tanto el código ASCII es 0, resultando siempre en una falsedad.</div><div><br></div><div>Sin embargo, esto no es el comportamiento deseado. Si quieres conservar los valores originales en 'peaje', entonces sugiero crear otra variable para guardar la decisión del usuario. Por ejemplo,</div><div><br></div><div>char cPeajeUsuario;</div><div><br></div><div>cin >> cPagoPeaje;</div><div><br></div><div>if( peaje[0] == cPagoPeaje )</div><div>{<br>  ...<br>}<br>else<br>{<br>  ...<br>}</div><div><br></div><div>Claro está, siempre puedes comprobar el carácter directamente; esto es,</div><div><br></div><div><div>if( 's' == cPagoPeaje )</div></div><div><br></div><div>Por último, sugiero no usar variables globales, como 'K', 'L', etc.; en su lugar, defínelas localmente en 'main()'.<br></div><div><br></div><div><br></div><div>Espero que esto te oriente,</div><div><br></div><div>Steven</div><div><br></div><div><div class="gmail_extra"><br><div class="gmail_quote">2017-05-20 14:46 GMT-04:00 Sebastian Toledano <span dir="ltr"><<a href="mailto:toledanosebastian@gmail.com" target="_blank">toledanosebastian@gmail.com</a>></span>:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr">Buenas tardes gente, mi problema es el siguiente: necesito que if tome una determinada decisión basándose en uno de dos valores de un array que yo ingrese por teclado.<div><br></div><div>El ejercicio no me lo exije ya que se debe resolver con lo aprendido. El uso del array solo es para satisfacer mi curiosidad.</div><div><br></div><div>Codigo C++:</div><div><br></div><div><div>/*</div><div>Este programa toma valores de entrada y devuelve</div><div>el costo diario que implica el uso de un automovil.</div><div>*/</div><div>#include <iostream></div><div>#include <conio.h></div><div><br></div><div>using namespace std;</div><div>    float K=0;//Kilometros conducidos</div><div>    float C=0;//Precio/litro de combustible.</div><div>    float E=0;//Valor de estacionamiento.</div><div>    float Vp=0;//Valor del peaje.</div><div>    float Co_d=0;//Consumo  diario.</div><div>    float Co_s=0;//Consumo semanal.</div><div>    float Co_m=0;//Consumo mesual.</div><div>    float Co_3m=0;//Consumo c/90 dias.</div><div>    int Nv=0;//Cantidad de veces que se pago.</div><div><br></div><div>int main()</div><div>{</div><div>    char peaje[]={'s','n'};</div><div>    char s;</div><div>    char n;</div><div><br></div><div>    cout << "Kms conducidos/dia: ";</div><div>    cin >> K;</div><div>    cout << "Valor de combustible/Litro: ";</div><div>    cin >> C;</div><div>    cout << "Estacionamiento/dia: ";</div><div>    cin >> E;</div><div>    cout << "Pago peaje? ";</div><div>    cin >> peaje;</div><div><br></div><div>    if (peaje[0])</div><div>    {</div><div>        cout << "Cuanto pago? ";</div><div>        cin >> Vp;</div><div>        cout << "Cuantas veces? ";</div><div>        cin >> Nv;</div><div>        Co_d = ((K+C+E)+Vp*Nv);</div><div>    }</div><div>    else</div><div>        if(peaje[1])</div><div>         {</div><div>            Co_d = K+C+E;</div><div>         }</div><div>    </div><div>    if (Vp >= 1)</div><div>        Co_s = 6*(K+C+E+Vp);</div><div>    else</div><div>        Co_s = 6*(K+C+E);</div><div><br></div><div>    if (Vp >= 1)</div><div>        Co_m = 26*(K+C+E+Vp);</div><div>    else</div><div>        Co_m = 26*(K+C+E);</div><div><br></div><div>    if (Vp >= 1)</div><div>        Co_3m = 90*(K+C+E+Vp);</div><div>    else</div><div>        Co_3m = 90*(K+C+E);</div><div><br></div><div>    cout << "\nC/dia\t\t$" << Co_d << endl;</div><div>    cout << "C/semana\t$" << Co_s << endl;</div><div>    cout << "C/mes\t\t$" << Co_m << endl;</div><div>    cout << "C/90 dias\t$" << Co_3m << endl;</div><div><br></div><div>    return 0;</div><div>}</div></div><div><br></div><div>Mi problema consiste en que si ingreso el valor n cuando me pregunta si pague peaje, inmediatamente me pregunta cuanto y cuantas veces lo que significa que va a sumar al valor general. Podría ingresar 0 en ambos casos pero no es la idea.</div><div>Ignoren todo a partir de Co_s, pienso hacer que el programa de la posibilidad de elegir si computo diario, semanal, mensual, etc. Pero primero necesito comprender donde estoy fallando con el array.<br></div><div>Los valores 0 y 1 en if, corresponderían a las posiciones en el array de los caracteres s y n. No estoy seguro de que mi razonamiento sea correcto.</div><div><br></div><div>Les pido disculpas si molesto con un problema que puede ser nimio para otros. Muchas gracias comunidad.</div><div><br></div></div></blockquote><div><br></div></div></div></div></div>