1 Востаннє редагувалося Parsifal (21.08.2018 16:39:51)

Тема: Сортування двовимірного масиву. (На мові С++)

⦁    Заповнити двовимірний масив випадковими числами в діапазоні від -50 до 50.
Посортувати весь двовимірний масив по зростанню.
Розмір масиву 4 на 5.

2

Re: Сортування двовимірного масиву. (На мові С++)

Не бачу, чим можу допомогти - ви ж нічого не зробили.

Подякували: Parsifal, HetmanNet2

3 Востаннє редагувалося Parsifal (21.08.2018 17:06:04)

Re: Сортування двовимірного масиву. (На мові С++)

Неможу скинути код.(в [] має бути зміна)
Попередження! Цю помилку має бути виправлено перед відправленням повідомлення:
[] було відкрито всередині себе, що не дозволено

4

Re: Сортування двовимірного масиву. (На мові С++)

Скористайтеся тегом [ code ] (значок <> над полем введення).

Подякували: Parsifal1

5

Re: Сортування двовимірного масиву. (На мові С++)

Так, і уточніть - що значить "посортувати двовимірний масив". Одновимірний - то зрозуміло, а з двома вимірами є нюанси.

Подякували: Parsifal1

6 Востаннє редагувалося koala (21.08.2018 17:37:09)

Re: Сортування двовимірного масиву. (На мові С++)

В мене не так як потрібно працює код. Я [] замінив на <>.

#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");
}

7

Re: Сортування двовимірного масиву. (На мові С++)

https://dropmefiles.com/fwq4v
Ось я скинув там 2 завдання потрібно(3 незнаю ще не дивився на нього,1 зробив)

8 Востаннє редагувалося koala (21.08.2018 17:38:03)

Re: Сортування двовимірного масиву. (На мові С++)

Додав вам теги code.
Ну і чим же цей код вам недогодив? (ну, окрім переважно непотрібних коментарів)

Подякували: Parsifal1

9

Re: Сортування двовимірного масиву. (На мові С++)

Сортує не так як вказано в завдані.

10

Re: Сортування двовимірного масиву. (На мові С++)

Ви полінувалися скопіювати сюди завдання і розраховуєте, що инші не полінуються відкрити ваш файл, а тим більше знайти невідповідності у тому завданні та вашому коді?

Подякували: Parsifal1

11

Re: Сортування двовимірного масиву. (На мові С++)

Умову завдання я скопіював сюди а зображення незміг.

12

Re: Сортування двовимірного масиву. (На мові С++)

Треба не рядки посуртувати а від найменшого до найбільшого незважаючи на рядки і стовпчики щоб посуртовано було зростанням.

13

Re: Сортування двовимірного масиву. (На мові С++)

Ні, не скопіювали.
Ви бачите різницю між цими умовами? Я бачу. І я просив вас це уточнити.

Parsifal написав:

Посортувати весь двовимірний масив по зростанню.

Умова написав:

Посортувати кожен рядок масиву по зростанню методом сортування бульбашкою.

Подякували: Parsifal1

14

Re: Сортування двовимірного масиву. (На мові С++)

⦁    Заповнити двовимірний масив випадковими числами в діапазоні від -50 до 50.
Посортувати весь двовимірний масив по зростанню.
Розмір масиву 4 на 5.

15

Re: Сортування двовимірного масиву. (На мові С++)

Я пробував перетворити в одновимірний ,всеодно не виходить.

16

Re: Сортування двовимірного масиву. (На мові С++)

Ось код в коді.

#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");
}

17

Re: Сортування двовимірного масиву. (На мові С++)

Логічно - в одновимірному немає окремих рядків, тому кожен рядок посортувати не вийде.

Подякували: Parsifal1

18

Re: Сортування двовимірного масиву. (На мові С++)

Допоможіть будь ласка.

19

Re: Сортування двовимірного масиву. (На мові С++)

Компілятор використовую візуал студіо.

20

Re: Сортування двовимірного масиву. (На мові С++)

Ну, принаймні, ви вчитеся, а це вже краще, ніж у 90% новачків на цьому форумі.
Отже, вам треба посортувати кожен рядок - то і робіть цикл по рядках:

for(int row = 0; row < rows; ++row ) {
    /*а тут сортуйте бульбашкою одновимірні ar[row]*/
    /*якщо плутаєтеся в індексах, то робіть*/
    int *sub_array = ar[row];
    /*а тепер можете просто сортувати sub_array*/
}
Подякували: Parsifal1