elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Curso de javascript por TickTack


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Ayuda ejercicio de registros
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Ayuda ejercicio de registros  (Leído 3,483 veces)
skatres

Desconectado Desconectado

Mensajes: 18


Ver Perfil
Ayuda ejercicio de registros
« en: 15 Enero 2012, 19:03 pm »

Hola, pues resulta que estaba estudiando, y me puse a hacer un ejercicio de operaciones con fracciones, ya lo tengo casi terminado, pero al compilarlo, me salen estos errores y nose como solucionarlos ni a que son debidos:

Código:
11 \Desktop\Practicas Programacion\Ejermplo Tema 6- Fracciones.cpp too few arguments to function `Fraccion sumar_fracciones(Fraccion, Fraccion)'
20 \Desktop\Practicas Programacion\Ejermplo Tema 6- Fracciones.cpp at this point in file
20 \Desktop\Practicas Programacion\Ejermplo Tema 6- Fracciones.cpp At global scope:
 44 \Desktop\Practicas Programacion\Ejermplo Tema 6- Fracciones.cpp `struc' does not name a type

Y aqui esta el codigo fuente:

Código:
#include <stdio.h>
#include <stdlib.h>


struct Fraccion{
       unsigned num,dem;
};
       
void mostrar_fraccion(struct Fraccion f);
struct Fraccion leer_fraccion();
struct Fraccion sumar_fracciones(struct Fraccion f1,struct Fraccion f2);
struct Fraccion restar_fracciones(struct Fraccion f1,struct Fraccion f2);
void simplificar_fraccion(struct Fraccion &f);
unsigned MCD(unsigned a, unsigned b);

int main()
{   struct Fraccion f1;struct Fraccion f2;struct Fraccion f3;
    f1=leer_fraccion();
    f2=leer_fraccion();
    f3=sumar_fracciones(f3);
    simplificar_fraccion(f3);
    mostrar_fraccion(f3);
   
    system("pause");
    return 0;
}
   



struct Fraccion leer_fraccion()
{      struct Fraccion f;
       printf("Introduce el numeros:");
       scanf("%u",&f.num);
       printf("Introduce el denominador:");
       scanf("%u",&f.dem);
       return f;
}

void mostrar_fraccion(struct Fraccion f)
{    printf("%u %u",f.num,f.dem);
}

struc Fraccion sumar_fracciones(struct Fraccion f1,struct Fraccion f2)
{     struct Fraccion f3;
      f3.num=f1.num+f2.num;
      f3.dem=f1.dem+f2.dem;
      return f3;
}

struct Fraccion restar_fracciones(struct Fraccion f1,struct Fraccion f2)
{      struct Fraccion f3;
       f3.num=f1.num-f2.num;
       f3.dem=f1.dem-f2.dem;
       return f3;
}

void simplificar_fraccion(struct Fraccion &f)
{    f.num/=MCD(f.num,f.dem);
     f.dem/=MCD(f.num,f.dem);
}


En línea

Xandrete

Desconectado Desconectado

Mensajes: 210



Ver Perfil
Re: Ayuda ejercicio de registros
« Respuesta #1 en: 15 Enero 2012, 19:16 pm »

Ehmmm...

Mira los mensajes de error... Están para leerlos, no están en rapanui ni en ningún idioma exótico. No hay que desencriptarlos y normalmente tratan de informarte de cual es el error. No los han puesto ahí en plan "¡Ja, ja, ja, ja! ¡Tienes un error, jódete!"  ;D

1er error: sumar_fracciones requiere dos argumentos. En el main sólo le pasas uno.

2º error: en la cabecera de la operación sumar_fracciones has puesto struc en lugar de struct.

Venga, jefe.
Saludos.


En línea

Xandrete

Desconectado Desconectado

Mensajes: 210



Ver Perfil
Re: Ayuda ejercicio de registros
« Respuesta #2 en: 15 Enero 2012, 19:24 pm »

Y, por cierto, hay otros fallos (de los cuales se hubiera quejado el compilador tras solucionar los anteriores).

Uno de ellos es que tras definir el prototipo de la función MCD no la programas. A lo mejor es que se te pasó al copiarnos el código aquí.

Otro es que en C estricto no se pueden pasar parámetros por referencia como lo estás haciendo tú, con el & (en la función simplificar_fraccion). Para lograr lo mismo lo que se hace es pasar un puntero y luego, dentro de la función, desreferenciarlo.

Y otro fallo (de este no se hubiera quejado el compilador, porque no es un error de sintaxis) es que en la función para simplificar divides el numerador por el mcd del numerador y del denominador originales, pero luego divides el denominador por el mcd del numerador reducido y el denominador original. Hay que usar una variable:

Código
  1. void simplificar_fraccion(struct Fraccion *f) {
  2. int mcd = MCD((*f).num,(*f).dem);
  3. (*f).num/=mcd;
  4. (*f).dem/=mcd;
  5. }
  6.  
  7. unsigned MCD(unsigned a, unsigned b) {
  8. unsigned aux;
  9. if (a < b) {
  10. aux = b;
  11. b = a;
  12. a = aux;
  13. }
  14. while (a%b > 0) {
  15. aux = b;
  16. b = a%b;
  17. a = aux;
  18. }
  19. return b;
  20. }

Saludos

« Última modificación: 15 Enero 2012, 19:36 pm por Xandrete » En línea

skatres

Desconectado Desconectado

Mensajes: 18


Ver Perfil
Re: Ayuda ejercicio de registros
« Respuesta #3 en: 15 Enero 2012, 19:35 pm »

Hola compi, gracias por la ayuda, ya he solucionado los errores(que tonto yo al no darme cuenta que solo le estaba pasando un valor al main :rolleyes:).

La funcion MCD se me olvido programarla, en la funcion simplificar fracciones, segun mi profesor es asi como se hace, es decir, por referencia.


Un saludo!!
En línea

Xandrete

Desconectado Desconectado

Mensajes: 210



Ver Perfil
Re: Ayuda ejercicio de registros
« Respuesta #4 en: 15 Enero 2012, 19:40 pm »

Hola compi, gracias por la ayuda, ya he solucionado los errores(que tonto yo al no darme cuenta que solo le estaba pasando un valor al main :rolleyes:).

La funcion MCD se me olvido programarla, en la funcion simplificar fracciones, segun mi profesor es asi como se hace, es decir, por referencia.


Un saludo!!

¿Así cómo? ¿Con el &? Entonces, ¿qué estás haciendo? ¿C en C++?

Si es el profe quien te lo dice, no soy quien para desautorizarlo, pero te informo de que, como dije antes, en C estricto se hace pasando el puntero (y si el compilador no te da error al hacerlo con el & es porque es un compilador mixto de C/C++).

Saludos
En línea

skatres

Desconectado Desconectado

Mensajes: 18


Ver Perfil
Re: Ayuda ejercicio de registros
« Respuesta #5 en: 15 Enero 2012, 19:47 pm »

¿Así cómo? ¿Con el &? Entonces, ¿qué estás haciendo? ¿C en C++?

Si es el profe quien te lo dice, no soy quien para desautorizarlo, pero te informo de que, como dije antes, en C estricto se hace pasando el puntero (y si el compilador no te da error al hacerlo con el & es porque es un compilador mixto de C/C++).

Saludos

Pues la verdad, ahora estoy algo desconcertado de si estoy en C estricto o no, en la uni usamos el DEV C++, por lo que sera como una especie de mezcla entre C/C++, otra cosilla, con respecto a los punteros, nose si seran muy importantes o no, puesto que nuestro profre dijo de no verlos.
En línea

Xandrete

Desconectado Desconectado

Mensajes: 210



Ver Perfil
Re: Ayuda ejercicio de registros
« Respuesta #6 en: 15 Enero 2012, 20:19 pm »

¿Haces informática? ¿O haces telecomunicaciones, industriales u otra carrera técnica? En el primer caso, no me parece correcto ese esquema. En los demás, tampoco, pero es menos grave.
En línea

skatres

Desconectado Desconectado

Mensajes: 18


Ver Perfil
Re: Ayuda ejercicio de registros
« Respuesta #7 en: 15 Enero 2012, 23:23 pm »

¿Haces informática? ¿O haces telecomunicaciones, industriales u otra carrera técnica? En el primer caso, no me parece correcto ese esquema. En los demás, tampoco, pero es menos grave.

Pues yo estoy en industriales
En línea

Xandrete

Desconectado Desconectado

Mensajes: 210



Ver Perfil
Re: Ayuda ejercicio de registros
« Respuesta #8 en: 16 Enero 2012, 00:50 am »

Ya veo.

En cualquier caso, aquí lo explican. Está en la lengua de Shakespeare, espero que no tengas problemas para entenderlo.

Por cierto, si utilizas Dev-Cpp, deberías bajar la última versión de MinGW y sustituir la que viene con el programa (creo que está en C:\Program Files\Dev-Cpp\bin). Dev-Cpp es un proyecto abandonado y lleva muchos años sin recibir actualizaciones, así que como mínimo deberías actualizar el compilador.

EDITO: He leído que un desarrollador independiente sacó en 2012 una nueva versión de Dev-Cpp. Mira a ver si la que tienes es del 2011 y si no, mira a ver si puedes encontrar esta última versión.
« Última modificación: 19 Enero 2012, 14:57 pm por Xandrete » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
ayuda con registros
Programación Visual Basic
CARRY-ON 3 1,245 Último mensaje 12 Septiembre 2006, 00:33 am
por CARRY-ON
ayuda con registros
Programación Visual Basic
Dark_Knight 1 1,129 Último mensaje 25 Julio 2007, 18:01 pm
por Tengu
[Ejercicio] Aca tienen un ejercicio para practicar « 1 2 3 »
Programación Visual Basic
Dreamaker 20 15,774 Último mensaje 5 Septiembre 2010, 02:57 am
por TGa.
[Registros] existe algún registro para Outlook en los registros de windows?
Windows
moikano→@ 5 6,870 Último mensaje 14 Febrero 2011, 14:56 pm
por dantemc
Errores con un ejercicio de registros en el que tengo que crear una agenda. C++
Programación C/C++
seryioo 4 1,778 Último mensaje 8 Septiembre 2015, 19:53 pm
por ivancea96
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines