Autor
|
Tema: Ayuda ejercicio de registros (Leído 3,826 veces)
|
skatres
Desconectado
Mensajes: 18
|
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: 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: #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
Mensajes: 210
|
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!" 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
Mensajes: 210
|
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: 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 pm por Xandrete »
|
En línea
|
|
|
|
skatres
Desconectado
Mensajes: 18
|
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 ). 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
Mensajes: 210
|
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 ). 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
Mensajes: 18
|
¿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
Mensajes: 210
|
¿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
Mensajes: 18
|
¿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
Mensajes: 210
|
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
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
ayuda con registros
Programación Visual Basic
|
CARRY-ON
|
3
|
1,353
|
12 Septiembre 2006, 00:33 am
por CARRY-ON
|
|
|
ayuda con registros
Programación Visual Basic
|
Dark_Knight
|
1
|
1,238
|
25 Julio 2007, 18:01 pm
por Tengu
|
|
|
[Ejercicio] Aca tienen un ejercicio para practicar
« 1 2 3 »
Programación Visual Basic
|
Dreamaker
|
20
|
16,648
|
5 Septiembre 2010, 02:57 am
por TGa.
|
|
|
[Registros] existe algún registro para Outlook en los registros de windows?
Windows
|
moikano→@
|
5
|
7,509
|
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
|
2,027
|
8 Septiembre 2015, 19:53 pm
por ivancea96
|
|