Reglamento general de los foros   •   FAQ   •   Buscar en el foro •  Registrarse | Iniciar sesión 



Foros Linux » Desarrollo » Programación


Nuevo tema Responder al tema
 [ 9 mensajes ] 
Patrocinadores

Autor
Buscar:
Mensaje

Desconectado
Forista Nuevo
Forista Nuevo

Registrado: Mié Nov 10, 2010 3:44 pm
Mensajes: 13

Nota Publicado: Vie Dic 31, 2010 4:49 am 
Arriba  
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:
#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 Jue Ene 06, 2011 4:12 pm, editado 1 vez en total
 Perfil Email  

Desconectado
Forista Distinguido
Forista Distinguido
Avatar de Usuario

Registrado: Jue Abr 26, 2007 11:00 pm
Mensajes: 1426

Nota Publicado: Vie Dic 31, 2010 9:11 am 
Arriba  
No entiendo, a que te referís con "meter el codigo a una funcion"?
Podes dar el enunciado del problema?

_________________
"Neque porro quisquam est qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit."

"Finibus Bonorum Et Malorum", Cicerón

 Perfil WWW  

Desconectado
Moderador
Moderador
Avatar de Usuario

Registrado: Mié Nov 28, 2007 12:00 am
Mensajes: 1361
Ubicación: En la X del explorer (pulse para llamar)

Nota Publicado: Vie Dic 31, 2010 5:51 pm 
Arriba  
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" -> (mmlf)
Última versión del gestor "Music Manager" -> (jmmm)

 Perfil  

Desconectado
Forista Nuevo
Forista Nuevo

Registrado: Mié Nov 10, 2010 3:44 pm
Mensajes: 13

Nota Publicado: Mar Ene 04, 2011 10:09 am 
Arriba  
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

 Perfil Email  

Desconectado
Forista Distinguido
Forista Distinguido
Avatar de Usuario

Registrado: Jue Abr 26, 2007 11:00 pm
Mensajes: 1426

Nota Publicado: Mar Ene 04, 2011 10:56 am 
Arriba  
Solo eso?, ok.

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

_________________
"Neque porro quisquam est qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit."

"Finibus Bonorum Et Malorum", Cicerón

 Perfil WWW  

Desconectado
Forista Nuevo
Forista Nuevo

Registrado: Mié Nov 10, 2010 3:44 pm
Mensajes: 13

Nota Publicado: Mié Ene 05, 2011 11:34 am 
Arriba  
muchas gracias!!!!si era esto lo que buscaba

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

 Perfil Email  

Desconectado
Forista Distinguido
Forista Distinguido
Avatar de Usuario

Registrado: Jue Abr 26, 2007 11:00 pm
Mensajes: 1426

Nota Publicado: Mié Ene 05, 2011 2:31 pm 
Arriba  
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.

_________________
"Neque porro quisquam est qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit."

"Finibus Bonorum Et Malorum", Cicerón

 Perfil WWW  

Desconectado
Moderador
Moderador
Avatar de Usuario

Registrado: Dom Abr 18, 2010 4:30 pm
Mensajes: 2790
Ubicación: En una de las nalgas del culo del mundo (según la Bersuit Vergarabat)

Nota Publicado: Jue Ene 06, 2011 8:29 am 
Arriba  
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.

_________________
... reinstalar un SO cuando produce un error es como tirar un bebe a la basura cuando se hace caca..

Trusted Network and Developer | Reglamento General de los Foros |WIKI-EL | Twitter @SISIAM
Debian| ArchLinux |Linux User #508809

 Perfil WWW  

Desconectado
Moderador
Moderador
Avatar de Usuario

Registrado: Mié Nov 28, 2007 12:00 am
Mensajes: 1361
Ubicación: En la X del explorer (pulse para llamar)

Nota Publicado: Jue Ene 06, 2011 9:51 am 
Arriba  
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" -> (mmlf)
Última versión del gestor "Music Manager" -> (jmmm)

 Perfil  
Mostrar mensajes previos:  Ordenar por  
 [ 9 mensajes ] 
Nuevo tema Responder al tema

Saltar a:  


¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 5 invitados

No puede abrir nuevos temas en este Foro
No puede responder a temas en este Foro
No puede editar sus mensajes en este Foro
No puede borrar sus mensajes en este Foro
No puede enviar adjuntos en este Foro

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group :: Style based on FI Subice by phpBBservice.nl :: Todos los horarios son UTC - 6 horas
Traducción al español por Huan Manwë
phpBB SEO