Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //Tablica dynamiczna 2D rekordow z double i boolem, losowanie boola i double, zliczyć w każdym wierszu true
- //i tam gdzie jest najwięcej to zamienić ten wiersz z 1.
- //Jesli tablica kwadratowa to transponować.
- #include <iostream>
- #include <cstdlib>
- #include <ctime>
- using namespace std;
- struct SDane
- {
- double liczba;
- bool prawda;
- };
- void rozmiar(int &x, int &y)
- {
- cout<<"Podaj wymiary: "<<endl;
- cin>>x>>y;
- }
- void tworzenietab(int x, int y, SDane **&tab)
- {
- tab=new SDane*[x];
- for(int i=0; i<x; i++)
- {
- tab[i]=new SDane[y];
- }
- }
- void usuwanietab(int x, SDane **&tab)
- {
- for(int i=0; i<x; i++)
- {
- delete []tab[i];
- }
- delete []tab;
- }
- void losowanie(SDane **&tab, int x, int y)
- {
- for(int i=0; i<x; i++)
- {
- for(int j=0; j<y; j++)
- {
- tab[i][j].liczba=rand()*(20-1)/double(RAND_MAX)+1;
- tab[i][j].prawda=0+rand()%(1+1-0);
- }
- }
- }
- void drukowanie(SDane **tab, int x, int y)
- {
- for(int i=0; i<x; i++)
- {
- for(int j=0; j<y; j++)
- {
- cout<<tab[i][j].liczba<<'\t';
- cout<<tab[i][j].prawda<<'\t';
- }
- cout<<endl;
- }
- }
- void liczenie(SDane **tab, int x, int y, int &max)
- {
- int tab2[x];
- for(int i=0; i<x; i++)
- {
- tab2[i]=0;
- for(int j=0; j<y; j++)
- {
- if(tab[i][j].prawda==1)
- {
- tab2[i]++;
- }
- }
- }
- max=0;
- int L=0;
- for(int i=0; i<x; i++)
- {
- if(tab2[i]>L)
- {
- L=tab2[i];
- max=i;
- }
- }
- cout<<"Max wiersz to: "<<max;
- }
- void zamiana(SDane **&tab, int max)
- {
- SDane *tmp;
- tmp=tab[0];
- tab[0]=tab[max];
- tab[max]=tmp;
- }
- int main()
- {
- srand(time(0));
- SDane **tab;
- int x, y, max;
- rozmiar(x, y);
- tworzenietab(x, y, tab);
- losowanie(tab, x, y);
- liczenie(tab, x, y, max);
- cout<<endl<<endl;
- drukowanie(tab, x, y);
- zamiana(tab, max);
- cout<<endl<<endl;
- drukowanie(tab, x, y);
- usuwanietab(x, tab);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement