Форум программистов, компьютерный форум, киберфорум
Наши страницы

Поменять местами строки в массиве - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Блок схемы по массивам http://www.cyberforum.ru/cpp-beginners/thread192463.html
Уважаемые форумчане. Нужна оченьсрочно помощь, вот в чём проблема. Имеется две задачи, одна на одномерный вторая на двемерный массив, нужно составить по ним блок-схемы и объяснить их поработав мол за...
C++ Среднее арифметическое элементов массива помогите мне пжл написать функцию ,которая возвращает среднее арифметическое элементов массива http://www.cyberforum.ru/cpp-beginners/thread192456.html
C++ функция подсчета слов
Здравствуйте! Помгите исправить ошибку в функции подсчета слов оканчивающихся на символ Пркатически все варианты пробывал но ничего не получаеться когда добавляеш "space" 2х или больше между...
C++ Определить количество одинаковых букв
Помогите написать программу которая считывает текст из файла и определяет количество одинаковых букв ПО ПАРАМ слов в предложении. Например нам дано предложение: "Система управления базой...
C++ метод по добавлению нового объекта в массив объектов http://www.cyberforum.ru/cpp-beginners/thread192436.html
Как при помощи ссылок в java создать метод по добавлению нового объекта в массив объектов(например,-новый номер в справочник) ? что делать с длиной массива, ведь её никак не увеличишь?
C++ Циклы с постусловием и с предусловим Дано натуральное число. Верно ли, что в его десятичной записи есть шесть единиц подряд? У меня вообще мозг не пашет как это сделать... Пожалуйста! Помогите как можно скорее! Прошу! :cry: подробнее

Показать сообщение отдельно
silent_1991
Эксперт С++
4989 / 3046 / 149
Регистрация: 11.11.2009
Сообщений: 7,028
Завершенные тесты: 1
17.11.2010, 04:44
Вам надо к массиву применить обычную пузырьковую сортировку с двумя нюансами:
1. В обычном пузырьке сравниваются два соседних элемента массива (т.е. if (a[i - 1] > a[i])), вам же надо написать функцию поиска минимума в строке двумерного массива и сравнивать как if (min(a[i - 1] > min(a[i]))).
2. В пузырьке происходит обмен элементов массива обычным, всем известным способом, через темповую переменную. Вам же надо написать функцию, которая обменивает элементы двух строк массива (по сути тот же способ, через темп, но запускается в цикле для всех элементов строки) и в самом пузырьке вместо обмена элементов массива между собой вызывать эту функцию.

Добавлено через 17 минут
В общем-то вот...

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
#include <iostream>
#include <iomanip>
 
double min(double *a, int M);
void swap(double *a1, double *a2, int M);
void sort(double **matrix, int N, int M);
 
int main()
{
    double **matrix;
    int N, M;
 
    std::cout << "Enter N: ";
    std::cin >> N;
    std::cout << "Enter M: ";
    std::cin >> M;
 
    matrix = new double *[N];
 
    for (int i = 0; i < N; i++)
        matrix[i] = new double [M];
    
    for (int i = 0; i < N; i++)
    {
        for (int j = 0; j < M; j++)
        {
            std::cout << "matrix[" << i << "][" << j << "] = ";
            std::cin >> matrix[i][j];
        }
    }
 
    std::cout << std::endl << std::endl << "Before sorting:" << std::endl << std::endl;
 
    for (int i = 0; i < N; i++)
    {
        for (int j = 0; j < M; j++)
            std::cout << std::setw(3) << matrix[i][j] << " ";
 
        std::cout << std::endl;
    }
 
    sort(matrix, N, M);
 
    std::cout << std::endl << std::endl << "After sorting:" << std::endl << std::endl;
 
    for (int i = 0; i < N; i++)
    {
        for (int j = 0; j < M; j++)
            std::cout << std::setw(3) << matrix[i][j] << " ";
 
        std::cout << std::endl;
    }
 
    for (int i = 0; i < N; i++)
        delete [] matrix[i];
 
    delete [] matrix;
 
    std::cin.get();
    return 0;
}
 
double min(double *a, int M)
{
    double m = a[0];
 
    for (int i = 0; i < M; i++)
        if (m > a[i])
            m = a[i];
 
    return m;
}
 
void swap(double *a1, double *a2, int M)
{
    for (int i = 0; i < M; i++)
    {
        double temp = a1[i];
        a1[i] = a2[i];
        a2[i] = temp;
    }
}
 
void sort(double **matrix, int N, int M)
{
    for (int i = 0; i < N; i++)
        for (int j = N - 1; j > i; j--)
            if (min(matrix[j - 1], M) > min(matrix[j], M))
                swap(matrix[j - 1], matrix[j], M);
}
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.