Advertisement
Five_NT

[C++] Lista dubla ordonare string

May 12th, 2014
287
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.31 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. }
  84.  
  85. // crearea unei lista dubla care are ca parte de informative:
  86. nume sportive, punctaj, tara.
  87.   Sa se afiseze sportivii cu punctaj maxim
  88.   Sa se afiseze tara care are cei mai multi sportive
  89.   Adaugarea unui sportive pe lista de date.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement