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

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

Восстановить пароль Регистрация
 
Boogie
Сообщений: n/a
19.05.2012, 16:39     Программа сортировки матрицы, работает только для квадратных #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 минуты
ап
хееелп)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.05.2012, 16:39     Программа сортировки матрицы, работает только для квадратных
Посмотрите здесь:

C++ Решение квадратных уравнений, почему не работает?
C++ Программа работает только на моем компьютере
Программа работает только в win 7 C++
Программа ищет первый столбик где находятся только непарный елементы!Почему не работает Иф? C++
C++ Программа для сортировки
Программа для сортировки массива строк C++
C++ Программа работает только с одним разрешением экрана, как сделать чтобы она была универсальна
Не работает программа сортировки,кто нибудь поймет почему? C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4919 / 2662 / 243
Регистрация: 29.11.2010
Сообщений: 7,397
19.05.2012, 18:27     Программа сортировки матрицы, работает только для квадратных #2
Определись, какая буква обозначет количество столбцов, какая количество строк.

А то у тебя то
C++
1
2
3
4
5
6
for (int i=0; i<in.m; i++)
        {
                for (int j=0; j<in.n; j++)
                        cout << a[i][j] << " ";
                cout << "\n";
        }
то
C++
1
2
3
4
5
6
7
8
for (int i=0; i<in.n; i++) // Записываем двумерный в одномерный
    {
        for (int j=0; j<in.m; j++)
        {
            a[o]=in.mat[i][j];
            o++;
        }
    }
Yandex
Объявления
19.05.2012, 18:27     Программа сортировки матрицы, работает только для квадратных
Ответ Создать тему
Опции темы

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