Форум программистов, компьютерный форум CyberForum.ru

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

Восстановить пароль Регистрация
Другие темы раздела
C++ Блок схемы по массивам http://www.cyberforum.ru/cpp-beginners/thread192463.html
Уважаемые форумчане. Нужна оченьсрочно помощь, вот в чём проблема. Имеется две задачи, одна на одномерный вторая на двемерный массив, нужно составить по ним блок-схемы и объяснить их поработав мол за компьютер. Если кто-то может помочь, помогите пожалуйста. Вот сами задачи: На одномерный массив: Задан целочисленный одномерный массив a из n элементов. Найти номер последнего максимального...
C++ Среднее арифметическое элементов массива помогите мне пжл написать функцию ,которая возвращает среднее арифметическое элементов массива http://www.cyberforum.ru/cpp-beginners/thread192456.html
C++ функция подсчета слов
Здравствуйте! Помгите исправить ошибку в функции подсчета слов оканчивающихся на символ Пркатически все варианты пробывал но ничего не получаеться когда добавляеш "space" 2х или больше между словами то программа начинает воспринимать пробел как вимвол Заранее спасибо! #include "stdafx.h" #include <iostream> using namespace std;
C++ Определить количество одинаковых букв
Помогите написать программу которая считывает текст из файла и определяет количество одинаковых букв ПО ПАРАМ слов в предложении. Например нам дано предложение: "Система управления базой данных...", В первой паре слов "система управления" 3 одинаковых буквы: и, е, а. И так дальше по парам слов... Пары слов считаются так: "Система управления", "базой данных" и т.д. (если не получиться так,...
C++ метод по добавлению нового объекта в массив объектов http://www.cyberforum.ru/cpp-beginners/thread192436.html
Как при помощи ссылок в java создать метод по добавлению нового объекта в массив объектов(например,-новый номер в справочник) ? что делать с длиной массива, ведь её никак не увеличишь?
C++ найти сумму Вычислить: y=-(1+x)^2+(1+x)^4/2-(1+x)^6/4.... ; (N слагаемых). void main() {int n,i,k=4,x,j=2,m,l; double sum=0,f=0; cout<<"vvedite n and x"; cin>>n>>x; f=-(1+x); l=1; подробнее

Показать сообщение отдельно
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 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);
}
 
Текущее время: 04:35. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru