[C con Clase] Problema escribir en miembro de una estructura

César Arias sinatra435 en hotmail.com
Sab Mayo 18 04:46:51 CEST 2013




Hola nuevamente,
tengo un pequeño problema con un miembro de una estructura en un pequeño
programilla. El programa es el siguiente:



____________________________________________________________________


//aritmetica
basica: sumar, restar, multiplicar y divider numeros reacionales

#include"stdio.h"

typedef struct{

    short num;          //numerador

 short den;              //denominador

 }RACIONAL;





void reduc(RACIONAL &num);

void fsuma( RACIONAL &sum1, RACIONAL &sum2, RACIONAL &suma);



int main(){

    RACIONAL r1, r2, suma;

    printf("r1\nnumerador:
");  scanf("%d", &r1.num); 

    printf("denominador: ");
  scanf("%d", &r1.den);

    printf("\nr2\nnumerador: ");
 scanf("%d", &r2.num);

    printf("denominador: ");
  scanf("%d", &r2.den);

    

    

 printf("a: %d\nb: %d\nc: %d\nd: %d\n", r1.num, r1.den, r2.num,
r2.den);

    

    return 0;

 }



_______________________________________________________________



 



Me he dado cuenta de que al
tratar de escribir en r2.den se borra el contenido de r1.num; pues si eliminamos la lectura de r2.den ( o sea, la sentencia: scanf("%d", &r2.den) ), r1.num queda con su valor correspondiente.
 
He podido
solucionar el problema leyendo en una variable diferente, asi:



 
________________________________________________________________________________



//aritmetica
basica: sumar, restar, multiplicar y divider numeros reacionales

#include"stdio.h"

typedef struct{

    short num;

 short den;

 }RACIONAL;





void reduc(RACIONAL &num);

void fsuma( RACIONAL &sum1, RACIONAL &sum2, RACIONAL &suma);



int main(){

    RACIONAL r1, r2, suma;

    short a;

 printf("r1\nnumerador: ");  scanf("%d",
&a);  r1.num=a;

    printf("denominador: ");
  scanf("%d", &a);  r1.den=a;

    printf("\nr2\nnumerador: ");
 scanf("%d", &a);  r2.num=a;

    printf("denominador: ");
  scanf("%d", &a);  r2.den=a;

    

    

 printf("a: %d\nb: %d\nc: %d\nd: %d\n", r1.num, r1.den, r2.num,
r2.den);

    

    return 0;

 }



_______________________________________________________________________________
 
 Mi pregunta es:
¿Por qué sucede esto en C++?
 
Nota: utilizo dev C++.
 
 Nuevamente gracias por su tiempo.
 		 	   		  
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20130517/d805847d/attachment.html>


Más información sobre la lista de distribución Cconclase