meter en una funcion SOLUCIONADO

Temas sobre programación ( php, c, sql, html, perl, python, ruby, java, bash, etc ) y recursos ( herramientas, frameworks, hosting, cms, etc )

Moderadores: maiku, akodo

Responder
tomario
Forista Nuevo
Forista Nuevo
Mensajes: 13
Registrado: Mié Nov 10, 2010 11:44 pm

meter en una funcion SOLUCIONADO

Mensaje por tomario »

hola en clase me han dado este codigo y tengo que meterlo en una funcion, cualquier ayuda que me puedan o como debo empezar, llevo dos dias y no he conseguido nada, gracias

Código: Seleccionar todo

#include <stdio.h>	
#ifndef _LINKEDLIST_H_
#define _LINKEDLIST_H_
#ifndef _POLYGONSTRUCT_H_
#define _POLYGONSTRUCT_H_
#include <GL/gl.h>	
#define MAXVERTS 32	


typedef struct poly_struct {
    int type;			/* E.g., 0=SQUARE, 1=POLY, 2=RECT, ... */
    GLint numVerts;		/* # of vertices in polygon */
    GLdouble v[MAXVERTS][2];	/* Polygon's vertex array:       */
				/* v[i][0] = vertex i's x-coord; */
				/* v[i][1] = vertex i's y-coord  */
    GLdouble center[2];		/* Polygon's "center" point, for use in */
				/* rotating polygon                     */
    GLdouble rot_angle;		/* Rotation angle for polygon (degrees) */
    GLdouble rgb[3];		/* Polygon's color: 0.0=off, 1.0=max; */
				/* rgb[0]=red, [1]=green, [2]=blue    */
} Polygon;
#endif



typedef struct polygon_list_struct {
    Polygon p;
    struct polygon_list_struct *next,	/* Pointers to next, prev polygons */
                               *prev;	/* in the doubly-linked list */
} Polygon_list_node;


#endif

/*
 * Global pointers for the linked list:
 */
Polygon_list_node *head = NULL,	/* Pointer to the head of the list */
                  *curr = NULL,	/* Pointer to the currently selected node */
                  *tail = NULL;	/* Pointer to the tail of the list */

void InsertAfter(Polygon_list_node *item, Polygon_list_node *afterMe) {
   /*
    * Inserts *item after *afterMe in the linked list:
    */
    if (afterMe == NULL) {
        if (head == NULL && tail == NULL) {	/* empty list */
            head = tail = item;
            item->prev = item->next = NULL;
        }
        else
            fprintf(stderr,"InsertAfter: cannot insert after a NULL ptr\n");
        return;
    }
    item->prev = afterMe;
    if (afterMe == tail) {
        tail = item;
        item->next = NULL;
    }
    else {
        item->next = afterMe->next;
        item->next->prev = item;
    }
    afterMe->next = item;
}

void InsertBefore(Polygon_list_node *item, Polygon_list_node *beforeMe) {
   /*
    * Inserts *item before *beforeMe in the linked list:
    */
    if (beforeMe == NULL) {
        if (head == NULL && tail == NULL) {	/* empty list */
            head = tail = item;
            item->prev = item->next = NULL;
        }
        else
            fprintf(stderr,"InsertBefore: cannot insert before a NULL ptr\n");
        return;
    }
    item->next = beforeMe;
    if (beforeMe == head) {
        head = item;
        item->prev = NULL;
    }
    else {
        item->prev = beforeMe->prev;
        item->prev->next = item;
    }
    beforeMe->prev = item;
}

void RemoveItem(Polygon_list_node *item) {
   /*
    * Removes *item from the linked list (but doesn't free() it):
    */
    if (item == NULL)		/* Should print out an error message */
        return;
    if (item == head && item == tail) {	/* Only one element in the list */
        head = tail = NULL;
    }
    else if (item == head) {
        item->next->prev = NULL;
        head = item->next;
    }
    else if (item == tail) {
        item->prev->next = NULL;
        tail = item->prev;
    }
    else {
        item->prev->next = item->next;
        item->next->prev = item->prev;
    }
    item->prev = item->next = NULL;
}


Última edición por tomario el Vie Ene 07, 2011 12:12 am, editado 1 vez en total.

Avatar de Usuario
hipersayan_x
Forista Legendario
Forista Legendario
Mensajes: 1905
Registrado: Vie Abr 27, 2007 7:00 am
Contactar:

Re: meter en una funcion

Mensaje por hipersayan_x »

No entiendo, a que te referís con "meter el codigo a una funcion"?
Podes dar el enunciado del problema?
Desarrollo en Qt: Qt Developer Network
Mis proyectos: github | SourceForge.net

Avatar de Usuario
akodo
Moderador
Moderador
Mensajes: 1457
Registrado: Mié Nov 28, 2007 8:00 am
Ubicación: En la X del explorer (pulse para llamar)

Re: meter en una funcion

Mensaje por akodo »

Estoy como hipersayan_x. No veo dónde está el problema.
El código no es que esté mal tal y como está.
Descargue el gestor de mp3 "Music Manager" -> ([url=http://ctrlalt.iespana.es]mmlf[/url])
Última versión del gestor "Music Manager" -> ([url=http://sourceforge.net/projects/jmusicmanager/]jmmm[/url])

tomario
Forista Nuevo
Forista Nuevo
Mensajes: 13
Registrado: Mié Nov 10, 2010 11:44 pm

Re: meter en una funcion

Mensaje por tomario »

lo que necesito es hacer el main y en ese main llamar al resto de funciones.
si me pueden ayudar, es que no se como llamar a las funciones
gracias

Avatar de Usuario
hipersayan_x
Forista Legendario
Forista Legendario
Mensajes: 1905
Registrado: Vie Abr 27, 2007 7:00 am
Contactar:

Re: meter en una funcion

Mensaje por hipersayan_x »

Solo eso?, ok.

Código: Seleccionar todo

/* Aqui van los includes */

/* Aqui van los typedefs, structs, macros, etc. */

/* Primero declaras las funciones que vas a utilizar antes de main */
void InsertAfter(Polygon_list_node *item, Polygon_list_node *afterMe); /* Fijate que la declaracion lleva un ; al final */
void InsertBefore(Polygon_list_node *item, Polygon_list_node *beforeMe);
void RemoveItem(Polygon_list_node *item);

int main ( int argc, char **argv )
{
    /* Aqui haces lo que quieras con las funciones*/
    InsertAfter(/* parametros de la funcion */);
    InsertBefore(/* parametros de la funcion */);
    RemoveItem(/* parametros de la funcion */);

    return 0;
}

/* Y abajo de main se definen las funciones */
void InsertAfter(Polygon_list_node *item, Polygon_list_node *afterMe)
{
    /* Codigo de la funcion */
}

void InsertBefore(Polygon_list_node *item, Polygon_list_node *beforeMe)
{
    /* Codigo de la funcion */
}

void RemoveItem(Polygon_list_node *item)
{
    /* Codigo de la funcion */
}
Alguna duda?
Desarrollo en Qt: Qt Developer Network
Mis proyectos: github | SourceForge.net

tomario
Forista Nuevo
Forista Nuevo
Mensajes: 13
Registrado: Mié Nov 10, 2010 11:44 pm

Re: meter en una funcion

Mensaje por tomario »

muchas gracias!!!!si era esto lo que buscaba

¿¿una duda los parametros de las funciones pueden ser los mismos que ya tienen??

Avatar de Usuario
hipersayan_x
Forista Legendario
Forista Legendario
Mensajes: 1905
Registrado: Vie Abr 27, 2007 7:00 am
Contactar:

Re: meter en una funcion

Mensaje por hipersayan_x »

tomario escribió:muchas gracias!!!!si era esto lo que buscaba

¿¿una duda los parametros de las funciones pueden ser los mismos que ya tienen??
Si te referís a los nombres de las variables que le pasas, pueden ser los mismos o cualquier otro, no tiene importancia.
Siempre recordá que en c los tipos, el numero y el orden de datos deben ser idénticos a como definiste la función.
Desarrollo en Qt: Qt Developer Network
Mis proyectos: github | SourceForge.net

Avatar de Usuario
mcun
Administrador
Administrador
Mensajes: 3888
Registrado: Lun Abr 19, 2010 12:30 am
Ubicación: En una de las nalgas del culo del mundo (según la Bersuit Vergarabat)
Contactar:

Re: meter en una funcion

Mensaje por mcun »

tomario si consideras que el tema fue resuelto por favor edita el primer post y agrégale al título (SOLUCIONADO) para que la ayuda que recibiste le sea útil a a otros usuarios también, mediante el uso del buscador. Gracias.
Los programadores de verdad no documentan. La documentación es para los idiotas que no pueden leer un volcado de memoria.

Trusted Network and Developer | Lee el Reglamento !! |WIKI-EL | Twitter @mr_mcun
Debian + TTY | ArchLinux + awesome | openSUSE + Gnome-Shell | Linux User #508809

Avatar de Usuario
akodo
Moderador
Moderador
Mensajes: 1457
Registrado: Mié Nov 28, 2007 8:00 am
Ubicación: En la X del explorer (pulse para llamar)

Re: meter en una funcion

Mensaje por akodo »

tomario escribió:muchas gracias!!!!si era esto lo que buscaba

¿¿una duda los parametros de las funciones pueden ser los mismos que ya tienen??
Por poder se puede, pero no es que sea aconsejable. Hay que acostumbrarse (y lo digo por mí también) a poner nombres descriptivos a tu variables, sobretodo para evitar confusiones tanto en tu parte del código como en otros posibles sitios.
Además ten en cuenta que no siempre vas a trabajar con un único elemento de un tipo, con lo que si tienes que insertar dos elementos en esa lista lo lógico es que los llames "elemento1" y "elemento2" (seguro que no son los mejores nombres, pero no se me ocurren otros)

En la función InsertAfter (y en el resto), los nombres tan sólo facilitan una simple descripción de lo que se va a hacer. Así es fácil saber que después del elemento "afterMe" se insertará el elemento "item". No hace falta ni siquiera mirar el código de la función (siempre que la función haga lo que tenga que hacer).
En vez de "item" se podía haber llamado "a" y "b" en vez de "afterMe", pero en este caso resulta confuso qué elemento es que el vas a insertar.
Descargue el gestor de mp3 "Music Manager" -> ([url=http://ctrlalt.iespana.es]mmlf[/url])
Última versión del gestor "Music Manager" -> ([url=http://sourceforge.net/projects/jmusicmanager/]jmmm[/url])

Responder
  • Temas similares
    Respuestas
    Vistas
    Último mensaje