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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Boogie
Сообщений: n/a
#1

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

19.05.2012, 16:39. Просмотров 476. Ответов 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++
программа должна брать фамилии из одного файла,сортировать их по алфавиту и выводить в новый файл выдает ошибку при компиляции .не могу...

Программа для сортировки - C++
Здраствуйте, необходимо написать программу в которуй будет 12 случайных элементов, затем нужно будет сложить рядом стоящие элементы, и...

Программа работает только в win 7 - C++
Здравствуйте! Я не программист, но пришлось написать простенькую прогу, которая работает с внешней dll. Dll подключал динамически по...

Программа работает только на моем компьютере - C++
Всем привет! Хочу извиниться за незнание простых вещей. Только вчера скачал Вижуал и успел прочитать пару статеик по С++. Проблема состоит...

Программа для сортировки массива строк - C++
Нужно написать программу для сортировки строк, используя указатели. Программа должна считать количество элементов массива (вот тут и...

Почему программа поиска простых чисел работает только до 61? - C++
Добрый день, Помогите, пожалуйста, разобраться. Программа для поиска простых чисел. На экран отображает только простые числа до 61, ...

1
MrGluck
Модератор
Эксперт CЭксперт С++
7423 / 4538 / 673
Регистрация: 29.11.2010
Сообщений: 12,319
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++;
        }
    }
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.05.2012, 18:27
Привет! Вот еще темы с ответами:

Функция сортировки элементов по возрастанию отдельно для каждой строки матрицы - C++
void sort(int ar) { for (int i = 0; i &lt; size; i++) { for (int j = i + 1; j &lt; size; j++) if (ar &gt; ar) { int t =...

Программа ищет первый столбик где находятся только непарный елементы!Почему не работает Иф? - C++
#pragma hdrstop #include&lt;conio.h&gt; #include&lt;iostream.h&gt; #include&lt;stdlib.h&gt; #include &lt;iomanip.h&gt; #pragma argsused int main() ...

Программа работает только с одним разрешением экрана, как сделать чтобы она была универсальна - C++
Написал простенький кликер на с++, который в игре нажимает кнопочки от 1 до 9, сделал зависимости нажатия кнопочек от того что происходит...

Решение квадратных уравнений, почему не работает? - C++
#include &lt;cstdlib&gt; #include &lt;iostream&gt; #include &lt;math.h&gt; using namespace std; int main() { double a,b,c,d,kd,x,xx; ...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru