elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.
 
Inicio Ayuda Buscar Ingresar Registrarse
28 Mayo 2012, 23:27  


Tema destacado: Personaliza-Escoge el diseño del foro que más te guste.

+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse)
| | |-+  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 396 veces)
skatres

Desconectado Desconectado

Mensajes: 18


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

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: 195



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

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: 195



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

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
void simplificar_fraccion(struct Fraccion *f) {
int mcd = MCD((*f).num,(*f).dem);
(*f).num/=mcd;
(*f).dem/=mcd;
}
 
unsigned MCD(unsigned a, unsigned b) {
unsigned aux;
if (a < b) {
aux = b;
b = a;
a = aux;
}
while (a%b > 0) {
aux = b;
b = a%b;
a = aux;
}
return b;
}

Saludos

« Última modificación: 15 Enero 2012, 19:36 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 »

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: 195



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

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 »

¿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: 195



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

¿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 »

¿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: 195



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

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 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
Software
Red Mx 0 219 Último mensaje 2 Julio 2006, 22:31
por Red Mx
ayuda con registros
Programación Visual Basic
CARRY-ON 3 341 Último mensaje 12 Septiembre 2006, 00:33
por CARRY-ON
ayuda con registros
Programación Visual Basic
Dark_Knight 1 364 Último mensaje 25 Julio 2007, 18:01
por Tengu
Ayuda no compara los registros
Programación C/C++
nahuelveronesi 2 357 Último mensaje 30 Enero 2009, 21:08
por nahuelveronesi
[Registros] existe algún registro para Outlook en los registros de windows?
Windows
moikano→@ 5 1,904 Último mensaje 14 Febrero 2011, 14:56
por dantemc
Powered by SMF 1.1.16 | SMF © 2006-2008, Simple Machines