Advertisement
F22

Untitled

F22
Jan 23rd, 2014
341
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.12 KB | None | 0 0
  1. //Tablica dynamiczna 2D rekordow z double i boolem, losowanie boola i double, zliczyć w każdym wierszu true
  2. //i tam gdzie jest najwięcej to zamienić ten wiersz z 1.
  3. //Jesli tablica kwadratowa to transponować.
  4. #include <iostream>
  5. #include <cstdlib>
  6. #include <ctime>
  7. using namespace std;
  8. struct SDane
  9. {
  10.     double liczba;
  11.     bool prawda;
  12. };
  13. void rozmiar(int &x, int &y)
  14. {
  15.     cout<<"Podaj wymiary: "<<endl;
  16.     cin>>x>>y;
  17. }
  18. void tworzenietab(int x, int y, SDane **&tab)
  19. {
  20.     tab=new SDane*[x];
  21.     for(int i=0; i<x; i++)
  22.     {
  23.         tab[i]=new SDane[y];
  24.     }
  25. }
  26. void usuwanietab(int x, SDane **&tab)
  27. {
  28.     for(int i=0; i<x; i++)
  29.     {
  30.         delete []tab[i];
  31.     }
  32.     delete []tab;
  33. }
  34. void losowanie(SDane **&tab, int x, int y)
  35. {
  36.     for(int i=0; i<x; i++)
  37.     {
  38.         for(int j=0; j<y; j++)
  39.         {
  40.             tab[i][j].liczba=rand()*(20-1)/double(RAND_MAX)+1;
  41.             tab[i][j].prawda=0+rand()%(1+1-0);
  42.         }
  43.     }
  44. }
  45. void drukowanie(SDane **tab, int x, int y)
  46. {
  47.     for(int i=0; i<x; i++)
  48.     {
  49.         for(int j=0; j<y; j++)
  50.         {
  51.             cout<<tab[i][j].liczba<<'\t';
  52.             cout<<tab[i][j].prawda<<'\t';
  53.         }
  54.         cout<<endl;
  55.     }
  56. }
  57. void liczenie(SDane **tab, int x, int y, int &max)
  58. {
  59.     int tab2[x];
  60.     for(int i=0; i<x; i++)
  61.     {
  62.         tab2[i]=0;
  63.         for(int j=0; j<y; j++)
  64.         {
  65.             if(tab[i][j].prawda==1)
  66.             {
  67.                 tab2[i]++;
  68.             }
  69.         }
  70.     }
  71.     max=0;
  72.     int L=0;
  73.     for(int i=0; i<x; i++)
  74.     {
  75.         if(tab2[i]>L)
  76.         {
  77.             L=tab2[i];
  78.             max=i;
  79.         }
  80.     }
  81.     cout<<"Max wiersz to: "<<max;
  82. }
  83. void zamiana(SDane **&tab, int max)
  84. {
  85.     SDane *tmp;
  86.     tmp=tab[0];
  87.     tab[0]=tab[max];
  88.     tab[max]=tmp;
  89. }
  90. int main()
  91. {
  92.     srand(time(0));
  93.     SDane **tab;
  94.     int x, y, max;
  95.     rozmiar(x, y);
  96.     tworzenietab(x, y, tab);
  97.     losowanie(tab, x, y);
  98.     liczenie(tab, x, y, max);
  99.     cout<<endl<<endl;
  100.     drukowanie(tab, x, y);
  101.     zamiana(tab, max);
  102.     cout<<endl<<endl;
  103.     drukowanie(tab, x, y);
  104.     usuwanietab(x, tab);
  105. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement