Advertisement
Dani_info

Grafica-BubbleSort

Nov 10th, 2019
127
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <iostream>
  2. #include <graphics.h>
  3. #include <stdio.h>
  4.  
  5. using namespace std;
  6.  
  7. void BubleSort(int v[], int n);
  8.  
  9. int main()
  10. {
  11.     int n;
  12.     char text[3];
  13.     cout<<"Cate numere se citesc?";
  14.     cin >> n;
  15.     int L=n*110, l=400;
  16.     int v[n];
  17.     for (int i=0; i<n; i++)
  18.     {
  19.         cout<<"v["<<i<<"]=";
  20.         cin>>v[i];
  21.     }
  22.     initwindow(L, l);
  23.     int ind=10;
  24.     for (int i=0; i<n; i++, ind+=100) // afisare numere
  25.     {
  26.         setcolor(WHITE);
  27.         rectangle(ind, 300, ind+80, 350);
  28.         sprintf(text, "%d", v[i]);
  29.         settextstyle(3, 0, 2);
  30.         int latime=textwidth(text);
  31.         int inaltime=textheight(text);
  32.         outtextxy(ind+40-latime/2, 325-inaltime/2, text);
  33.     }
  34.     BubleSort(v, n);
  35.     getch();
  36.     return 0;
  37. }
  38.  
  39.  
  40.  
  41. void BubleSort (int v[], int n)
  42. {
  43.     int ok, ind=10, latime, inaltime;
  44.     do{
  45.         ok=1;
  46.         ind=10;
  47.         for (int i=0; i<n-1; i++, ind+=100)
  48.         {
  49.             cout<<"Se compara "<<v[i]<<" cu "<<v[i+1]<<endl;
  50.             setcolor(RED);
  51.             rectangle(ind, 300, ind+80, 350);
  52.             rectangle(ind+100, 300, ind+180, 350);
  53.             delay(1000);
  54.             setcolor(WHITE);
  55.             rectangle(ind, 300, ind+80, 350);
  56.             rectangle(ind+100, 300, ind+180, 350);
  57.             delay (500);
  58.             char text[3];
  59.             if (v[i]>v[i+1])
  60.             {
  61.                 sprintf(text, "%d", v[i+1]);
  62.                 settextstyle(3, 0, 2);
  63.                 latime=textwidth(text);
  64.                 inaltime=textheight(text);
  65.                 outtextxy(ind+40-latime/2, 325-inaltime/2, text);
  66.                 sprintf(text, "%d", v[i]);
  67.                 settextstyle(3, 0, 2);
  68.                 latime=textwidth(text);
  69.                 inaltime=textheight(text);
  70.                 outtextxy(ind+140-latime/2, 325-inaltime/2, text);
  71.                 delay(1000);
  72.                 cout<<"Se interschimba "<<v[i]<<" cu "<<v[i+1]<<endl;
  73.                 swap(v[i], v[i+1]);
  74.                 ok=0;
  75.             }
  76.         }
  77.     }while (!ok);
  78.     setcolor(MAGENTA);
  79.     settextstyle(3, 0, 3);
  80.     outtextxy(50, 50, "Sirul este sortat!");
  81. }
Advertisement
RAW Paste Data Copied
Advertisement