Autor
|
Tema: Duda C Struct y función. (Leído 6,286 veces)
|
tvirus
Desconectado
Mensajes: 8
|
Hola, Tengo una duda sobre un programa que estoy haciendo en C. El problema es que tengo una struct: typedef struct estructura{ int numerador; int denominador; }tipofraccion;
Y después tengo dos funciones: void producto(fraccionario f,fraccionario g){ f->numerador*=g->numerador; f->denominador*=g->denominador; Calculo (????); }
int Calculo (int a, int b) { if (a<b) return a; else return b; }
Y mi duda és como puedo pasar los parametros de la función producto a la función Calculo ? Gracias.
|
|
|
En línea
|
|
|
|
DanyKadiz
Desconectado
Mensajes: 739
Desde Cádiz para el mundo
|
A ver, vayamos por partes. La estructura de un tipo fracción es la siguiente: typedef struct estructura{ int numerador; int denominador; }tipofraccion; después imagino que para no tener que copiar todo el contenido y sólo pasarle la dirección de memoria de la fracción harias lo siguiente: typedef tipofraccion *fraccion; y por ultimo operarias con dicho tipo de datos, tienes dos opciones, tendrias que devolver una fraccion o pasarle otra para que esta sea su resultado, en mi caso voy a hacerlo así. (Se que tu lo has almacendo en la primera fracción pero el código es menos claro) void producto_fracciones(fraccion a, fraccion b, fraccion solucion) { solucion->numerador = f->numerador * g->numerador; solucion->denominador = f->denominador * g->denominador; } Ahora... ¿Que haría la función calculo ?
|
|
« Última modificación: 18 Octubre 2010, 21:02 pm por DanyKadiz »
|
En línea
|
|
|
|
tvirus
Desconectado
Mensajes: 8
|
No me expresado bien y edito. Ahora con este resultado tendriam una fraccion, por ejemplo: 2/4 en la estructura. Ahora queria pasarla a la función para conseguir 1/2 y hacer la funcion irreducible: int Calculo (int numerador, int denominador) { if (numerador < denominador) return Calculo (denominador, numerador); if (denominador == 0) return numerador; return Calculo (denominador, numerador%denominador); }
Gracias y perdon por las molestias.
|
|
« Última modificación: 18 Octubre 2010, 22:25 pm por tvirus »
|
En línea
|
|
|
|
Horricreu
Wiki
Desconectado
Mensajes: 290
¡La verdad os hará libres!
|
Vamos por partes, es todo una cuestión de pensar: - En una instrucción condicional, compruebas si el resto del numerador y denominador entre 2 es igual a 0. Si no es igual, lo pruebas con 3 y así sucesivamente hasta llegar al número máximo que quieras.
- Una vez tengas el número común para dividir AMBOS números y, como hemos dicho el resto sea 0, divides el numerador y el denominador por este número y lo guardas en dos variables.
- Luego si quieres, lo muestras por pantalla.
|
|
« Última modificación: 27 Noviembre 2010, 15:21 pm por Horricreu »
|
En línea
|
|
|
|
tvirus
Desconectado
Mensajes: 8
|
Pero yo lo que quiero es pasar el numerador y el denominador a la funcion calculo y despues que esta lo guarde en la estructura.
|
|
|
En línea
|
|
|
|
DanyKadiz
Desconectado
Mensajes: 739
Desde Cádiz para el mundo
|
Pero yo lo que quiero es pasar el numerador y el denominador a la funcion calculo y despues que esta lo guarde en la estructura.
Pues nada simplemente pasale los campos del registro: calculo(solucion->denominador, solucion->numerador); o si lo quieres hacer más claro hazte antes de pasarlo: int numerador = solucion->numerador; int denominador = solucion->denominador;
y le pasas: calculo(numerador,denominador) y después si lo quieres almacenar en sol pues más de lo mismo... vas trabajo con registros, recuerda que la fecha es porque es: *solucion.denominador, es decir *solucion.denominador es igual a: solucion->denominador, cuidado con eso Un cordial saludo.
|
|
|
En línea
|
|
|
|
tvirus
Desconectado
Mensajes: 8
|
int calculo(int a, int b) { if(a < b) return calculo(b,a); if(b == 0) return a; return calculo(b, a % b); }
Fraccio producto(Fraccio f, Fraccio z) { f->numerador*=z->numerador; f->denominador*=z->denominador; int x = f->numerador; int y = f->denominador; calculo (x,y); f->numerador = x; f->denominador = y; }
Bueno pues ya lo tengo. Pero a la hora de ejecutar el programa no me escribe nada... Y en el main tengo esto para ejecutarlo: Fraccio f6 = producto(f1, f3); //He creado anteriormente las fracciones. printf("\tfraccio(f6)= %d/%d\n", f6->numerador, f6->denominador); Y no muestra nada. Gracias.
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
como agrego una funcion en struct o como executo una funcion con CreateRemoteT?
Programación C/C++
|
Belial & Grimoire
|
3
|
3,353
|
28 Agosto 2011, 22:27 pm
por Eternal Idol
|
|
|
Funcion que no puede retornar un struct [C]
Programación C/C++
|
milx86
|
2
|
4,385
|
11 Octubre 2014, 03:39 am
por milx86
|
|
|
C: Una función que reciba un parámetro desde una struct e imprima.
Programación C/C++
|
ElChulon
|
6
|
2,721
|
16 Abril 2016, 14:04 pm
por HardForo
|
|
|
Duda con funcion que devuelve un struct
Programación C/C++
|
Naimaderis
|
1
|
2,765
|
15 Julio 2017, 21:43 pm
por engel lex
|
|
|
Ayuda con función y struct, socorro
Programación C/C++
|
laurinhabig0
|
1
|
2,088
|
10 Noviembre 2017, 12:39 pm
por Gallu
|
|