• Viernes 8 de Noviembre de 2024, 23:11

Autor Tema:  no identifico el error  (Leído 1901 veces)

meana

  • Miembro activo
  • **
  • Mensajes: 36
    • Ver Perfil
no identifico el error
« en: Sábado 17 de Enero de 2009, 11:16 »
0
este es un progama que tengo k hacer en las paracticas de la universidad, en el cual debo mostrar la suma de dos nuemeros racionales, llevo un tiempo mirandolo pero no localizo los errores  k me da el compilador. el codigo es este
Código: Text
  1.  
  2. #include <iostream>
  3.  
  4. using namespace std;
  5.  
  6. int main() {  
  7.     struct racional{
  8.            int numerador;
  9.            int denominador;
  10.     };
  11.     racional r1, r2, r3;
  12.     r1.numerador=3;
  13.     r1.denominador=4;
  14.     r2.numerador=1;
  15.     r2.denominador=2;
  16.     r3.numerador;
  17.     r3.denominador;
  18.     if (r1.denominador==r2.denominador){
  19.        r3.numerador=r1.numerador+r2.numerador;
  20.        r3.denominador=r1.denominador;
  21.     else if(r1.deniminador>r2.denominador){
  22.                r3.denominador=r1.denominador;
  23.                r3.numerador=r1.numerador+(r2.numerador*(r1.denominador/r2.denominador));      
  24.                else if(r2denominador>r1.denominador){
  25.                     r3.denominador=r2.denominador;
  26.                     r3.numerador=r2.numerador+(r1.numerador*(r2.denominador/r1.denominador));
  27.                }
  28.        }
  29.     }
  30.     cout << r1.numerador << "/" << r1.denominador << endl;                              
  31.     cout << r2.numerador << "/" << r2.denominador << endl;
  32.     cout << r3.numerador << "/" << r3.denominador << endl;
  33.     system("PAUSE");
  34.     return 0;
  35. }
  36.  
  37.  

el compilador me da los siguientes errores en la linea 51:
expected primary_expresion before "else".
expected ';' before "else". este si k no lo entiendo porque el punto y coma esta puesto...
seguero k sera una tonteria pero soy nuevo en esto y no le pille el trankillo jeje gracias

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: no identifico el error
« Respuesta #1 en: Sábado 17 de Enero de 2009, 13:28 »
0
Despues del { tenes que poner un } donde termine el bloque de codigo ... no al final.

Código: Text
  1. if (condicion)
  2. {
  3.   //codigo
  4. }
  5. else if (condicion)
  6. {
  7.   //codigo
  8. }
  9. else if (condicion)
  10. {
  11.   //codigo
  12. }
  13.  

Identa el codigo de esa manera para orientarte mejor, despues hay dos errores de tipeo que tenes que poder solucionar solo.

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.

meana

  • Miembro activo
  • **
  • Mensajes: 36
    • Ver Perfil
Re: no identifico el error
« Respuesta #2 en: Sábado 17 de Enero de 2009, 13:44 »
0
gracias, una vez k me compile el reste de los errores ya los soluccionare yo solo

DRiMeR

  • Nuevo Miembro
  • *
  • Mensajes: 22
    • Ver Perfil
    • http://www.informatizados.es
Re: no identifico el error
« Respuesta #3 en: Viernes 23 de Enero de 2009, 11:54 »
0
Acabo de ver una cosa curiosa en ese código. Y quizá sea que siempre he programado en C, y no en C++, pero... "racional", veo que es una estructura, no un tipo de dato.

A la hora de declarar "r1", "r2" y "r3", no tendría que ser con struct racional r1, r2, r3;  ?

O bien, declarar el tipo de dato con lo siguiente:

Código: Text
  1. typedef struct{
  2.      int numerador;
  3.      int denominador;
  4. } racional;
  5.  


Estoy en lo correcto, o eso cambia de C a C++??

m0skit0

  • Miembro de PLATA
  • *****
  • Mensajes: 2337
  • Nacionalidad: ma
    • Ver Perfil
    • http://fr33kk0mpu73r.blogspot.com/
Re: no identifico el error
« Respuesta #4 en: Viernes 23 de Enero de 2009, 12:20 »
0
Cita de: "DRiMeR"
A la hora de declarar "r1", "r2" y "r3", no tendría que ser con struct racional r1, r2, r3; ?
No, como está está bien. struct sólo debería aparecer en la declaración del tipo de datos estructurado.

Cita de: "DRiMeR"
O bien, declarar el tipo de dato con lo siguiente:

Mostrar/Ocultar Número de línea | Expandir/Contraer | Seleccionar todo

   1. typedef struct{
   2.      int numerador;
   3.      int denominador;
   4. } racional;
¿Qué pensáis de esto? Para mí ambas son correctas...

Cita de: "DRiMeR"
Estoy en lo correcto, o eso cambia de C a C++??
¿C++? Yo no veo clases por ningún lado en tus afirmaciones ^_^

DRiMeR

  • Nuevo Miembro
  • *
  • Mensajes: 22
    • Ver Perfil
    • http://www.informatizados.es
Re: no identifico el error
« Respuesta #5 en: Viernes 23 de Enero de 2009, 12:32 »
0
Hombre... es que siempre he tenido la estructura por un las, y luego el tipo de dato por otro. Por eso me ha extrañado que en el código declarase el "struct racional", y luego las variables las declarase como racional.

Te pongo un ejemplo de cómo lo hago yo, para que entiendas por qué he preguntado eso:

Código: Text
  1. struct animal_rep {
  2.   unsigned int n_patas;
  3.   unsigned int n_ojos;
  4.   char nombre[20];
  5. };
  6.  

Eso sería la estructura, la representación por así decirlo, y luego lo que hago es declarar mi tipo de dato, que va a tener esa estructura:

Código: Text
  1. typedef struct animal_rep Tanimal;
  2.  
  3.  

Y para declarar una bariable, sería de las dos formas siguientes:

Código: Text
  1. Tanimal a1;
  2. struct animal_rep a2;
  3.  

Como siempre lo he hecho así, pues me ha llamado la atención que en el código de meana, se saltase el struct.

m0skit0

  • Miembro de PLATA
  • *****
  • Mensajes: 2337
  • Nacionalidad: ma
    • Ver Perfil
    • http://fr33kk0mpu73r.blogspot.com/
Re: no identifico el error
« Respuesta #6 en: Viernes 23 de Enero de 2009, 13:28 »
0
Código: C
  1. struct animal_rep {
  2.    unsigned int n_patas;
  3.    unsigned int n_ojos;
  4.    char nombre[20];
  5.  };
  6.  
  7. typedef struct animal_rep Tanimal;
  8.  
Es redundante puesto que ya es declarado animal_rep como tipo de datos. Aquí lo único que haces es darle dos nombres a la misma estructura de datos, es como hacer:

Código: C
  1. typedef int numero_entero;
  2.  

Además el struct sólo se utiliza para declarar el tipo, no tiene sentido usarlo en la declaración de variables.

Salud.