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

Программа сортировки матрицы, работает только для квадратных - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Сортировка и работа с файлами http://www.cyberforum.ru/cpp-beginners/thread579094.html
В текстовом файле src.txt в каждой строке записывается выражение вида:A op B Где: A – вещественное число; В – целое число op – знак операции из набора {+, -, /, *} Обработать заданный файл...
C++ Ошибка при динамическом выделении памяти почему у меня возникет ошибка вот тут struct TOVAR *New = new struct TOVAR; пишит недопустимый неполный тип на struct подчеркивает после new Добавлено через 12 минут помогите разобратсья... http://www.cyberforum.ru/cpp-beginners/thread579092.html
C++ простая строка + цикл
Напишите программу, которая читает последовательность строковых значений со стандартного устройства ввода до тех пор, пока не встретится повторяющееся слово или пока ввод слов не будет закончен. Для...
Найти сумму элементов в тех столбцах, которые содержат хотя бы один отрицательный элемент C++
Привет! Помогите, пожалуйста, изменить код.Он рабочий,но у него есть недостаток, он без функций, а надо в виде функции. Все необходимые данные для функций должны передаваться им в качестве...
C++ Робота с текстовими файлами http://www.cyberforum.ru/cpp-beginners/thread579073.html
1.1 Задача 1 В текстовом файле src.txt в каждой строке записывается выражение вида:A op B Где: A – вещественное число; В – целое число op – знак операции из набора {+, -, /, *} Обработать...
C++ Волокна Где можно почитать про волокна в С? Подскажите книжку какую нибудь,сайт... подробнее

Показать сообщение отдельно
Boogie
Сообщений: n/a

Программа сортировки матрицы, работает только для квадратных - C++

19.05.2012, 16:39. Просмотров 477. Ответов 1
Метки (Все метки)

Помогите исправить, пожалуйста, программа должна работать для любых значений строк и столбцов, где логическая ошибка?(
Постановка задачи: Упорядочить все элементы матрицы таким образом, чтобы при чтении матрицы по столбцам ее элементы образовывали отсортированный по возрастанию массив
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
91
92
93
94
95
96
97
98
99
100
101
102
103
#include <iostream>
#include <conio.h>
using namespace std;
 
struct matrix
{
        int **mat;
        int n, m;
}in;
void input_matrix();
void sort();
void out();
void delete_matrix();
int *sort (int, int*);
int main()
{
        input_matrix();
        cout << "\n";
        sort();
        cout << "\n";
        out();
        cout << "\n";
        delete_matrix();
        _getch();
        return 0;
}
 
void input_matrix()
{
        int **a;
        cout << "Vvedi m i n\n";
        cin >> in.n>> in.m;
        a = new int *[in.n];
        for (int i=0; i<in.n; i++)
                a[i] = new int [in.m];
        cout << "Vvedi matricu\n";
        for (int i=0; i<in.n; i++)
                for (int j=0; j<in.m; j++)
                        cin >> a[i][j];
        in.mat=a;
}
 
void sort()
{
    int *a; // Создаем массив для записи из двумерного
    a = new int [in.n*in.m];
    int o=0; // Создаем итератор для a[]
    for (int i=0; i<in.n; i++) // Записываем двумерный в одномерный
    {
        for (int j=0; j<in.m; j++)
        {
            a[o]=in.mat[i][j];
            o++;
        }
    }
    a=sort(o, a);
    o=0;
    for (int i=0; i<in.n; i++) // Записываем из одномерного в двумерный (по столбцам)
    {
        for (int j=0; j<in.m; j++)
        {
            in.mat[j][i]=a[o];
            o++;
        }
    }
    delete []a;
}
 
void out()
{
        int **a;
        a=in.mat;
        for (int i=0; i<in.m; i++)
        {
                for (int j=0; j<in.n; j++)
                        cout << a[i][j] << " ";
                cout << "\n";
        }
}
 
void delete_matrix()
{
        for (int i=0; i<in.m; i++)
                delete []in.mat[i];
        delete []in.mat;
}
 
int *sort(int o, int *a)
{
    for (int i=0; i<o; i++) // Сортируем
    {
        for (int j=i+1; j<o; j++)
        {
            if (a[i]>a[j])
            {
                int tmp = a[i];
                a[i] = a[j];
                a[j] = tmp;
            }
        }
    }
    return a;
}
Добавлено через 19 часов 3 минуты
ап
хееелп)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru