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
#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
#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
#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!