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

Сортировка элементов массива размерности n в порядке возрастания - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 22, средняя оценка - 4.91
kukhtikov
2 / 2 / 0
Регистрация: 16.12.2012
Сообщений: 97
16.12.2012, 09:28     Сортировка элементов массива размерности n в порядке возрастания #1
1). Разработать функцию для сортировки элементов одномерного целочисленного массива размерности n в порядке возрастания. С использованием данной функции для матрицы размерности n х m (n и m вводится с клавиатуры, элементы матрицы заполняются с помощью генератора псевдослучайных чисел) отсортировать строки матрицы, имеющие нечетные индексы. Вывести на печать исходную матрицу и матрицу после сортировки.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.12.2012, 09:28     Сортировка элементов массива размерности n в порядке возрастания
Посмотрите здесь:

C++ Вывод элементов массива в порядке возрастания
Отрицательные элементы массива А(N) переставить в начало массива и расположить их в порядке возрастания C++
Сортировка 3 чисел в порядке возрастания C++
C++ Сортировка 3-х значных чисел в порядке возрастания
Первые десять элементов массива М(30) отсортировать в порядке возрастания, а остальные в порядке убывания C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Schizorb
 Аватар для Schizorb
508 / 460 / 16
Регистрация: 07.04.2012
Сообщений: 865
Записей в блоге: 1
Завершенные тесты: 1
16.12.2012, 09:30     Сортировка элементов массива размерности n в порядке возрастания #2
Выложите ваши наработки, а то непонятно в чем вопрос.
Schizorb
 Аватар для Schizorb
508 / 460 / 16
Регистрация: 07.04.2012
Сообщений: 865
Записей в блоге: 1
Завершенные тесты: 1
16.12.2012, 09:47     Сортировка элементов массива размерности n в порядке возрастания #3
У вас ошибки компиляции были.

1) Функция должна вернуть значение int, значит return; не пойдет. Возможно, вы хотели вернуть индекс imin?
2) Переменную int i объявите вне цикла, раз она используется после выхода из него.
3) Функции var у вас нет, а вы пытаетесь ее вызвать. Наверное, имели ввиду var5?
4) Для printf нужно подключить stdio.h

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 <locale.h>
#include <time.h>
#include <stdlib.h>
#include <conio.h>
#include <stdio.h>
 
int var5(int *A, int k)
{
    int imin;
    for(int i=0; i<k-1; i++)
    {
        // i индекс элемента с которого начинается массив в котором ищем минимум
        int min=A[i];
        imin=i;
        for(int j=i+1; j<k; j++)
            if (A[j]<min) // i-ый элемент сравниваем со всеми последующими
            {
                min=A[j]; imin=j;
            }
        // Меняем элементы местами
        if (i!=imin) 
        {
            A[imin]=A[i];
            A[i]=min;
        }
    }
    return imin; // возвращаем индекс
}
 
int main()
{
    setlocale(LC_ALL,"rus");
    srand(time(NULL)); //Генерируем последовательность псевдослучайных чисел в зависимости от текущего времени
    int **b, n, m;
 
    int i, j; // объявляем переменные
    
    printf("Введите количество строк и столбцов матрицы: ");
    scanf("%d %d", &n, &m);
    
    b=new int*[n];
    for (i=0; i<n; i++) b[i]=new int[m];
 
    for (i=0; i<n; i++)
        for (j=0; j<m; j++)
            b[i][j]=rand()%100;
 
    printf("Исходная матрица с целочисленными элементами:\n");
    for (i=0; i<n; i++)
    {
        for (int j=0; j<m; j++)
            printf("%d ", b[i][j]);
        printf("\n");
    }
        var5(b[i],m); // вызов ф-ции
        for (i=0; i<n; i++)
    {
        for (j=0; j<m; j++)
            printf("%d ", b[i][j]);
        printf("\n");
    }
    return 0;
}
Этот код компилируется, но не факт что работает правильно.

Добавлено через 1 минуту
Да вы и сами, вижу, исправили уже...
kukhtikov
2 / 2 / 0
Регистрация: 16.12.2012
Сообщений: 97
16.12.2012, 09:54  [ТС]     Сортировка элементов массива размерности n в порядке возрастания #4
У меня бесконечный цикл...
Schizorb
 Аватар для Schizorb
508 / 460 / 16
Регистрация: 07.04.2012
Сообщений: 865
Записей в блоге: 1
Завершенные тесты: 1
16.12.2012, 10:06     Сортировка элементов массива размерности n в порядке возрастания #5
Скажите хоть, какую задачу делаете?

Добавлено через 5 минут
Первая.
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
#include <iostream>
#include <ctime>
#include <cstdlib>
#include <iomanip>
 
void bubble_sort(int * arr, int size)
{
    for(int i = 0; i < size - 1; ++i)
    {
        for(int j = 0; j < size - 1 - i; ++j)    
        {
            if(arr[j + 1] < arr[j])
            {
                int temp = arr[j];
                arr[j] = arr[j + 1];
                arr[j + 1] = temp;
            }
        }
    }
}
 
void output_matrix(int ** matrix, int rows, int cols)
{
    for(int i = 0; i < rows; ++i)
    {
        for(int j = 0; j < cols; ++j)
        {
            std::cout << std::setw(4) << matrix[i][j] << " ";
        }
        std::cout << "\n";
    }
}
 
void fill_matrix(int ** matrix, int rows, int cols)
{
    for(int i = 0; i < rows; ++i)
    {
        for(int j = 0; j < cols; ++j)
        {
            matrix[i][j] = rand() % 100;
        }
    }
}
 
void sort_matrix(int ** matrix, int rows, int cols)  
{
    for(int i = 1; i < rows; i += 2)
        bubble_sort(matrix[i], cols);
}   
        
int main()
{
    static_cast<unsigned int>(time(0));
    
    int rows, cols;
    
    std::cout << "Enter rows: ";
    std::cin >> rows;
    std::cout << "Enter cols: ";
    std::cin >> cols;
    
    int ** matrix = new int * [rows]; 
    for(int i = 0; i < rows; ++i)
        matrix[i] = new int[cols];
        
    
    fill_matrix(matrix, rows, cols);
    
    std::cout << "Source matrix:\n";
    output_matrix(matrix, rows, cols);
    
    sort_matrix(matrix, rows, cols);
    
    std::cout << "Result matrix:\n";
    output_matrix(matrix, rows, cols);
    
    
    for(int i = 0; i < rows; ++i)
        delete [] matrix[i];      
    delete [] matrix;
       
    return 0;
}
Вторая аналогично, только в цикле счетчик с нуля

C++
1
2
3
4
5
void sort_matrix(int ** matrix, int rows, int cols)  
{
    for(int i = 0; i < rows; i += 2)
        bubble_sort(matrix[i], cols);
}
Yandex
Объявления
16.12.2012, 10:06     Сортировка элементов массива размерности n в порядке возрастания
Ответ Создать тему
Опции темы

Текущее время: 16:59. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru