Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <math.h>
- #include <stdlib.h>
- #include <stdio.h>
- using namespace std;
- //Nikita Gorbunov MPB-301-O
- /*Характеристикой столбца целочисленной матрицы NxN назовем сумму
- его отрицательных нечетных элементов. Переставляя столбцы заданной
- матрицы, расположить их в соответствии с ростом характеристик.
- */
- void Swap(int arr[], int pos1, int pos2)
- {
- int tmp;
- tmp = arr[pos1];
- arr[pos1] = arr[pos2];
- arr[pos2] = tmp;
- }
- void BubbleSort(int arr[],int index_arr[],int num2)
- {
- int i, j;
- for(i = 0; i < num2 -1; ++i)
- for(j = 0; j < num2 - i-1; ++j)
- if (arr[j] > arr[j + 1])
- { Swap(arr, j , j + 1);
- Swap(index_arr,j,j+1);
- }
- }
- void RandArray(int** My_arr,int num1,int num2){
- int koko=0;
- for (int i = 0; i < num1; i++)
- {
- for (int j = 0; j < num2; j++)
- {
- cin>>koko;
- //My_arr[j][i]=rand() % 100 - 50;//Заполняем массив рандомной фигней
- My_arr[j][i]= koko;
- }
- }
- cout<<endl;
- return;
- }
- void PrintArray(int** My_arr,int num1,int num2){
- for (int i = 0; i < num1; i++)
- {
- for (int j = 0; j < num2; j++)
- {
- cout<<My_arr[j][i]<<" ";//выводим массив
- }
- cout<<"\n";
- }
- cout<<"\n";
- return;
- }
- void catch_sum(int** My_arr,int count_arr[],int num1,int num2) {
- int counter=0;
- for (int i = 0; i < num1; i++)
- {
- for(int j=0; j<num2; j++)
- {
- if((My_arr[i][j]<0) && (!(My_arr[i][j]%2 == 0))){ counter+=My_arr[i][j];}//берем нужные нам элементы и суммируем их
- }
- count_arr[i]=counter;//заполняем новый массив,массив сумм
- counter=0;
- }
- }
- int** swap_rows(int** My_arr,int num1,int num2){
- int** New_My_arr = new int *[num1];
- int *count_arr = new int[num2]; //создаем массив сумм
- catch_sum(My_arr,count_arr,num1,num2);
- int *index_arr = new int[num2];//создаем массив индексов
- for (int j=0;j<num2;j++){index_arr[j]=j;}
- BubbleSort(count_arr,index_arr,num2);//сортируем массив сумм
- cout<< "Print the sum array"<<endl;
- for (int j = 0;j<num2;j++){cout << count_arr[j]<<" ";}//выводим массив сумм
- cout<<endl;
- cout<< "Print the sort index array"<<endl;
- for (int j = 0;j<num2;j++){cout << index_arr[j]<<" "; }
- cout<<"\n";
- //int** New_My_arr = new int *[num1];
- for (int i = 0; i < num1; i++){ New_My_arr[i] = new int [num1]; }
- for (int i = 0; i < num1; i++){
- for (int j = 0; j < num2; j++){
- New_My_arr[i][j]=My_arr[index_arr[i]][j];
- }
- }
- cout<<"\n";
- /* for (int i = 0; i < num1; i++){
- delete[] New_My_arr[i];//все это дело удаляем
- }
- delete[] New_My_arr;*/
- delete[] count_arr;
- delete[] index_arr;
- return New_My_arr;
- }
- int main(int argcount, char** argvalues)
- {
- cout << argvalues[0] << endl;
- if(argcount > 1) {
- cout << argvalues[1] << endl;
- }
- int ok=0;//просто переменная для меню
- while(ok!=2){
- system("cls");
- cout<< "Enter the number"<<endl;
- cout<< "1 - Begin"<<endl;
- cout<< "2 - end"<<endl;
- cin>>ok;
- if(ok!=2){
- system("cls");
- int num1,num2; // размер массива
- cout << "Enter integer value";
- cin >> num1 ; // получение от пользователя размера массива
- num2=num1;
- int** My_arr = new int *[num1];//создание изначального массива
- for (int i = 0; i < num1; i++){
- My_arr[i] = new int [num1];
- }
- cout << "Print base Array"<<endl;
- RandArray(My_arr,num1,num2);
- PrintArray(My_arr,num1,num2);
- int** New_My_arr = swap_rows(My_arr,num1,num2);
- PrintArray(New_My_arr,num1,num2);
- for (int i = 0; i < num1; i++){
- delete[] My_arr[i];//все это дело удаляем
- }
- for (int i = 0; i < num1; i++){
- delete[] New_My_arr[i];//все это дело удаляем
- }
- delete[] New_My_arr;
- delete[] My_arr;
- system("PAUSE");
- }
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement