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


 


Tema destacado: Únete al Grupo Steam elhacker.NET


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Duda C Struct y función.
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Duda C Struct y función.  (Leído 4,807 veces)
tvirus

Desconectado Desconectado

Mensajes: 8


Ver Perfil
Duda C Struct y función.
« en: 18 Octubre 2010, 20:02 »

Hola,

Tengo una duda sobre un programa que estoy haciendo en C. El problema es que tengo una struct:
Código:
typedef struct estructura{
        int numerador;
        int denominador;
}tipofraccion;


Y después tengo dos funciones:
Código:
void producto(fraccionario f,fraccionario g){
        f->numerador*=g->numerador;
        f->denominador*=g->denominador;
        Calculo (????);
}

Código:
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 Desconectado

Mensajes: 739


Desde Cádiz para el mundo


Ver Perfil WWW
Re: Duda C Struct y función.
« Respuesta #1 en: 18 Octubre 2010, 20:59 »

A ver, vayamos por partes.

La estructura de un tipo fracción es la siguiente:

Código:
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:

Código:
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)

Código:
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 por DanyKadiz » En línea

tvirus

Desconectado Desconectado

Mensajes: 8


Ver Perfil
Re: Duda C Struct y función.
« Respuesta #2 en: 18 Octubre 2010, 22:18 »

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:

Código:
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 por tvirus » En línea

Horricreu
Wiki

Desconectado Desconectado

Mensajes: 290

¡La verdad os hará libres!


Ver Perfil WWW
Re: Duda C Struct y función.
« Respuesta #3 en: 18 Octubre 2010, 22:39 »

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 por Horricreu » En línea

tvirus

Desconectado Desconectado

Mensajes: 8


Ver Perfil
Re: Duda C Struct y función.
« Respuesta #4 en: 18 Octubre 2010, 22:48 »

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 Desconectado

Mensajes: 739


Desde Cádiz para el mundo


Ver Perfil WWW
Re: Duda C Struct y función.
« Respuesta #5 en: 19 Octubre 2010, 15:02 »

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:
Código:
calculo(solucion->denominador, solucion->numerador);

o si lo quieres hacer más claro hazte antes de pasarlo:

Código:
int numerador = solucion->numerador;
int denominador = solucion->denominador;

y le pasas:

Código:
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 Desconectado

Mensajes: 8


Ver Perfil
Re: Duda C Struct y función.
« Respuesta #6 en: 19 Octubre 2010, 23:02 »

Código:
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:

Código:
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

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines