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

Напишите функцию для обмена строк двумерного массива и с ее помощью отсортируйте массив с элементами третьего столбика - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Найти максимальный элемент в массиве http://www.cyberforum.ru/cpp-beginners/thread202354.html
Все числа в массиве, равные максимальному числу, переставить после первого максимального. т.е 1.найти максимальный элемент в массиве 2.поставить максимальный элемент впереди а остальные элементы после максимального
C++ Динамический массив Пожалуйста, помогите с программой. Нужно создать динамический массив, найти количество отрицательных элементов массива. Затем найти сумму модулей элементов массива, расположенных после минимального по модулю элемента. Потом заменить все отрицательные элементы массива их квадратами и упорядочить элементы массива по возрастанию. http://www.cyberforum.ru/cpp-beginners/thread202353.html
класс «Треугольник» C++
Задание 1. Создайте класс «Треугольник», данными которого является длины отрезков, составляющих стороны треугольника. Класс имеет конструктор по умолчанию, конструктор равностороннего треугольника и конструктор произвольного треугольника. Определите методы для ввода треугольника, вывода на экран и определения площади и периметра треугольника. Проверьте условие существования треугольника....
Матрица,нужен исходник C++
Путем перестановки элементов квадратной действительной матрицы достичь того, чтобы ее максимальный элемент находился в левому верхнему углу, следующий за величиной - в позиции (2,2), следующий за величиной - в позиции (3,3) и .... заполнив таким образом всю главную диагональ
C++ Острова в море http://www.cyberforum.ru/cpp-beginners/thread202307.html
Помогите пожалуйста сделать эту прогу, либо дайте подсказки, как можно сделать. Нужно сделать прогу с помощь ю перебора с возвратом. Задача чем-то похожа на японский кроссворд. Международная олимпиада по информатике 1992 года г. Бонн, Германия, 12—21 июля 1992 г. ЗАДАЧА ПЕРВОГО ТУРА "ОСТРОВА В МОРЕ"
C++ Найти количество столбцов матрицы, не содержащих нулевого элемента Дано целочисленную прямоугольную матрицу 1). Количество столбцов, что не содержащих нулевого элемента ; 2). Расположить строки матрицы по возрастанию суммы положительных четных элементов строки. подробнее

Показать сообщение отдельно
Vladimir.
155 / 155 / 10
Регистрация: 24.11.2009
Сообщений: 375
03.12.2010, 07:15     Напишите функцию для обмена строк двумерного массива и с ее помощью отсортируйте массив с элементами третьего столбика
Видимо, имеется ввиду сортировка по элементам третьего столбца...
Вспоминаем, что в си двумерный массив - массив массивов, с другой стороны имя массива является указателем на первый элемент. Значит: если нужно обменять две строки, то вовсе не обязательно менять значения элементов строк массива, можно просто поменять указатели на эти строки. Естественно при этом двумерный массив должен быть массивом строк.
решение
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
#include<iostream>
//для генерации случайного массива:
#include<time.h>
#include<stdlib.h>
//прототип нашей функции:
void my_swap(double* &a, double* &b);
 
 
int main(void){
 
//Создадим массив:
    double** matrix;
    int num_of_row = 8;
    int num_of_col = 6; //не меньше трёх
 
    matrix = new double* [num_of_row];
        for (int i=0; i<num_of_row; i++)
                matrix[i]= new double [num_of_col];
//заполним его случайными числами от 1 до 100
    srand(time(NULL));
    for (int i=0; i<num_of_row;i++)
        for (int j=0;j<num_of_col;j++)
            matrix[i][j] = rand()%100 + 1;
// покажем до сортировки:
    for(int i=0;i<num_of_row;i++){
        for(int j=0;j<num_of_col;j++) 
            std::cout<<matrix[i][j]<<"\t";
        std::cout<<std::endl;
    }
std::cout<<std::endl;
 
// собственно сортировка(ради разнообразия "гномья") 
// c помощью нашей функции my_swap:
    for (int i = 1;i < num_of_row;){
        if (matrix[i-1][2]>matrix[i][2]){
            my_swap(matrix[i-1],matrix[i]);
            i--;
        }
        else i++;
        
        if(i == 0) i++;
            
    }
    //покажем после сортировки:
    for(int i=0;i<num_of_row;i++){
        for(int j=0;j<num_of_col;j++) 
            std::cout<<matrix[i][j]<<"\t";
        std::cout<<std::endl;
    }       
 
//Освобождаем память:
    for (int i=0; i<num_of_row; i++)
        delete[] matrix[i];
    delete[] matrix;
 
return 0;   
}
 
void my_swap(double* &a, double* &b){
    double* tmp = a;
    a = b;
    b = tmp;
}
 
Текущее время: 23:49. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru