Pasar programa a Listas Enlazadas (C++)! Urgente!

Iniciado por 1antares1, 28 Junio 2010, 05:01 AM

0 Miembros y 1 Visitante están viendo este tema.

1antares1

Hola amigos, estoy presentando una situación familiar muy grave, es sobre mi mamá.

Le dio una ACV Semi-hemorrágica, y está hospitalizada con la parte izquierda paralizada. Estoy solo con mis hermanos en casa, solo 1 está conmigo, el otro cuida de ella en la clínica y no he tenido tiempo para mis estudios, ya que culmino ésta semana.

Tengo un problema con un proyecto que es para finalizar en clases, y quiero pasar mi materia informática con buena nota.

Con todo el alma, me gustaría que me ayudaran para pasar mi proyecto de ARCHIVOS y PUNTEROS a LISTAS ENLAZADAS CON PUNTEROS.

No trato de justificarme por flojera, es que no tengo tiempo para estudiar, ni tuve.

Y es para mañana, tanto el proyecto que es el más importante como los ejercicios.

El ejercicio es éste:

Código (cpp) [Seleccionar]
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <string.h>
//const int num=10;
int cantidad=0;

struct Alumno{
    char titulo[30],concepto[30],n_e[25];
    int n_p,cant_p;
};

void llenar(struct Alumno *);

void lista(struct Alumno *);

int  main()

{

        struct Alumno Alum[25],*ptr;
       
        ptr=Alum;
        system("color f6");
        printf("\n\n\n  ***** Ingresar la cantidad de personas al registrar***** \n\n ");
        scanf("%d",&cantidad);
        system("cls");
        llenar(ptr);
        ptr=Alum;
        lista(ptr); 
        return 0;
}


void llenar (struct Alumno *ptr)
{
    for (int i=0;i<cantidad;i++,ptr++)
    {
        system("color f5");
        printf("Datos de la funcion %d",i+1);
        printf("\n\n  Numero de Presentacion: ");
        scanf("%d",&ptr->n_p);
        printf("  Titulo de la Obra a proyectar: ");
        fflush(stdin);
        gets(ptr->titulo);
        printf("  Concepto Audiovisual: ");
         fflush(stdin);
        gets(ptr->concepto);
        printf("  Nombre del encargado de la funcion: ");
         fflush(stdin);
        scanf("%s",&ptr->n_e);
        printf("  Cantidad de personas que asistieron a la funcion: ");
        fflush(stdin);
        scanf("%d",&ptr->cant_p);
               
        system("cls");

    }
}
void lista(struct Alumno *ptr)
{
for (int i=0;i<cantidad;i++,ptr++)
    {
        system("color f5");
        printf("Datos de la funcion %d",i+1);
        printf("\n\n  Los datos ingresados son:\n\n ");
        printf(" Numero de Presentacion: %d\n\n",ptr->n_p);
        printf("  Titulo de la obra: %s\n\n",ptr->titulo);
        printf("  Concepto Audiovisual: %s\n\n",ptr->concepto);
        printf("  Nombre del encargado de la funcion: %s\n\n",ptr->n_e);
        printf("  Cantidad de personas que asistieron a la funcion: %d\n\n",ptr->cant_p);
        system("pause");
        system("cls");
}
}



Y también me mandaron 2 ejercicios, es decir, de PILAS y el otro es COLA.

Tengo que hacerle un menu a cada 1, que tenga:

"INSERTAR"
"MODIFICAR"
"BORRAR"
"MOSTRAR"

Solamente eso! Vale 5 puntos el proyecto y 2,5, cada ejercicio, serían 10 puntos y apenas llevo 3 acumulados :(

Quisiera pasar mi materia para complacer a mi mamá, que Dios me escuche que no es mentira.

Se que no es Taringa para resolver los ejercicios sino, ayudar. Pero el proyecto lo hice solo, y lo único que pido ayuda es para esto.

Aqui está el ejercicio de PILAS:

Código (cpp) [Seleccionar]
#include<stdlib.h>
#include<stdio.h>

typedef struct nodo
{
    int valor;
    struct nodo *siguiente;
}tipoNodo;

typedef tipoNodo *pNodo;
typedef tipoNodo *Pila;
/* Funciones con pilas */

void Push(Pila *l, int v);
int Pop(Pila *l);

int main()
{
    Pila pila=NULL;
   
    Push(&pila, 20);
    Push(&pila, 10);
    printf("%d,",Pop(&pila));
    Push(&pila, 40);
    Push(&pila, 30);
   
    printf("%d,",Pop(&pila));
    printf("%d,",Pop(&pila));
    Push(&pila, 90);
    printf("%d,",Pop(&pila));
    printf("%d,\n",Pop(&pila));
   
    system("PAUSE");
    return 0;
}

void Push(Pila *pila, int v)
{
    pNodo nuevo;
   
    /* Crear un nodo nuevo */
    nuevo=
    (pNodo)malloc(sizeof(tipoNodo));
    nuevo->valor=v;
   
    /* Añadimos la pila a continuación del nuevo nodo */
   
    nuevo->siguiente=*pila;
   
    /* Ahora, el comienzo de nuestra pila es en nuevo nodo */
    *pila=nuevo;
}

int Pop(Pila *pila)
{
    pNodo nodo; /* varible auxiliar para manipular nodo */
    int v; /* Variable auxiliar para retorno */
   
    /* Nodo apunta al primer elemento de la pila */
    nodo=*pila;
    if(!nodo) return 0; /* Si no hay nodos en la pila retornamos 0 */
    *pila=nodo->siguiente;
    /*Guardamos el valor de retorno */
    v=nodo->valor;
    /* Borrar el nodo */
    free(nodo);
    return v;
    }



Y el de COLAS:

Código (cpp) [Seleccionar]
#include<stdlib.h>
#include<stdio.h>

typedef struct nodo
{
int valor;
struct nodo *siguiente;
} tipoNodo;

typedef tipoNodo *pNodo;

/* Funciones con colas: */

void Anadir(pNodo *primero, pNodo *ultimo, int v);
int Leer(pNodo *primero, pNodo *ultimo);
int main()
{
    pNodo primero=NULL, ultimo= NULL;
   
    Anadir(&primero, &ultimo, 20);
    printf("Añadir (20)\n");
    Anadir(&primero, &ultimo, 10);
    printf("Añadir (10)\n");
    printf("Leer: %d\n", Leer(&primero, &ultimo));
    Anadir(&primero, &ultimo, 40);
    printf("Añadir (40)\n");
    Anadir(&primero, &ultimo, 30);
    printf("Añadir (30)\n");
    printf("Leer: %d\n",Leer(&primero, &ultimo));
    printf("Leer: %d\n",Leer(&primero, &ultimo));
    Anadir(&primero, &ultimo, 90);
    printf("Añadir (90)\n");
    printf("Leer: %d\n",Leer(&primero, &ultimo));
    printf("Leer: %d\n",Leer(&primero, &ultimo));
   
    system("PAUSE");
    return 0;
}

void Anadir(pNodo *primero, pNodo *ultimo, int v)
{
pNodo nuevo;

/* Crear un nodo nuevo */

nuevo=
(pNodo)malloc(sizeof(tipoNodo));
nuevo->valor=v;

/* Este sera el ultimo nodo, no debe tener siguiente */

nuevo->siguiente=NULL;
/* Si la cola no estaba vacia, añadimos el nuevo a continuacion de ultimo */
if(*ultimo) (*ultimo)->siguiente=nuevo;

/* Si primero es NULL, la cola estaba vacia, ahora primero apuntara tambien el nuevo nodo */

if(!*primero) *primero=nuevo;
}

int Leer(pNodo *primero, pNodo *ultimo)
{

pNodo nodo; /* Variable auxiliar para manipular nodo */

int v; /* Variable auxiliar para retorno */

/* Nodo apunta al primer elemento de la pila */

nodo=*primero;
if(!nodo) return 0; /* Si no hay nodos en la pila retornamos 0 */
/* Asignamos a primero la direccion del segundo nodo */
*primero=nodo->siguiente;
/*Guardamos el valor de retorno */
v=nodo->valor;
/* Borrar el nodo */
free(nodo);
/*Si la cola quedo vacia, ultimo debe ser NULL tambien */
if(!*primero) *ultimo=NULL;
return v;
}



Eso es todo. Solo pasar el PROYECTO A LISTAS ENLAZADAS.

No importa como sea, con tal que tenga listas enlazadas. Como colocar el numero de visitantes por orden, etc. Cualquier modificacion que tenga listas enlazadas.

Y los ejercicios, solo el menu.

Muchas gracias amigo de corazón, me hace falta éste momento su ayuda. Saludos!

Littlehorse

Yo entiendo que posiblemente estés pasando por un mal momento, y la verdad lo lamento muchísimo. De todo corazón espero que tu madre se recupere y salga adelante.

Respecto del hilo, no tengo alternativa mas que cerrarlo, pero debido a la situación que planteaste te explico el por que.
Como moderadores tenemos que intentar hacer cumplir las reglas lo mejor posible, obviamente ciertos aspectos en la moderación son de libre interpretación dependiendo de quien este moderando, la realidad es que hay reglas que hay que cumplir. Varias de ellas son inmodificables.

Como moderadores no podemos medir la urgencia individual en pos de moldear las reglas a gusto de cada post, si no que por el contrario hay que mantener una linea para que sea lo mas justo posible para todos los usuarios. Por esa razón, si se permite que este hilo este abierto, también se deberían de permitir los otros que piden tareas, por supuesto acorde a las reglas eso no es posible.

También existe la problemática que si cada usuario cuenta algún problema grave, automáticamente tenemos que resolverle la tarea, por tanto, como sabemos cuando es verdad y cuando no? sin intentar dudar de lo que vos decís en este momento. Se puede dar el caso que la gente mienta, y obviamente tenemos que ser lo mas objetivos posibles.

No elimino el hilo, porque en caso que alguien quiera leerlo y ayudarte por pm pueda hacerlo, pero si tengo que cerrarlo.
Por supuesto si EI considera que el hilo debe estar abierto, no tengo ningún drama al respecto y le doy la derecha obviamente.

Por supuesto si avanzas con el proyecto y tenes dudas sobre el tema o sobre el código que estés desarrollando, mándame un pm  así reabro este hilo o haz un nuevo post con las dudas correspondientes.

Espero sepas comprender.

Un saludo y espero todo mejore.
An expert is a man who has made all the mistakes which can be made, in a very narrow field.

Eternal Idol

Pedi una extension (de tiempo) para presentar el trabajo, si explicas la situacion seguro que te la dan.
La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón