|
Mostrar Mensajes
|
Páginas: [1]
|
1
|
Programación / Programación C/C++ / Re: venta de boletos de autobuses utilizando (colas ,listas o arboles) y archivos
|
en: 4 Agosto 2020, 03:43 am
|
este seria mi avanze hasta ahora estoy fallando en el modificar ya que me guarda los datos pero no elimina los datos anteriores ligados al codigo y tambien que no se como igualar los numeros de las lista a la variable de numero de bus gracias por su ayuda #include<stdio.h> #include<windows.h> FILE * archivo; struct pasajero { int cod, numbus,edad,ruta,identidad[13]; char nombre[50],telefono[8]; }pas; struct Nodo { int dato; Nodo *siguiente; }; Nodo * lista =NULL; //-------------------------------------------------------- int validar(int valor, int li, int ls) { while(valor < li || valor > ls) { printf("\n Error...Ingrese un valor entre [%d] y [%d]: ", li , ls ); } return valor; } //.---------------------------------------------------- void consultar() { int codigo; archivo = fopen("pasajero.txt","rt"); if(archivo == NULL) printf("\nEL archivo no existe."); else { printf("\n Ingrese el codigo del pasajero: "); printf("\n codigo Nombre Identidad Edad telefono numero de bus \n"); { fscanf(archivo , "%d %s %d %d %s %d ",&pas. cod , &pas. nombre, &pas. identidad, &pas. edad, &pas. telefono,&pas. ruta ); if(pas.cod==codigo) { printf("%5d %5s %8d %5d %10s %4d \n\n",pas. cod,pas. nombre,pas. identidad,pas. edad,pas. telefono,pas. ruta); break; } printf("\n pasajero no encontrado\n\n"); } } } //------------------------------------------- void busactivo(Nodo * &lista, int num) { Nodo *j = lista; bool encontrado = false; while((j != NULL) && (j -> dato <= num )){ if ( j -> dato == num) encontrado = true; j = j -> siguiente; } if (encontrado == true) printf("\n El bus numero [%d] esta activo \n",&num ); else printf("\n El bus numero [%d] NO esta activo \n",&num ); } //------------------------------------------- void agregararchi() { int num; archivo = fopen("pasajero.txt", "rt" ); if(archivo!= NULL) { printf("\nEl archivo ya existe."); } else { archivo = fopen("pasajero.txt", "wt" ); printf("\nEl archivo se ha creado."); } char resp; archivo = fopen("pasajero.txt","rt"); if(archivo == NULL) { printf("\nEl archivo no existe"); } else { archivo = fopen("pasajero.txt", "at" ); do { printf("\n\tDatos de pasajero."); //for para agregar numero de asientos ------>pendiente printf("\nIngrese codigo del pasajero: "); pas.cod=validar(pas.cod,1,999); printf("\nIngrese Nombre del pasajero: "); scanf("%s", &pas. nombre); printf("\nIngrese Identidad del Pasajero: "); scanf("%d", &pas. identidad); printf("\nIngrese la edad del Pasajero: "); pas.edad=validar(pas.edad,1,99); printf("\nIngrese numero de telefono del Pasajero: "); scanf("%s", &pas. telefono); printf("\n\t -RUTAS DISPONIBLES-"); printf("\n\t--------------------"); printf("\n\t|Ruta[1]...TEG-->SPS|"); printf("\n\t|-------------------|"); printf("\n\t|Ruta[2]...TEG-->CHO|"); printf("\n\t--------------------"); printf("\nIngrese su ruta deseada: "); switch(pas.ruta) { case 1 : fprintf(archivo ,"\nSu numero de bus es [%d]",pas. ruta); break; case 2 : fprintf(archivo ,"\nSu numero de bus es [%d]",pas. ruta); break; } fprintf(archivo , "\nCodigo del Pasajero: "); fprintf(archivo , "\nNombre del Pasajero: "); fprintf(archivo , "%2s", pas. nombre); fprintf(archivo , "\nIdentidad del Pasajero: "); fprintf(archivo , "%2d", pas. identidad); fprintf(archivo , "\nEdad del Pasajero: "); fprintf(archivo , "\nTelefono del Pasajero: "); fprintf(archivo , "%2s", pas. telefono); switch(pas.ruta) { case 1: fprintf(archivo ,"RUTA #1...TEG-->SPS\n"); break; case 2: fprintf(archivo ,"RUTA #2...TEG-->CHO\n"); } do { printf("\n%cDesea agregar otro pasajero ?: ",168); if(resp != 'S' && resp != 'N') printf("\n Error... Ingrese [S o N]"); } while(resp != 'S' && resp != 'N'); }while(resp=='S'); } } //------------------------------------------- void mostrar(Nodo*lista) { Nodo *i=lista; if(lista==NULL){ printf ("\n\t** LISTA VACIA **\n"); }else{ while((i!=NULL)){ printf("bus[%d] --> ",i ->dato ); i=i->siguiente; } printf("No hay mas buses encontados "); } } //------------------------------------------- void agregar(Nodo *&lista, int &num) { Nodo * nuevo_nodo = new Nodo(); nuevo_nodo -> dato = num; Nodo * auxi1 = lista; Nodo * auxi2; while((auxi1 != NULL) && ( auxi1 -> dato)) { auxi2 = auxi1; auxi1 = auxi1 -> siguiente; } if(lista == auxi1) lista = nuevo_nodo; else auxi2 -> siguiente = nuevo_nodo; nuevo_nodo-> siguiente = auxi1; printf("\n El bus[%d] se agrego correctamente \n", num ); } //-------------------------------------------- void menu() { int id; char res; int num; int opc, marcador; do { printf("\n\tTerminal de buses:" ); printf("\n [1]... Agregar cliente al bus" ); printf("\n [2]... Mostrar todos los buses disponibles" ); printf("\n [3]... Agregar pasajeros al autobus" ); printf("\n [4]... Consultar pasajero" );//cessar printf("\n [5]... Modificar datos del pasajero " );//jose printf("\n [6]... Eliminar pasajero");//andres do { printf("\nIngrese su opcion [1-7]: "); if(opc<1 || opc>7) printf("\nError...Ingrese su opci%cn de [1-7]: ",162); }while(opc<1 || opc>7); switch(opc) { case 1: printf ("\n\t Ingreso de Buses a la Lista Disponible"); printf ("\n\t *** * ** * * ** ****\n"); do { printf("\nIngrese el numero Bus en Estado Disponible: "); num=validar(num,1,5); agregar(lista,num); do { printf("\n%cDesea Agregar otro Bus Disponible[S-N]: ",168); if (res != 'S' && res != 'N') printf("\n Error... opci%cn incorrecta\n",162); }while(res != 'S' && res !='N'); }while(res == 'S'); break; case 2: printf ("\n Consulta los buses disponibles en la LISTA "); mostrar(lista); break; case 3: printf("\nIngrese datos del pasajero"); agregararchi(); break; case 4: printf("\n\t----Consultar Datos----"); printf("\n\t***********************\n"); consultar(); break; case 5: printf("\n\t----- MODIFICAR DATOS -----"); printf("\n Ingrese el codigo de pasajero a buscar: "); if(archivo == NULL) { printf("\nEl archivo no existe"); } else if(id==pas.cod) { archivo = fopen("pasajero.txt", "at" ); printf("\n\tDatos de pasajero."); //for para agregar numero de asientos ------>pendiente printf("\nIngrese codigo del pasajero: "); pas.cod=validar(pas.cod,1,999); printf("\nIngrese Nombre del pasajero: "); scanf("%s", &pas. nombre); printf("\nIngrese Identidad del Pasajero: "); scanf("%d", &pas. identidad); printf("\nIngrese la edad del Pasajero: "); pas.edad=validar(pas.edad,1,99); printf("\nIngrese numero de telefono del Pasajero: "); scanf("%s", &pas. telefono); printf("\n\t -RUTAS DISPONIBLES-"); printf("\n\t--------------------"); printf("\n\t|Ruta[1]...TEG-->SPS|"); printf("\n\t|-------------------|"); printf("\n\t|Ruta[2]...TEG-->CHO|"); printf("\n\t--------------------"); printf("\nIngrese su ruta deseada: "); switch(pas.ruta) { case 1 : fprintf(archivo ,"\nSu numero de bus es [%d]",pas. ruta); break; case 2 : fprintf(archivo ,"\nSu numero de bus es [%d]",pas. ruta); break; } fprintf(archivo , "\nCodigo del Pasajero: "); fprintf(archivo , "\nNombre del Pasajero: "); fprintf(archivo , "%2s", pas. nombre); fprintf(archivo , "\nIdentidad del Pasajero: "); fprintf(archivo , "%2d", pas. identidad); fprintf(archivo , "\nEdad del Pasajero: "); fprintf(archivo , "\nTelefono del Pasajero: "); fprintf(archivo , "%2s", pas. telefono); switch(pas.ruta) { case 1: fprintf(archivo ,"RUTA #1...TEG-->SPS\n"); break; case 2: fprintf(archivo ,"RUTA #2...TEG-->CHO\n"); } } break; //case 6: // break; case 7: default: } }while(opc!=7); } main() { menu(); return 0; }
|
|
|
2
|
Programación / Programación C/C++ / eliminar un dato de arbol
|
en: 30 Julio 2020, 00:36 am
|
necesito ayuda la verdad no puede logarar que los datos del arbol se eliminen no logro avanzar de ahi me serviria mucho su ayuda o consejos gracias eliminar un solo dato del arbol y despues que se eliminen todos los datos del arbol #include<stdio.h> #include<windows.h> struct nodo{ double dato; nodo *derecho; nodo *izquierdo; nodo *padre; }; nodo *arbol=NULL; //--------------------------elliminar dato---------------------------------- void eliminar(nodo*arbol,double num) { if(arbol ==NULL) { return; } else if(num<arbol ->dato) { eliminar(arbol->izquierdo,num); } else if(num>arbol->dato) { eliminar(arbol-> derecho,num); } else { eliminarnodo(arbol); } } //-------------------------------------------------------------------------- nodo*minimo(nodo*arbol) { if(arbol ==NULL) { return NULL; } if(arbole->izquierdo) { return minimo(arbol->izquierdo); } else { return arbol; } } //---------------------------------------------------------------- void reemplazar(nodo *arbol,nodo* nuevonodo) { if(arbol->padre) { if(arbol->dato =arbol->padre->izquierdo->dato) { arbol->padre->padre->izquierdo=nuevonodo; } else if(arbol->dato==arbol->padre->derecho->dato) { arbol->padre->derecho=nuevonodo; } } if(nuevonodo) { nuevonodo->padre=arbol->padre; } } //-------------------------------------------------------------------------- void destruirnodo(nodo *nodo) { nodo->izquierdo=NULL; nodo->derecho=NULL; delete nodo; } //--------------------------------------------------------------------------- void eliminarnodo(nodo*nodoeliminar) { if(nodoeliminar->izquerdo && nodoeliminar->derecho) { nodo*menor=minimo(nodoeliminar->derecho); nodoeliminar->dato=menor->dato; eliminarnodo(menor); } else if(nodoeliminar->izquierdo) { reemplazar(nodoeliminar,nodoeliminar->izquierda); destruirnodo(nodoeliminar); } else if(nodoeliminar->derecho) { reemplazar(nodoeliminar,nodoeliminar->derecho); destruirnodo(nodoeliminar); } } //--------------------------CONSULTAR DATOS--------------------------------- bool consultar(nodo *arbol, double num){ if(arbol == NULL) { return false; } else if(arbol->dato == num) { return true; } else if(num < arbol->dato) { return consultar(arbol->izquierdo, num); } else { return consultar(arbol->derecho, num); } } //--------------------------MOSTRAR DATOS--------------------------------- void mostrar(nodo *arbol, double cont) { if(arbol==NULL) { return; } else { mostrar(arbol->derecho, cont+1); for(int i=0;i<cont; i++) printf(" %.2lf \n\n",arbol ->dato ); mostrar(arbol->izquierdo, cont+1); } } //------------------------------------------------------------------------- nodo * crear(double num) { nodo * nuevonodo = new nodo(); nuevonodo->dato = num; nuevonodo->derecho = NULL; nuevonodo->izquierdo = NULL; return nuevonodo; } //---------------------------INSERTAR DATOS-------------------------------- void insertar(nodo *&arbol, double num) { if(arbol == NULL) { nodo *nuevonodo = crear(num); arbol = nuevonodo; } else { int raiz=arbol->dato; if(num < raiz) insertar(arbol->izquierdo, num); else { insertar(arbol->derecho, num); } } } //------------------------------MENU----------------------------------------------------- void menu() { int opc, cont=0; double num; char resp; do{ printf("\n\t MENU ARBOLES BINARIOS"); printf("\n\t **** ******* ********"); printf("\n [1]...Agregando datos al %crbol",160); printf("\n [2]...Mostrar datos del %crbol",160); printf("\n [3]...Consultar datos del %crbol",160); printf("\n [4]...Eliminar un dato del %crbol",160); printf("\n [5]...Eliminar todos los datos del %crbol",160); do{ printf("\n Ingrese una opci%cn: ",162); if(opc<1 || opc>6); printf("\n ERROR...Ingrese una opci%cn v%clida[1-6]: ",162, 160); }while(opc<1 || opc>6); switch(opc){ case 1: printf("\n\t INGRESO DATOS AL ARBOL"); printf("\n\t ******* ** ***** ** *****"); do{ printf("\n Ingrese un n%cmero al arbol: ", 163); insertar(arbol, num); do { printf("\n %cDesea ingresar otro dato al arbol?: ",168); if(resp != 'S' && resp != 'N') printf("\n ERROR... Ingrese una opcion valida[S-N]"); }while(resp != 'S' && resp != 'N'); }while(resp=='S'); break; case 2: printf("\n\t MOSTRANDO DATOS DEL ARBOL"); printf("\n\t ********* ***** *** *****\n"); mostrar(arbol, cont); break; case 3: printf("\n\t CONSULTAR DATOS DEL DATOS"); printf("\n\t ********* ***** *** *****"); do{ printf("\n Ingrese un n%cmero a buscar del arbol: ",163); if(consultar(arbol, num) == true) { printf("\n EL ELEMENTO [%.2lf] HA SIDO ENCONTRADO", num ); } else { printf("\n EL DATO [%.2lf] NO ESTA GUARDADO EN EL ARBOL.",num ); } do { printf("\n %cDesea buscar otro dato dentro del %crbol?: ",168,160); if(resp != 'S' && resp != 'N') printf("\n ERROR... Ingrese una opcion valida[S-N]"); }while(resp != 'S' && resp != 'N'); }while(resp=='S'); break; case 4: printf("\n\t eliminar un DATO DEL arbol"); printf("\n\t ********* ***** *** *****"); eliminar(arbol,num); default: } }while(opc != 6); } main() { menu(); return 0; }
|
|
|
3
|
Programación / Programación C/C++ / venta de boletos de autobuses utilizando (colas ,listas o arboles) y archivos
|
en: 27 Julio 2020, 03:22 am
|
hacer reserva de asientos de un autobús(máximo 10 asientos ) que pida código ,nombre , numero de asiento ,numero de autobús ,precio ,y precio total con impuesto ,guardando los datos en un archivo y utilizando listas o colas y que imprima todo estos datos como un recibo soy estudiante y me ayudaría mucho su ayuda muchas gracias por su tiempo ; si lo siento mucho asta ahii e avanzado mas que todo queria una idea o una sugerencia de como hacer la parte de colas o listas ya que no se exactamente como proceder #include<stdio.h> #include<windows.h> FILE *archivo; struct pasajero { int codigo ,asiento, edad; char nombre [50]; double precio ,precioTotal; }pas; //************************************************************** double validar(double valor, double li, double ls) { while(valor < li || valor > ls) { printf("\n Error...Ingrese un valor entre [%.2lf] y [%.2lf]: ", li , ls ); } return valor; } //*************************************************************** void consultar() { int cod; archivo = fopen("pasajero.txt","rt"); if(archivo == NULL) printf("\nEl archivo No existe."); else { printf("\n Ingrese el codigo del pasajero: "); printf("\n codigo Edad Nombre No-asiento"); { fscanf(archivo , "%d %d %s %d",&pas. codigo,&pas. edad,&pas. nombre,&pas. asiento); if(pas.codigo==cod) { printf("%d %d %s %d",pas. codigo,pas. edad,pas. nombre,pas. asiento); break; } printf("\n Pasajero no encontrado"); } } } //*************************************************************** void listar() { archivo = fopen("pasajero.txt", "rt" ); if(archivo == NULL) { printf("\nEl archivo No existe."); } else { printf("\nCodigo edad nombre promedio\n"); { fscanf(archivo , "%d %d %s %d", &pas. codigo, &pas. edad, &pas. nombre, &pas. asiento); printf("%5d %4d %5s %5d\n", pas. codigo, pas. edad, pas. nombre, pas. asiento); } } } //*************************************************************** void agregar() { char resp; archivo = fopen("pasajero.txt","rt"); if(archivo ==NULL) { printf("\nEl archivo No existe"); } else { archivo = fopen("pasajero.txt","at"); do { printf("\n\tDatos del pasajero"); printf("\n\t----- --- --------"); printf("\nIngrese el codigo del pasajero :"); pas.codigo=validar(pas.codigo,1,10); printf("\nIngrese la edad del pasajero:"); pas.edad=validar(pas.edad,1,100); printf("\nIngrese el nombre del pasajero: "); printf("\nIngrese el numero del asiento:"); scanf("%d",&pas. asiento); fprintf(archivo , "\n %d", pas. codigo); fprintf(archivo , "\n %d", pas. edad); fprintf(archivo , "\n %s", pas. nombre); fprintf(archivo , "\n %d", pas. asiento); do { printf("\n Desea agregar otro envio? \n: "); if(resp != 'S' && resp != 'N') printf("\n Error... Ingrese [S o N]"); }while(resp != 'S' && resp != 'N'); }while(resp=='S'); } } //*************************************************************** void crear() { archivo = fopen("pasajero.txt","rt"); if(archivo !=NULL) { printf("\n El archivo ya existe"); } else { archivo = fopen("pasajero.txt","wt"); printf("\n el archivo a sido creado con exito"); } } //*************************************************************** void menu() { int opc; do { printf("\n[3]... listar datos "); printf("\n[4]... consultar pasajero"); do { printf("\nIngrese su opcion [1-5]: "); if(opc<1 || opc>5) printf("\nError ingrese [1-5]: "); }while(opc<1 || opc>7); switch(opc) { case 1: crear(); break; case 2: agregar(); break; case 3: listar(); break; case 4: consultar(); break; default: printf("gracias por usar nuestro sistema"); } }while(opc != 5); } //********************************************************* main () { menu(); return 0 ; }
|
|
|
|
|
|
|