Advertisement
Five_NT

[C++] Liste duble \ Ordonare telefoane dupa nume

May 12th, 2014
243
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.08 KB | None | 0 0
  1. /* ****************************************************************************************
  2. // Sa se creeze o lista dublu inlantuita care are partea de informatie urmatoarele campuri:
  3.  • marca telefon
  4.  • numar telefon
  5.  • pret telefon
  6. // Cerinte:
  7.  • Sa se creeze lista;
  8.  • Sa se ordoneze lista dupa marca telefonului;
  9.  • Sa se afiseze toate telefoanele de pret minim;
  10. **************************************************************************************** */
  11.  
  12. #include <iostream>
  13. #include <fstream>
  14. #include <string.h>
  15.  
  16. using namespace std;
  17.  
  18. struct nod {
  19.     char marca[51];
  20.     long numar;
  21.     int pret;
  22.     nod *urm, *ant;
  23. } *p, *u, *prim;
  24.  
  25. void create()
  26. {
  27.     p = new nod;
  28.     prim = p;
  29.     cout << "Marca: "; cin >> p -> marca;
  30.     cout << "Numar: "; cin >> p -> numar;
  31.     cout << "Pret: "; cin >> p -> pret;
  32.     p -> ant = NULL;
  33.     cout << '\n';
  34.     while(strcmp(p -> marca, "exit") != 0) {
  35.         u = new nod;
  36.         cout << "Marca: "; cin >> u -> marca;
  37.         cout << "Numar: "; cin >> u -> numar;
  38.         cout << "Pret: "; cin >> u -> pret;
  39.         p -> urm = u;
  40.         u -> ant = p;
  41.         p = u;
  42.     }
  43.     u -> urm = NULL;
  44. }
  45.  
  46. void afis()
  47. {
  48.     p = prim;
  49.     while ( p -> urm != NULL ) {
  50.         cout << p -> marca << " " << p -> numar << " " << p -> pret << '\n';
  51.         p = p -> urm;
  52.     }
  53. }
  54.  
  55. void ordonare_marca()
  56. {
  57.     int n, pr;
  58.     bool ok;
  59.     char aux[51];
  60.  
  61.     do {
  62.         p = prim;
  63.         ok = false;
  64.         while( p -> urm -> urm != NULL ) {
  65.             if ( strcmp(p -> marca, p -> urm -> marca) > 0 ) {
  66.                 strcpy(aux, p -> marca);
  67.                 strcpy(p -> marca, p -> urm -> marca);
  68.                 strcpy(p -> urm -> marca, aux);
  69.                 n = p -> numar; p -> numar = p -> urm -> numar; p -> urm -> numar = n;
  70.                 pr = p -> pret; p -> pret = p -> urm -> pret; p -> urm -> pret = pr;
  71.                 ok = true;
  72.             }
  73.             p = p -> urm;
  74.         }
  75.     } while(ok == true);
  76. }
  77. int main()
  78. {
  79.     create();
  80.     ordonare_marca();
  81.     afis();
  82.     return 0;
  83. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement