Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <math.h>
- #define SIZE 5
- //uporjadochit stroki massiva po vozrastaniju summy ix elementov
- //prichesat
- //dobavit raznye varianty: po ubyvaniju summy elementov, chto eshe mozhno pridumat?
- void pop_arr(int s,int a[s][s]);
- void pr_arr(int s,int a[s][s]);
- void calc_row(int s,int a[s][s],int m[s]);//
- void sort_arr(int s,int a[s][s],int m[s]);//m[s] to be deleted, used different approach
- void swap_2_rows(int s,int a[s][s],int r1,int r2);
- int heaviest_row(int s,int sta_row,int fin_row,int a[s][s]);
- int main()
- {
- int min[SIZE],arr [SIZE][SIZE]={3,3,3,3,3, 2,2,2,2,2, 5,5,5,5,5, 1,1,1,1,1, 4,4,4,4,4};
- //pop_arr(SIZE,arr);
- pr_arr(SIZE,arr);
- //calc_row(SIZE,arr,min);
- sort_arr(SIZE,arr,min);
- pr_arr(SIZE,arr);
- return 0;
- }
- void pop_arr(int s,int a[s][s])
- {
- int i,j;
- for(i=0;i<s;i++)
- {
- for(j=0;j<s;j++)
- a[i][j]=rand()%20;
- }
- }
- void pr_arr(int s,int a[s][s])
- {
- int i,j;
- for(i=0;i<s;i++)
- {
- for(j=0;j<s;j++)
- {printf("%d\t",a[i][j]);}
- printf("\n");
- }
- }
- void calc_row(int s,int a[s][s],int summa[s])
- {
- int i,j,summ,index=0;//biggest summ in row index
- for(i=0;i<s;i++)
- {
- summ=0;
- for(j=0;j<s;j++)//puts summ for each row into array summa
- summ+=a[i][j];
- summa[i]=summ;
- }
- for(i=0;i<s;i++)//prins summ for each row
- printf("summ - %d\n",summa[i]);
- for(i=0;i<s;i++)//finds row with the biggest summ for it(which row is the heaviest?)
- index =(summa[i]>summa[index])? i:index;
- printf("index is %d,summ is %d\t",index,summa[index]);
- }
- void sort_arr(int s,int a[s][s],int summa[s])
- {
- int i,j,heav_index,summ,temp[s];
- for(i=0;i<s;i++)
- {
- // printf("heaviest row %d\n",heaviest_row(s,0,s,a));
- heav_index = heaviest_row(s,0,s-i,a);//put heaviest row last!
- printf("\n\ndiaposone %d to %d,heaviest ros %d\n",i,s-i,heav_index);
- //swaps rows: heav_index & s-i-1
- swap_2_rows(s,a,heav_index,s-i-1);
- }
- //swap row max_index & row s-i-1
- }
- int heaviest_row(int s,int sta_row,int fin_row,int a[s][s])
- {
- int i,j,summ,max_summ,max_index;
- max_index= max_summ = 0;
- for(i=sta_row;i<fin_row;i++)//i-row
- {
- summ=0;
- for(j=0;j<s;j++)//summarasing the whole row
- {
- summ+=a[i][j];
- }
- if(summ>max_summ)
- {
- max_index = i;
- max_summ = summ;
- }
- }//end of i cycle
- return max_index;
- }
- void swap_2_rows(int s,int a[s][s],int ind_r1,int ind_r2)
- {
- int i,j,temp;
- printf("inside swap r1 %d, r2 %d\n",ind_r1,ind_r2);
- for(j=0;j<s;j++)
- {
- temp = a[ind_r1][j];
- a[ind_r1][j]=a[ind_r2][j];
- a[ind_r2][j]= temp;
- }
- printf("\nInside swap new array is:\n");
- pr_arr(s,a);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement