| 
	
		|  Autor | Tema: Duda C Struct y función.  (Leído 6,697 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,854 |  28 Agosto 2011, 22:27 pm por Eternal Idol
 |  
						|   |   | Funcion que no puede retornar un struct [C] Programación C/C++
 | milx86 | 2 | 4,792 |  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 | 3,323 |  16 Abril 2016, 14:04 pm por HardForo
 |  
						|   |   | Duda con funcion que devuelve un struct Programación C/C++
 | Naimaderis | 1 | 3,035 |  15 Julio 2017, 21:43 pm por engel lex
 |  
						|   |   | Ayuda con función y struct, socorro Programación C/C++
 | laurinhabig0 | 1 | 2,382 |  10 Noviembre 2017, 12:39 pm por Gallu
 |    |