<div dir="ltr">Hola César,<div class="gmail_extra"><br><div class="gmail_quote">2013/5/17 César Arias <span dir="ltr"><<a href="mailto:sinatra435@hotmail.com" target="_blank">sinatra435@hotmail.com</a>></span><br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">



<div><div dir="ltr"><font face="Times New Roman">

</font><br><span style="font-family:Arial,sans-serif">Hola nuevamente,
tengo un pequeño problema con un miembro de una estructura en un pequeño
programilla. El programa es el siguiente:<u></u><u></u></span><br><font face="Times New Roman">

</font><br><span style="font-family:Arial,sans-serif"></span></div></div></blockquote><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
<div><div dir="ltr"><span style="font-family:Arial,sans-serif">____________________________________________________________________<u></u><u></u></span><br><font face="Times New Roman">

</font><span style="font-family:Arial,sans-serif">//aritmetica
basica: sumar, restar, multiplicar y divider numeros reacionales<br>
#include"stdio.h"<br></span></div></div></blockquote><div><br></div><div style>Deberías usar <> en lugar de las comillas, ya que se trata de un fichero estándar de cabecera. Por otro lado, estás usando C++, así debería ser <cstdio>. Por último, aconsejo usar <iostream> y los objetos 'cout' y 'cin', ya que son más cómodos de usar y más seguros, que es justo el caso que tienes.</div>
<div><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div><div dir="ltr"><span style="font-family:Arial,sans-serif">
typedef struct{<br>
    short num;          //numerador<br>
 short den;              //denominador<br>
 }RACIONAL;<u></u><u></u></span><br><font face="Times New Roman">

</font><br><span style="font-family:Arial,sans-serif"><br></span></div></div></blockquote><div><br></div><div style>Nuevamente, en C++, no es necesario usar 'typedef' para este caso. Basta con escribir el nombre de la estructura para usarla como tipo de dato; a diferencia que en C.</div>
<div><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div><div dir="ltr"><span style="font-family:Arial,sans-serif">
void reduc(RACIONAL &num);<br>
void fsuma( RACIONAL &sum1, RACIONAL &sum2, RACIONAL &suma);<u></u><u></u></span><br><font face="Times New Roman">

</font><br><span style="font-family:Arial,sans-serif">int main(){<br>
    RACIONAL r1, r2, suma;<br>
    printf("r1\nnumerador:
");  scanf("%d", &r1.num); <br>
    printf("denominador: ");
  scanf("%d", &r1.den);<br>
    printf("\nr2\nnumerador: ");
 scanf("%d", &r2.num);<br>
    printf("denominador: ");
  scanf("%d", &r2.den);<br>
    <br></span></div></div></blockquote><div><br></div><div style>El error que tienes se debe a que usas el especificador %d de 'scanf()' que es incorrecto para indicar que el tipo es de tipo 'short int'. Deberías usar %hd; por ejemplo,</div>
<div style><br></div><div style><span style="font-family:Arial,sans-serif">scanf( "%hd", &r1.num );</span><br></div><div><br></div><div style>De lo contrario, 'scanf()' interpretará la dirección de memoria que pasas como si se tratase de un 'int', que seguramente ocupará 4 bytes, en lugar de un 'short int', que seguramente ocupará 2 bytes. Por esta razón, 'scanf()' sobrescribía los datos de otra variable al rebasar la memoria cuando escribía en una variable.</div>
<div><br></div><div><br></div><div style>Como he mencionado anteriormente, sugiero usar 'cout <<' y 'cin >>'; esto sería,</div><div style><br></div><div style><span style="font-family:Arial,sans-serif;font-size:12.727272033691406px">cout << "r1\nnumerador: ";<br>
cin >> r1.num;</span><br style="font-family:Arial,sans-serif;font-size:12.727272033691406px"><span style="font-family:Arial,sans-serif;font-size:12.727272033691406px">cout << </span><span style="font-family:Arial,sans-serif;font-size:12.727272033691406px">"denominador: ";<br>
</span><span style="font-family:Arial,sans-serif;font-size:12.727272033691406px">cin >> </span><span style="font-family:Arial,sans-serif;font-size:12.727272033691406px">r1.den;</span><br style="font-family:Arial,sans-serif;font-size:12.727272033691406px">
</div><div style><span style="font-family:Arial,sans-serif;font-size:12.727272033691406px">...</span></div><div style><span style="font-family:Arial,sans-serif;font-size:12.727272033691406px"><br></span></div><div style><font face="Arial, sans-serif">'cin >>' ya toma en cuenta el tipo verdadero de la variable; no hay que andar indicando cuál es. Lo mismo sucede con 'cout <<'.</font></div>
<div style><font face="Arial, sans-serif"><br></font></div><div style><font face="Arial, sans-serif"><br></font></div><div style><font face="Arial, sans-serif">Espero que esto te ayude.</font></div><div><br></div><div style>
Steven</div><div style><br></div></div></div></div>