Guest User

code.cpp

a guest
Aug 21st, 2017
94
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <iostream>
  2. #include <stdlib.h>
  3. #include<stdio.h>
  4. #include <fstream>
  5. using namespace std;
  6. class Nodo {
  7. public:
  8. string nombre;
  9. string id;
  10. string apellido;
  11. string ruta;
  12. int num;
  13. friend class Rutas;
  14. Nodo *anterior;
  15. Nodo *siguiente;
  16. Nodo()
  17. {
  18. num=1;
  19. nombre="";
  20. id= "";
  21. apellido= "";
  22. ruta="";
  23. anterior=NULL;
  24. siguiente=NULL;
  25. }
  26. int vacia(Nodo *lista )
  27. {
  28. if(lista==NULL)
  29. return 1;
  30. else
  31. return 0;
  32. }
  33.  
  34. Nodo *InsertarAlPrincipio(Nodo *lista)
  35. {
  36. //cout<<sizeof(Nodo)/sizeof(lista)<<endl;
  37.  
  38. Nodo *temp=new Nodo();
  39.  
  40. if(vacia(lista))
  41. {
  42. cout<<" Ingrese el Nombre :"<<endl;
  43. cin>>temp->nombre;
  44. cin.ignore();
  45. cout<<" Ingrese el apellido :"<<endl;
  46. cin>>temp->apellido;
  47. cin.ignore();
  48. cout<<" Ingrese el ID: "<<endl;
  49. cin>>temp->id;
  50. cout<<" Ingrese el Ruta: "<<endl;
  51. cin>>temp->ruta;
  52. temp->num;
  53. lista=temp;
  54.  
  55. }
  56. else{
  57.  
  58. cout<<" Dame tu nombre "<<endl;
  59. cin>>temp->nombre;
  60. cin.ignore();
  61.  
  62. cout<<" Dame tu apellido "<<endl;
  63. cin>>temp->apellido;
  64. cin.ignore();
  65. cout<<" Dame tu ID"<<endl;
  66. cin>>temp->id;
  67. cout<<" Dame tu Ruta"<<endl;
  68. cin>>temp->ruta;
  69. temp->num++;
  70. lista->anterior=temp;
  71. temp->siguiente=lista;
  72. lista=temp;
  73.  
  74.  
  75. }
  76. cout<<"\t \t Conductor numero ["<<temp->num<<"]"<<endl;
  77. cout<<"\t \t El nombre es : -> "<<lista->nombre<<endl;
  78. cout<<"\t \t El Apellido es : -> "<<lista->apellido<<endl;
  79. cout<<"\t \t El Id es -> "<<lista->id<<endl;
  80. cout<<"\t \t La ruta es : -> "<<lista->ruta<<endl;
  81. return lista;
  82. }
  83. /*
  84. Nodo *InsertarF(Nodo *lista)
  85. {
  86. Nodo *temp=new Nodo();
  87. if (vacia(lista))
  88. {
  89. cout<<"Inserte el elemento "<<endl;
  90. cin>>temp->dato;
  91. lista=temp;
  92. cout<<"\t \t Se ingreso el elemento correctamente -> "<<lista->dato<<endl;
  93. }
  94. else{
  95.  
  96. while(lista->siguiente!=NULL)
  97. {
  98. lista=lista->siguiente; //Lo avanza
  99. }
  100.  
  101. lista->siguiente=temp;
  102. temp->anterior=lista;
  103. cout<<"Inserte el elemento"<<endl;
  104. cin>>temp->dato;
  105. lista=temp;
  106. cout<<"El dato se ingreso correctamente !!-> " <<lista->dato;
  107. while(lista->anterior!=NULL)
  108. {
  109.  
  110. lista=lista->anterior;
  111. }
  112.  
  113.  
  114. }
  115. return lista;
  116.  
  117. }
  118. */
  119. int Contar(Nodo *lista)
  120. {
  121. Nodo *aux=lista;
  122. int contar=0;
  123.  
  124.  
  125. while(aux!=NULL)
  126. {
  127. contar++;
  128. aux=aux->siguiente;
  129. }
  130. return contar;
  131. }
  132. Nodo *Eliminacion(Nodo *lista, string id1)
  133. {
  134.  
  135. //cout<<"Entre1"<<endl;
  136. Nodo *aux=NULL;
  137. Nodo *temp_borrar=new Nodo();
  138. temp_borrar=lista;
  139. while((temp_borrar!=NULL)&&(temp_borrar->id!=id1))
  140. {
  141. aux=temp_borrar;
  142. temp_borrar=temp_borrar->siguiente;
  143. }
  144. if(temp_borrar==NULL)
  145. {
  146. cout<<"Elemento no encontrado"<<endl;
  147. }
  148. else if(aux==NULL){
  149. lista=lista->siguiente;
  150. delete temp_borrar;
  151.  
  152.  
  153. }
  154. else{
  155.  
  156. aux->siguiente=temp_borrar->siguiente;
  157. delete temp_borrar;
  158.  
  159. }
  160. /* if(pos==1)
  161.  
  162. {
  163. // cout<<"Entre"<<endl;
  164. // Nodo *temp_borrar=new Nodo();
  165. Nodo *temp_borrar;
  166. temp_borrar=lista;
  167. lista=temp_borrar->siguiente;
  168.  
  169. delete temp_borrar;
  170. }
  171. else if(pos==(Contar(lista)))
  172. {
  173. Nodo *temp_borrar=new Nodo();
  174. temp_borrar=lista;
  175. Nodo *ante=new Nodo();
  176. while(temp_borrar->siguiente!=NULL)
  177. {
  178. ante=temp_borrar;
  179. temp_borrar=temp_borrar->siguiente;
  180. }
  181. ante->siguiente=temp_borrar->siguiente;
  182. delete temp_borrar;
  183. }
  184. else if(pos>1&&pos<(Contar(lista)+1))
  185. {
  186. Nodo *temp_borrar=new Nodo();
  187. Nodo *ante= new Nodo();
  188. temp_borrar=lista;
  189.  
  190. for(int i=1;i<pos;i++)
  191. {
  192.  
  193. ante=temp_borrar;
  194. temp_borrar=temp_borrar->siguiente;
  195. }
  196. ante->siguiente=temp_borrar->siguiente;
  197. temp_borrar->anterior=ante;
  198. delete temp_borrar;
  199.  
  200. }
  201. else if(pos<0||pos>(Contar(lista)+2))
  202. {
  203.  
  204. cout<<"No valido "<<endl;
  205. }
  206. /* else{
  207.  
  208. while((temp!=NULL)&&(temp->dato!=n))
  209. {
  210. anterior=temp;
  211. temp=temp->siguiente;
  212.  
  213. }
  214. if(temp==NULL)
  215. {
  216.  
  217. cout<<RED<<"Elemento no encontrado"<<RESET<<endl;
  218. }
  219. else if(anterior==NULL)
  220. {
  221.  
  222. lista=lista->siguiente;
  223. cout<<"\t \tNumero borrado -> "<<temp->dato;
  224. delete temp;
  225. }
  226. else {
  227.  
  228.  
  229. anterior->siguiente=temp->siguiente;
  230. delete temp;
  231. }
  232. }*/
  233. return lista;
  234. }
  235. /*Nodo *Mostrarnodo(Nodo *lista){
  236.  
  237. cout<<"\t \t Elemento insertado -> "<<lista->nombre<<endl;
  238. cout<<"\t \t Elemento insertado -> "<<lista->id<<endl;
  239. cout<<"\t \t Elemento insertado -> "<<lista->apellido<<endl;
  240. cout<<"\t \t Elemento insertado -> "<<lista->ruta<<endl;
  241.  
  242.  
  243. }*/
  244. Nodo *Modificar(Nodo *lista, string id){
  245. Nodo *temp=new Nodo();
  246. temp=lista;
  247. while((temp!=NULL)&&(temp->id!=id))
  248. {temp=temp->siguiente;}
  249. if(temp==NULL)
  250.  
  251. {
  252.  
  253. cout<<"NO se encontre el id"<<endl;
  254.  
  255. }
  256. else{
  257. int opc;
  258. string ape;
  259. string idd;
  260. string ru;
  261. string nom;
  262.  
  263.  
  264. cout<<"Elija que quiere cambiar \n1.-Nombre\n2.-Apellido\n3.-ID\n4Ruta";
  265. cin>>opc;
  266. switch(opc){
  267. case 1:
  268.  
  269. cout<<"Dame el nombre"<<endl;
  270. cin>>nom;
  271. temp->nombre=nom;
  272. break;
  273. case 2:
  274. cout<<"Dame el apellido"<<endl;
  275. cin>>ape ;
  276. temp->apellido=ape;
  277. break;
  278. case 3:
  279. cout<<"Dame el id"<<endl;
  280. cin>>idd;
  281. temp->id=idd;
  282. break;
  283. case 4:
  284. cout<<"Dame la Ruta"<<endl;
  285. cin>> ru;
  286. temp->ruta=ru;
  287. break;
  288.  
  289. }
  290. cout<<"Cambiado a "<<opc<<endl;
  291. }
  292. return lista;
  293. }
  294. Nodo *Mostrar(Nodo *lista)
  295. {
  296.  
  297. if (vacia(lista)){
  298. cout<<"\t \t La Lista esta vacia"<<endl;
  299.  
  300. }else{
  301. Nodo *temp=new Nodo();
  302. temp=lista;
  303.  
  304. while(temp!=NULL){
  305. cout<<"***************************"<<endl;
  306. cout<<"Conductor numero ["<<temp->num<<"]"<<endl;
  307. cout<<"NOMBRE ->"<<temp->nombre<<" \n";
  308. cout<<"Apellido -> "<<temp->apellido<<"\n";
  309. cout<<"ID -> "<<temp->id<<"\n";
  310. cout<<"Ruta ->"<<temp->ruta<<"\n";
  311. cout<<"****************************"<<endl;
  312. temp=temp->siguiente;
  313. }
  314.  
  315.  
  316. }
  317. return lista;
  318. }
  319.  
  320.  
  321.  
  322. };
  323. class Rutas{
  324. public:
  325. string origen;
  326. string id;
  327. string destino;
  328. string ruta;
  329. int num;
  330. Nodo *ID;
  331. Rutas *anterior;
  332. Rutas *siguiente;
  333. Rutas()
  334. {
  335. num=1;
  336. origen="";
  337. id="";
  338. destino= "";
  339. ruta="";
  340. anterior=NULL;
  341. siguiente=NULL;
  342. }
  343. int vacia(Rutas *lista2 )
  344. {
  345. if(lista2==NULL)
  346. return 1;
  347. else
  348. return 0;
  349. }
  350.  
  351.  
  352. Rutas *Agregar(Rutas *lista2){
  353. Rutas *temp=new Rutas();
  354.  
  355. if(vacia(lista2))
  356. {
  357. cout<<" Ingrese el Origen: :)"<<endl;
  358. cin>>temp->origen;
  359. cin.ignore();
  360. cout<<" Ingrese el Destino:"<<endl;
  361. cin>>temp->destino;
  362. cin.ignore();
  363. cout<<" Ingrese el ID: "<<endl;
  364. cin>>temp->id;
  365. cin.ignore();
  366. cout<<" Ingrese el Ruta: "<<endl;
  367. cin>>temp->ruta;
  368. temp->num+1;
  369. lista2=temp;
  370.  
  371. }
  372. else{
  373.  
  374. cout<<" Ingrese el Origen:"<<endl;
  375. cin>>temp->origen;
  376. cin.ignore();
  377. cout<<" Ingrese el Destino:"<<endl;
  378. cin>>temp->destino;
  379. cin.ignore();
  380. cout<<" Ingrese el ID: "<<endl;
  381. cin>>temp->id;
  382. cin.ignore();
  383. cout<<" Ingrese el Ruta: "<<endl;
  384. cin>>temp->ruta;
  385. temp->num++;
  386. lista2->anterior=temp;
  387. temp->siguiente=lista2;
  388. lista2=temp;
  389.  
  390.  
  391. }
  392. cout<<"\t \t Conductor numero ["<<temp->num<<"]"<<endl;
  393. cout<<"\t \t Elemento insertado -> "<<lista2->origen<<endl;
  394. cout<<"\t \t Elemento insertado -> "<<lista2->destino<<endl;
  395. cout<<"\t \t Elemento insertado -> "<<lista2->id<<endl;
  396. cout<<"\t \t Elemento insertado -> "<<lista2->ruta<<endl;
  397. return lista2;
  398. }
  399. Rutas *Mostrar(Rutas *lista2){
  400. Rutas *temp=new Rutas();
  401.  
  402. if(vacia(lista2))
  403. {
  404. cout<<"\t \tLista Vacia"<<endl;
  405.  
  406. }
  407. else{
  408. temp=lista2;
  409. while(temp!=NULL){
  410. cout<<"***************************"<<endl;
  411.  
  412. cout<<"EL origen es -> "<<temp->origen<<endl;
  413. cout<<"El destino es -> "<<temp->destino<<endl;
  414. cout<<"El ID es -> "<<temp->id<<endl;
  415. cout<<"La ruta es -> "<<temp->ruta<<endl;
  416. cout<<"***************************"<<endl;
  417.  
  418. temp=temp->siguiente;
  419.  
  420. }
  421.  
  422.  
  423. }
  424. return lista2;
  425.  
  426.  
  427. }
  428.  
  429. Rutas *Eliminacion(Rutas *lista2, string id1)
  430. {
  431.  
  432.  
  433. Rutas *aux=NULL;
  434. Rutas *temp_borrar=new Rutas();
  435. temp_borrar=lista2;
  436. while((temp_borrar!=NULL)&&(temp_borrar->id!=id1))
  437. {
  438. aux=temp_borrar;
  439. temp_borrar=temp_borrar->siguiente;
  440. }
  441. if(temp_borrar==NULL)
  442. {
  443. cout<<"Elemento no encontrado"<<endl;
  444. }
  445. else if(aux==NULL){
  446. lista2=lista2->siguiente;
  447. delete temp_borrar;
  448.  
  449.  
  450. }
  451. else{
  452.  
  453. aux->siguiente=temp_borrar->siguiente;
  454. delete temp_borrar;
  455.  
  456. }
  457. /* if(pos==1)
  458.  
  459. {
  460. // cout<<"Entre"<<endl;
  461. // Nodo *temp_borrar=new Nodo();
  462. Nodo *temp_borrar;
  463. temp_borrar=lista;
  464. lista=temp_borrar->siguiente;
  465.  
  466. delete temp_borrar;
  467. }
  468. else if(pos==(Contar(lista)))
  469. {
  470. Nodo *temp_borrar=new Nodo();
  471. temp_borrar=lista;
  472. Nodo *ante=new Nodo();
  473. while(temp_borrar->siguiente!=NULL)
  474. {
  475. ante=temp_borrar;
  476. temp_borrar=temp_borrar->siguiente;
  477. }
  478. ante->siguiente=temp_borrar->siguiente;
  479. delete temp_borrar;
  480. }
  481. else if(pos>1&&pos<(Contar(lista)+1))
  482. {
  483. Nodo *temp_borrar=new Nodo();
  484. Nodo *ante= new Nodo();
  485. temp_borrar=lista;
  486.  
  487. for(int i=1;i<pos;i++)
  488. {
  489.  
  490. ante=temp_borrar;
  491. temp_borrar=temp_borrar->siguiente;
  492. }
  493. ante->siguiente=temp_borrar->siguiente;
  494. temp_borrar->anterior=ante;
  495. delete temp_borrar;
  496.  
  497. }
  498. else if(pos<0||pos>(Contar(lista)+2))
  499. {
  500.  
  501. cout<<"No valido "<<endl;
  502. }
  503. /* else{
  504.  
  505. while((temp!=NULL)&&(temp->dato!=n))
  506. {
  507. anterior=temp;
  508. temp=temp->siguiente;
  509.  
  510. }
  511. if(temp==NULL)
  512. {
  513.  
  514. cout<<RED<<"Elemento no encontrado"<<RESET<<endl;
  515. }
  516. else if(anterior==NULL)
  517. {
  518.  
  519. lista=lista->siguiente;
  520. cout<<"\t \tNumero borrado -> "<<temp->dato;
  521. delete temp;
  522. }
  523. else {
  524.  
  525.  
  526. anterior->siguiente=temp->siguiente;
  527. delete temp;
  528. }
  529. }*/
  530.  
  531. return lista2;
  532. }
  533. Rutas *Modificar(Rutas *lista2, string id){
  534.  
  535.  
  536. Rutas *temp=new Rutas();
  537. temp=lista2;
  538. while((temp!=NULL)&&(temp->id!=id))
  539. {temp=temp->siguiente;}
  540. if(temp==NULL)
  541.  
  542. {
  543.  
  544. cout<<"NO se encontre el id"<<endl;
  545.  
  546. }
  547. else{
  548. int opc;
  549. string orig;
  550. string idd;
  551. string ru;
  552. string nom;
  553.  
  554.  
  555. cout<<"Elija que quiere cambiar \n1.-Nombre\n2.-Apellido\n3.-ID\n4.-Ruta"<<endl;
  556. cin>>opc;
  557. switch(opc){
  558. case 1:
  559.  
  560. cout<<"Dame el origen"<<endl;
  561. cin>>orig;
  562. temp->origen=orig;
  563. cout<<"Cambiado a "<<temp->origen<<endl;
  564.  
  565. break;
  566. case 2:
  567. cout<<"Dame el destino"<<endl;
  568. cin>>idd ;
  569. temp->destino=idd;
  570. cout<<"Cambiado a "<<temp->destino<<endl;
  571.  
  572. break;
  573. case 3:
  574. cout<<"Dame el id"<<endl;
  575. cin>>idd;
  576. temp->id=idd;
  577. cout<<"Cambiado a "<<temp->id<<endl;
  578.  
  579. break;
  580. case 4:
  581. cout<<"Dame la Ruta"<<endl;
  582. cin>> ru;
  583. temp->ruta=ru;
  584. cout<<"Cambiado a "<<temp->ruta<<endl;
  585.  
  586. break;
  587. default:
  588. cout<<"Elija una opcion correcta"<<endl;
  589.  
  590. }
  591. }
  592.  
  593. return lista2;
  594. }
  595.  
  596. };
  597.  
  598.  
  599.  
  600. int main()
  601. {
  602. Nodo *lista=NULL;
  603. int pos=0;
  604. int valor=0;
  605. Nodo y;
  606. Rutas *lista2=NULL;
  607. Rutas x;
  608.  
  609. int n=0;
  610. short op=0;
  611. short pop=0;
  612. short op2=0;
  613. string id1;
  614. bool salir=false;
  615. while(!salir)
  616. {
  617. op=0;
  618. op=2;
  619. cout<<"\n1.-Insertar Usuarios\n2.-Insertar Rutas\n3-.Salir "<<endl;
  620. cout<<"--> ";
  621. cin>>pop;
  622. switch(pop)
  623. {
  624. case 1:
  625. while(op != 5)
  626. {
  627. system("cls");
  628. cout<<"\n1.-Desea agregar a un usuario\n2.-Eliminar\n3.-Mostrar\n4.-Modificar\n5.-Salir"<<endl;
  629. cout<<"--> ";
  630. cin>>op;
  631. switch(op)
  632. {
  633.  
  634. case 1:
  635. lista=y.InsertarAlPrincipio(lista);
  636. cout<<"\n";
  637. system("pause");
  638. system("cls");
  639. break;
  640.  
  641. case 2:
  642. if(y.vacia(lista))
  643. {
  644.  
  645. cout<<"Vacia"<<endl;
  646. }
  647. else{
  648. cout<<"Ingrese un posicion"<<endl;
  649. cin>>id1;
  650. lista=y.Eliminacion(lista,id1);
  651. }
  652. cout<<"\n";
  653. system("pause");
  654. system("cls");
  655. break;
  656. case 3:
  657. lista=y.Mostrar(lista);
  658. cout<<"\n";
  659. system("pause");
  660. system("cls");
  661. break;
  662. case 4:
  663. if(y.vacia(lista))
  664. {
  665.  
  666. cout<<"Vacia"<<endl;
  667. }
  668. else{
  669. cout<<"Dame el ID"<<endl;
  670. cin>>id1;
  671. lista=y.Modificar(lista,id1);
  672. }
  673. cout<<"\n";
  674. system("pause");
  675. system("cls");
  676. // systemm();
  677. //cin.get();
  678. // clear();
  679.  
  680. case 5:
  681. system("cls");
  682. break;
  683. default:
  684. cout<<"Numero invalido"<<endl;
  685. cout<<"\n";
  686. system("pause");
  687. system("cls");
  688. break;
  689. }
  690. }
  691. break;
  692. case 2:
  693. while(op2!=5){
  694.  
  695. system("cls");
  696. cout<<"\n1.-Desea agregar a un Ruta\n2.-Eliminar\n3.-Mostrar\n4.-Modificar\n5.-Volver"<<endl;
  697. cout<<"-> ";
  698. cin>>op2;
  699. switch(op2)
  700. {
  701. case 1:
  702.  
  703. lista2=x.Agregar(lista2);
  704. cout<<"\n";
  705. system("pause");
  706. system("cls");
  707. break;
  708. case 2:
  709. if(x.vacia(lista2))
  710. {
  711.  
  712. cout<<"Esta vacio"<<endl;
  713. }
  714. else{
  715. cout<<"Intruduzca el Id de la ruta que quiere eliminar"<<endl;
  716. cin>>id1;
  717. lista2=x.Eliminacion(lista2,id1);
  718. }
  719. system("pause");
  720. system("cls");
  721. break;
  722.  
  723. case 3:
  724. lista2=x.Mostrar(lista2);
  725. cout<<"\n";
  726. system("pause");
  727. system("cls");
  728. break;
  729. case 4:
  730. if(x.vacia(lista2)){
  731. cout<<"Lista vacia"<<endl;
  732. }
  733. else{
  734. cout<<"Intrudzca el ID del la ruta que quiere eliminar"<<endl;
  735. cin>>id1;
  736. lista2=x.Modificar(lista2,id1);}
  737. system("pause");
  738. system("cls");
  739. break;
  740. case 5:
  741. system("cls");
  742. break;
  743. default:
  744. cout<<"Numero invalido"<<endl;
  745. cout<<"\n";
  746. system("pause");
  747. system("cls");
  748. break;
  749.  
  750. }
  751.  
  752.  
  753. }
  754. system("cls");
  755. break;
  756. case 3:
  757. salir=true;
  758. cout<<endl;
  759. }
  760. }
  761.  
  762. }
RAW Paste Data