Тема: Сортування двовимірного масиву. (На мові С++)
⦁ Заповнити двовимірний масив випадковими числами в діапазоні від -50 до 50.
Посортувати весь двовимірний масив по зростанню.
Розмір масиву 4 на 5.
Ви не увійшли. Будь ласка, увійдіть або зареєструйтесь.
Ласкаво просимо вас на україномовний форум з програмування, веб-дизайну, SEO та всього пов'язаного з інтернетом та комп'ютерами.
Будемо вдячні, якщо ви поділитись посиланням на Replace.org.ua на інших ресурсах.
Для того щоб створювати теми та надсилати повідомлення вам потрібно Зареєструватись.
Український форум програмістів → C++ → Сортування двовимірного масиву. (На мові С++)
Для відправлення відповіді ви повинні увійти або зареєструватися
⦁ Заповнити двовимірний масив випадковими числами в діапазоні від -50 до 50.
Посортувати весь двовимірний масив по зростанню.
Розмір масиву 4 на 5.
Неможу скинути код.(в [] має бути зміна)
Попередження! Цю помилку має бути виправлено перед відправленням повідомлення:
[] було відкрито всередині себе, що не дозволено
Скористайтеся тегом [ code ] (значок <> над полем введення).
Так, і уточніть - що значить "посортувати двовимірний масив". Одновимірний - то зрозуміло, а з двома вимірами є нюанси.
В мене не так як потрібно працює код. Я [] замінив на <>.
#include <iostream>/*підключаю бібліотеки*/
#include <time.h>
#include <iomanip>
using namespace std;
void main() {
int tmp;/*створюю тимчасову зміну*/
const int rows = 4, cols = 5;/*створюю константу*/
int ar[rows][cols];/*створюю цикл*/
srand(time(0));/*створюю точку відліку для генеруваня рендомних чисел*/
cout << "rows: " << rows << "\ncols: " << cols << "\n";
for (int i = 0; i < rows; i++) {/*заповнюю масив рендомними числами*/
for (int j = 0; j < cols; j++) {
ar<i><j> = rand() % 101 - 50;
}
}
for (int i = 0; i < rows; i++) {/*виводжу на екран початковий масив*/
for (int j = 0; j < cols; j++) {
cout << setw(5) << ar<i><j>;
}
cout << "\n";
}
cout << "\n";
for (int a = 0; a < rows; a++) {/*сортую масив*/
for (int i = 0; i < rows; i++) {
for (int j = cols - 1; j > 0; j--) {
if (true) {
if (ar <i - 1><j> > ar<i><j + 1>) {
tmp = ar<i - 1><j>;
ar<i - 1><j> = ar<i><j + 1>;
ar<i><j + 1> = tmp;
}
}
if (ar<i><j - 1> > ar<i><j>) {
tmp = ar<i><j>;
ar<i><j> = ar<i><j - 1>;
ar<i><j - 1> = tmp;
}
}
}
}
for (int i = 0; i < rows; i++) {/*виводжу на екран посортований масив*/
for (int j = 0; j < cols; j++) {
cout << setw(5) << ar<i><j>;
}
cout << "\n";
}
system("pause");
}
https://dropmefiles.com/fwq4v
Ось я скинув там 2 завдання потрібно(3 незнаю ще не дивився на нього,1 зробив)
Додав вам теги code.
Ну і чим же цей код вам недогодив? (ну, окрім переважно непотрібних коментарів)
Сортує не так як вказано в завдані.
Ви полінувалися скопіювати сюди завдання і розраховуєте, що инші не полінуються відкрити ваш файл, а тим більше знайти невідповідності у тому завданні та вашому коді?
Умову завдання я скопіював сюди а зображення незміг.
Треба не рядки посуртувати а від найменшого до найбільшого незважаючи на рядки і стовпчики щоб посуртовано було зростанням.
Ні, не скопіювали.
Ви бачите різницю між цими умовами? Я бачу. І я просив вас це уточнити.
Посортувати весь двовимірний масив по зростанню.
Посортувати кожен рядок масиву по зростанню методом сортування бульбашкою.
⦁ Заповнити двовимірний масив випадковими числами в діапазоні від -50 до 50.
Посортувати весь двовимірний масив по зростанню.
Розмір масиву 4 на 5.
Я пробував перетворити в одновимірний ,всеодно не виходить.
Ось код в коді.
#include <iostream>/*підключаю бібліотеки*/
#include <time.h>
#include <iomanip>
using namespace std;
void main() {
int tmp;/*створюю тимчасову зміну*/
const int rows = 4, cols = 5;/*створюю константу*/
int ar[rows][cols];/*створюю цикл*/
srand(time(0));/*створюю точку відліку для генеруваня рендомних чисел*/
cout << "rows: " << rows << "\ncols: " << cols << "\n";
for (int i = 0; i < rows; i++) {/*заповнюю масив рендомними числами*/
for (int j = 0; j < cols; j++) {
ar[i][j] = rand() % 101 - 50;
}
}
for (int i = 0; i < rows; i++) {/*виводжу на екран початковий масив*/
for (int j = 0; j < cols; j++) {
cout << setw(5) << ar[i][j];
}
cout << "\n";
}
cout << "\n";
for (int a = 0; a < rows; a++) {/*сортую масив*/
for (int i = 0; i < rows; i++) {
for (int j = cols - 1; j > 0; j--) {
if (ar[i - 1][j] > ar[i][j + 1]) {
tmp = ar[i - 1][j];
ar[i - 1][j] = ar[i][j + 1];
ar[i][j + 1] = tmp;
}
if (ar[i][j - 1] > ar[i][j]) {
tmp = ar[i][j];
ar[i][j] = ar[i][j - 1];
ar[i][j - 1] = tmp;
}
}
}
}
for (int i = 0; i < rows; i++) {/*виводжу на екран посортований масив*/
for (int j = 0; j < cols; j++) {
cout << setw(5) << ar[i][j];
}
cout << "\n";
}
system("pause");
}
Логічно - в одновимірному немає окремих рядків, тому кожен рядок посортувати не вийде.
Компілятор використовую візуал студіо.
Ну, принаймні, ви вчитеся, а це вже краще, ніж у 90% новачків на цьому форумі.
Отже, вам треба посортувати кожен рядок - то і робіть цикл по рядках:
for(int row = 0; row < rows; ++row ) {
/*а тут сортуйте бульбашкою одновимірні ar[row]*/
/*якщо плутаєтеся в індексах, то робіть*/
int *sub_array = ar[row];
/*а тепер можете просто сортувати sub_array*/
}
Для відправлення відповіді ви повинні увійти або зареєструватися