C/Visual C - AYUDA!!

 
Vista:

AYUDA!!

Publicado por areth (2 intervenciones) el 12/06/2006 13:16:50
TENGO QUE HACER EL SIGUIENTE EJERCICIO Y ANDO UN POCO PERDID. SI ALGUIEN ME HECHA UNA MANO SE LO AGRADECERÍA.
TENGO HECHOS UN PAR DE PUNTOS PERO ME GUSTARÍA SABER SI ESTÁN BIEN O SE PUEDEN MEJORAR Y QUE ALGUIEN ME DIJERA LOS OTROS APARTADOS QUE TENGO SIN HACER. SI ES POSIBLE, CON COMENTARIOS DURANTE EL CÓDIGO, MÁS QUE NADA PARA NO ANDAR PERDID. 1 SALUDO Y GRACIAS

Se desea almacenar en un ficherto la información recogida sobre vehículos. Para ello disponemos del siguiente menú:
1.ALTAS
2.BAJAS
3.MODIFICACIONES
4.VOLCADO AL FICHERO
5.VISUALIZAR FICHERO
6.SALIR

Explicación:
1.ALTAS
La recogida de datos se efectuará mediante una lista doblemente enlazada, de tal forma que introduciremos el número de vehículos a introducir y posteriormente introduciremos un vehículo por cada nodo de la lista.
ant Marca Modelo Matrícula sig
2.BAJAS
Se pide la matrícula del vehículo y se elimina el nodo correspondiente.
3.MODIFICACIONES
Idem y se modifica el nodo con los nuevos datos que aporte el usuario.
4.VOLCADO
Se introduce la información de todos los vehículos al fichero creado. El nombre del fichero será"vehic.txt".
5.VISUALIZAR
Mostrar por pantalla el contenido del fichero creado.
6.SALIR
Salir de la aplicación.

#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <string.h>
typedef struct nodo
{char marca[20],modelo[20],matricula[8];
struct nodo *ant;
struct nodo *sig;}tiponodo;
typedef tiponodo *lista;
void main (void)
{
clrscr();
lista p,q,r,s;
char marc[15]="",mod[15]="",matl[15]="";
int n=0,a,entradas=0,t,b,y=1; /*"t","a" y "b" son meros contadores, "y" es un comprobador*/
for(a=0;a<15;a++)
{marc[a]=' ';
mod[a]=' ';
mat[a]=' ';}
while(n!=6)
{printf("\nElige una de las siguientes opciones:\n");
printf("1.Altas\n");
printf("2.Bajas\n");
printf("3.Imprimir\n");
printf("6.Salir\n");
scanf("%d",&n);
if(n==1)
{printf("Introduce la marca del vehiculo: ");
scanf("%s",marc);
printf("Introduce el modelo: ");
scanf("%s",mod);
printf("Introduce la matricula: ");
scanf("%s",mat);
if(entradas==0)
{p=(lista)malloc(sizeof(tiponodo));
for(b=0;b<15;b++)
{p->marca[b]=marc[b];
p->modelo[b]=mod[b];
p->matricula[b]=mat[b];}
p->ant=NULL;
p->sig=NULL;
r=p;
entradas=1;}
else
{s=(lista)malloc(sizeof(tiponodo));
for(b=0;b<15;b++)
{s->marca[b]=marc[b];
s->modelo[b]=mod[b];
s->matricula[b]=mat[b];}
s->ant=r;
s->sig=NULL;
r->sig=s;
r=s;
entradas++;}}
if(n==2)
{printf("Has elegido borrar un vehiculo\n");
printf("Introduce la matricula: ");
scanf("%s",mat);
for(s=p,a=1;a<=entradas;a++) /*Bucle que recorre los nodos*/
{for(t=0,y=1;t<strlen(mat);t++) /*Bucle que recorre la matricula comprobando si es el correcta*/
{if(s->matricula[t]!=mat[t])
y=0;}
if(y==0)
s=s->sig;} /*Si el nodo no es el correcto, pasamos al siguiente*/
if(y==1)
{for(r=s->sig;s->sig!=NULL;s=s->sig,r=r->sig)/*Vamos pasando el contenido de los nodos hacia atr s*/
{for(b=0;b<15;b++)
{s->marca[b]=r->marca[b];
s->modelo[b]=r->modelo[b];
s->matricula[b]=r->matricula[b];}}
if(s->sig==NULL) /*Al llegar al final de la lista enlazamos los nodos de otra manera*/
{q=s->ant;
q->sig=NULL;
q=s->sig;
q->sig=NULL;
r=s->ant; /*Usamos el nodo "r" para poder añadir mas entradas si fuera necesario*/
s->ant=NULL;
s->sig=NULL;}
entradas--;}}
if(n==3)
{if(entradas==0)
{printf("\nNo existen entradas\n");}
else
{s=p;
printf("\nmarca: %s\nmodelo: %s\nmatricula: %s\n",p->marca,p->modelo,p->matricula);
while(s->sig!=NULL)
{s=s->sig;
printf("\nmarca: %s\nmodelo: %s\nmatricula: %s\n",s->marca,s->modelo,s->matricula);}}}
}
printf("adios");
getch();
}


FALTARÍAN LOS PUNTOS 4 Y 5, QUE SON EN LOS QUE NECESITO AYUDA BÁSICAMENTE
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder