Переписать все положительные элементы матрицы
С(6,8) в вектор А. используя метод простой сортировки, расположить их по возрастанию.Результат работы программы показан ниже:
#include "stdafx.h"
#include <iostream>
#include <iomanip>
using namespace std;
int main(int argc, char* argv[])
{
srand(time(NULL)); // засеиваем генератор случайных чисел значением времени
int matrixC[6][8]; // объявление матрицы С
for (int line_counter = 0; line_counter < 6; line_counter++)
{
for (int column_counter = 0; column_counter < 8; column_counter++)
{
matrixC[line_counter][column_counter] = rand() % 100 - rand() % 100; // заполняем двумерный массив случайными числами [-99;99]
cout << setw(3) <<matrixC[line_counter][column_counter] << " ";
}
cout << endl;
}
cout << "======================================" << endl;
int min = 100; // самое максимальное может быть 99, поэтому переменную min инициализируем значением 100
int vectorA[48], // вектор положительных отсортированных чисел
line_min, // номер строки, в которой найдено минимальное значение
column_min, // номер столбца, в котором найдено минимальное значение
counterA = 0; // счётчик элементов вектора положительных отсортированных чисел
while (true) // цикл поиска и сортировки положительных чисел из двумерного массива
{
////////////////////////поиск минимального числа//////////////////////////////////
for (int line_counter = 0; line_counter < 6; line_counter++)
for (int column_counter = 0; column_counter < 8; column_counter++)
if ((matrixC[line_counter][column_counter] < min) && (matrixC[line_counter][column_counter] >= 0))
{
min = matrixC[line_counter][column_counter]; // минимальное в двумерном массиве
line_min = line_counter; // номер строки
column_min = column_counter; // номер столбца
}
//////////////////////////////////////////////////////////////////////////////////
if (min != 100) // если ещё не все значения просмотрены
{
vectorA[counterA] = min; // положить минимальное значение в вектор
matrixC[line_min][column_min] = -1; // в двумерном массиве на место минимального элемента ставим -1
counterA++; // увеличиваем счётчик элементов вектора положительных отсортированных чисел на 1
min = 100; // минимальное присваеваем 100
} else break; // иначе выход из цикла while
}
// печать элементов вектора
for (int counter = 0; counter < counterA; counter++)
{
cout << vectorA[counter] << " ";
}
cout << endl;
system("pause");
return 0;
}
CppStudio.com
-3 39 76 -24 -62 -56 8 -90 -83 54 41 -77 -10 -5 -48 52 24 -48 -82 34 -31 52 68 63 -54 -97 -44 9 36 0 95 -12 91 -33 68 17 27 9 -20 -20 -12 17 -44 41 -19 32 -10 -5 ====================================== 0 8 9 9 17 17 24 27 32 34 36 39 41 41 52 52 54 63 68 68 76 91 95
Комментарии
Cloud_Mind
#include "stdafx.h" #include<iostream> #include<vector> #include<time.h> #include<algorithm> #include<iomanip> #include<clocale> using namespace std; void main() { setlocale(LC_CTYPE, "rus"); srand(time(NULL)); vector<int>my_vector; int a, b; cout << "Введите кол-во строк матрицы: "; cin >> a; cout << "Введите кол-во столбцов матрицы: "; cin >> b; int **mas = new int*[a]; for (int i = 0; i < a; i++) { mas[i] = new int[b]; } for (int i = 0; i < a; i++) { for (int j = 0; j < b; j++) { mas[i][j] = rand() % 21 + (-10); cout << setw(3) << mas[i][j] << " "; if (mas[i][j] >= 0) { my_vector.push_back(mas[i][j]); } } cout << endl; } for (int i = 0; i < my_vector.size() - 1; i++) { for (int j = i + 1; j < my_vector.size(); j++) { if (my_vector[i] > my_vector[j]) { swap(my_vector[i], my_vector[j]); } } } for (int i = 0; i < my_vector.size(); i++) { cout << my_vector[i] << " "; } for (int i = 0; i < a; i++) { delete[]mas[i]; } system("pause"); }IrishSilvan
//============================================================================ // Name : main.cpp // Author : IrishSilvan // Version : 1.0.0.0 // Copyright : IrishSilvan // Description : Sorting Matrix //============================================================================ #include <cstdlib> #include <iostream> #include <vector> #include <iomanip> using namespace std; void sortMatrix(vector<int> *unsortMatrix); int main() { vector<vector<int> > matrix(6, vector<int>(8, 2)); srand((unsigned int) time(NULL)); for(int i = 0; i < 6; ++i) { for(int j = 0; j < 8; ++j) { int k = -10 + (rand() % 20); matrix[i][j] = k; cout << setw(4) << matrix[i][j]; } cout << endl; } vector<int> newVector(0); for(int i = 0; i < 6; i++) { for(int j = 0; j < 8; j++) { if(matrix[i][j] > 0) { newVector.push_back(matrix[i][j]); } } } for(int i = 0; i < newVector.size(); i++) { cout << " " << newVector[i]; } sortMatrix(&newVector); cout << endl; for(int i = 0; i < newVector.size(); i++) { cout << " " << newVector[i]; } cout << endl; return 0; } void sortMatrix(vector<int> *unsortVector) { int minElement; int count = unsortVector->size(); int pos = 0; vector<int> tempVector(0); while(count > 0){ for (int i = 0; i < unsortVector->size(); i++) { if (i == 0) { minElement = unsortVector->at(i); pos = 0; } else if (minElement >= unsortVector->at(i)) { minElement = unsortVector->at(i); pos = i; } if(i == unsortVector->size() - 1) { tempVector.push_back(minElement); unsortVector->erase(unsortVector->begin() + pos); } } count--; } tempVector.swap(*unsortVector); }Adam1983
#include <conio.h> #include <iomanip> #include <iostream> #include <ctime> #include <vector> using namespace std; int main(int argc, char** argv) { setlocale (LC_ALL, "russian"); srand(time(0)); int arr[6][8]; //заполняем массив случайными значениями и выводим на экран for (int i(0); i<6; i++) { for(int j(0); j<8; j++) { arr[i][j]=rand()%20-5; cout << setw(4) << arr[i][j]; } cout << endl; } vector<int> A(48); int z(0); //копируем данные массива в вектор for (int i(0); i<6; i++) for(int j(0); j<8; j++) { A[z]= arr[i][j]; z++; } //вывод результата на экран cout << "\n\n========================ПОСЛЕ ПЕРЕВОДА МАТРИЦЫ В ВЕКТОР=========================\n\n"; for (int i(0); i<48; i++) cout <<setw(4)<< A[i]; cout << "\n\n==================ПОСЛЕ СОРТИРОВКИ ПО ВОЗРАСТАНИЮ===============================\n\n";; //сортировка пузырьковым методом и вывод на экран for (int i(47); i>=0; i--) for(int j(0); j<=i; j++) { if (A[i]<A[j]) swap (A[i],A[j]); } for (int i(0); i<48; i++) cout <<setw(4)<< A[i]; _getch(); return 0; }petruska
мой вариант
#include "stdafx.h" // here all libra int _tmain(int argc, _TCHAR* argv[]) { srand(time(NULL)); const int size1=6; const int size2=8; // create dynamic array for save data and time int **pArray=new int *[size1]; for (int i=0; i <size1; i++) pArray[i]=new int[size2]; // random init array and show on cycle cout << "Your random array: " <<endl; for (int i=0; i < size1; i++) { for (int j=0; j < size2; j++) { pArray[i][j]=(rand() % 100) -50; cout <<setw(4) << pArray[i][j]; } cout <<endl; } vector <int> A(0); // creat vector //if element >0 paste on array for (int i=0; i < size1; i++) { for (int j=0; j < size2; j++) { if ( pArray[i][j] > 0 ) A.push_back(pArray[i][j]); } } cout << endl << "_________________________" <<"Sort array:" <<endl; sort(A.begin(),A.end()); // sort vector for (int i=0; i < A.size(); i++) //show vector cout <<A[i]<<" "; cout <<endl; // delete array for(int i=0;i<size1;i++) delete []pArray[i]; return 0; }Мгер Цолакян
#include <iostream> #include <iomanip> #include <time.h> using namespace std; int main() { setlocale(LC_ALL, "rus"); srand(time(NULL)); const int n = 6, m = 8; int mas[n][m]; int q = 0; for (int i = 0; i < n; i++) { for (int j = 0; j < m; j++) { mas[i][j] = rand() % 100 - rand() % 100; } } for (int i = 0; i < n; i++) { for (int j = 0; j < m; j++) { cout<<setw(3)<<mas[i][j]<<" "; } cout << endl; } for (int i = 0; i < n; i++) { for (int j = 0; j < m; j++) { if (mas[i][j]>0) { q++; } } } int *positive = new int[q]; q = 0; for (int i = 0; i < n; i++) { for (int j = 0; j < m; j++) { if (mas[i][j]>=0) { positive[q++] = mas[i][j]; } } } for (int i = 0; i < q-1; i++) { for (int j = 0; j < q-1; j++) { if (positive[j]>positive[j + 1]) { swap(positive[j], positive[j + 1]); } } } cout << endl; for (int i = 0; i < q; i++) { cout << setw(1) << positive[i] << " "; } delete[] positive; system("pause > void"); }Nedwid
Вот мое решение с использованием <vector>
// Going.cpp : Defines the entry point for the console application. // #include "stdafx.h" #include <iostream> #include <iomanip> #include <Windows.h> #include <iterator> #include <vector> #include <algorithm> using namespace std; void main() { setlocale(LC_ALL, "rus"); // корректное отображение Кириллицы SetConsoleCP(1251);// установка кодовой страницы win-cp 1251 в поток ввода SetConsoleOutputCP(1251); // установка кодовой страницы win-cp 1251 в поток вывода srand(time(NULL)); vector<int> A; int **ptrC=new int*[6]; //Формирование динамического массива for (int i=0;i<6; i++) ptrC[i]=new int[8]; //Заполнение динамического массива for (int i=0;i<6; i++) { for (int j=0;j<8; j++) { ptrC[i][j]=rand()%100-rand()%100; cout<<ptrC[i][j]<<" "; if (ptrC[i][j]>0) { A.push_back(ptrC[i][j]); } } cout<<endl; } copy(A.begin(), A.end(), ostream_iterator<int>(std::cout, " ")); //вывод содержимиого вектора cout<<endl; sort(A.begin(), A.end());//сортировка содержимиого вектора copy(A.begin(), A.end(), ostream_iterator<int>(std::cout, " "));//вывод содержимиого вектора cout<<endl; system("pause"); }