Advertisement
TShiva

$20

Dec 29th, 2014
362
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.18 KB | None | 0 0
  1. #include <iostream>
  2. #include <math.h>
  3. #include <stdlib.h>
  4. #include <stdio.h>
  5.  
  6. using namespace std;
  7.  
  8.  
  9. //Nikita Gorbunov MPB-301-O
  10. /*Характеристикой столбца целочисленной матрицы NxN назовем сумму
  11. его отрицательных нечетных элементов. Переставляя столбцы заданной
  12. матрицы, расположить их в соответствии с ростом характеристик.
  13. */
  14. void Swap(int arr[], int pos1, int pos2)
  15. {
  16.     int tmp;
  17.     tmp = arr[pos1];
  18.     arr[pos1] = arr[pos2];
  19.     arr[pos2] = tmp;
  20. }
  21. void BubbleSort(int arr[],int index_arr[],int num2)
  22. {
  23.     int i, j;
  24.     for(i = 0; i < num2 -1; ++i)
  25.         for(j = 0; j < num2 - i-1; ++j)
  26.             if (arr[j] > arr[j + 1])
  27.             {  Swap(arr, j , j + 1);
  28.     Swap(index_arr,j,j+1);  
  29.     }
  30. }
  31.  
  32. void RandArray(int** My_arr,int num1,int num2){
  33.     int koko=0;
  34.     for (int i = 0; i < num1; i++)
  35.     {
  36.         for (int j = 0; j < num2; j++)
  37.         {
  38.             cin>>koko;
  39.             //My_arr[j][i]=rand() % 100 - 50;//Заполняем массив рандомной фигней
  40.             My_arr[j][i]= koko;
  41.         }
  42.     }
  43.     cout<<endl;
  44.     return;
  45. }
  46.  
  47. void PrintArray(int** My_arr,int num1,int num2){
  48.     for (int i = 0; i < num1; i++)
  49.     {
  50.         for (int j = 0; j < num2; j++)
  51.         {
  52.             cout<<My_arr[j][i]<<"  ";//выводим массив
  53.         }
  54.         cout<<"\n";
  55.     }
  56.     cout<<"\n";
  57.     return;
  58. }
  59.  
  60. void catch_sum(int** My_arr,int count_arr[],int num1,int num2) {
  61.  
  62.     int counter=0;
  63.  
  64.     for (int i = 0; i < num1; i++)
  65.     {
  66.  
  67.         for(int j=0; j<num2; j++)
  68.         {
  69.             if((My_arr[i][j]<0) && (!(My_arr[i][j]%2 == 0))){   counter+=My_arr[i][j];}//берем нужные нам элементы и суммируем их
  70.  
  71.         }
  72.  
  73.         count_arr[i]=counter;//заполняем новый массив,массив сумм
  74.         counter=0;
  75.  
  76.     }
  77. }
  78.  
  79. int** swap_rows(int** My_arr,int num1,int num2){
  80.     int** New_My_arr = new int *[num1];
  81.  
  82.     int *count_arr = new int[num2]; //создаем массив сумм
  83.  
  84.     catch_sum(My_arr,count_arr,num1,num2);
  85.  
  86.     int *index_arr = new int[num2];//создаем массив индексов
  87.     for (int j=0;j<num2;j++){index_arr[j]=j;}
  88.  
  89.  
  90.     BubbleSort(count_arr,index_arr,num2);//сортируем массив сумм
  91.     cout<< "Print the sum array"<<endl;
  92.     for (int j = 0;j<num2;j++){cout << count_arr[j]<<" ";}//выводим массив сумм
  93.     cout<<endl;
  94.     cout<< "Print the sort index array"<<endl;
  95.     for (int j = 0;j<num2;j++){cout << index_arr[j]<<" "; }
  96.  
  97.     cout<<"\n";
  98.  
  99.  
  100.     //int** New_My_arr = new int *[num1];
  101.     for (int i = 0; i < num1; i++){ New_My_arr[i] = new int [num1];     }
  102.  
  103.  
  104.     for (int i = 0; i < num1; i++){
  105.         for (int j = 0; j < num2; j++){
  106.             New_My_arr[i][j]=My_arr[index_arr[i]][j];
  107.         }
  108.     }
  109.  
  110.     cout<<"\n";
  111.  
  112.  
  113.     /*  for (int i = 0; i < num1; i++){
  114.     delete[] New_My_arr[i];//все это дело удаляем
  115.     }
  116.     delete[] New_My_arr;*/
  117.     delete[] count_arr;
  118.     delete[] index_arr;
  119.  
  120.     return New_My_arr;
  121. }
  122.  
  123.  
  124. int main(int argcount, char** argvalues)
  125. {
  126.  
  127.     cout << argvalues[0] << endl;
  128.     if(argcount > 1) {
  129.         cout << argvalues[1] << endl;
  130.     }
  131.  
  132.     int ok=0;//просто переменная для меню
  133.     while(ok!=2){
  134.         system("cls");
  135.         cout<< "Enter the number"<<endl;
  136.         cout<< "1 - Begin"<<endl;
  137.         cout<< "2 - end"<<endl;
  138.         cin>>ok;
  139.  
  140.         if(ok!=2){
  141.             system("cls");
  142.  
  143.  
  144.  
  145.             int num1,num2; // размер массива
  146.             cout << "Enter integer value";
  147.             cin >> num1  ; // получение от пользователя размера массива
  148.             num2=num1;
  149.  
  150.             int** My_arr = new int *[num1];//создание изначального массива
  151.             for (int i = 0; i < num1; i++){
  152.                 My_arr[i] = new int [num1];
  153.             }
  154.             cout << "Print base Array"<<endl;
  155.             RandArray(My_arr,num1,num2);
  156.             PrintArray(My_arr,num1,num2);    
  157.  
  158.             int** New_My_arr = swap_rows(My_arr,num1,num2);
  159.             PrintArray(New_My_arr,num1,num2);
  160.  
  161.             for (int i = 0; i < num1; i++){
  162.                 delete[] My_arr[i];//все это дело удаляем
  163.             }
  164.  
  165.             for (int i = 0; i < num1; i++){
  166.                 delete[] New_My_arr[i];//все это дело удаляем
  167.             }
  168.             delete[] New_My_arr;
  169.             delete[] My_arr;
  170.  
  171.             system("PAUSE");
  172.         }        
  173.     }
  174.     return 0;
  175.  
  176.  
  177.  
  178. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement