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

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

Войти
Регистрация
Восстановить пароль
 
rar14
28 / 22 / 1
Регистрация: 14.04.2009
Сообщений: 448
#1

Проверьте лабораторную - C++

18.04.2009, 03:33. Просмотров 472. Ответов 1
Метки нет (Все метки)

Вот, сделал первое задание. Если не составит труда, то проверьте пожалуйста. Я максимально понятно там все прокомментировал. Посмотрите, что можно улучшить или что исправить, какие-нибудь пожелания...

Вот задание:
Разработать программу, которая вводит целочисленную матрицу из n строк и m столбцов (1<n<=100, 1<m<=50), выводит исходную матрицу, упорядочивает элементы матрицы и выводит матрицу после ее упорядочивания. Упорядочить все элементы матрицы таким образом, чтобы при чтении матрицы по строкам ее элементы образовывали отсортированный по убыванию массив. Алгоритмы ввода, вывода и упорядочивания матрицы оформить в виде функций с параметрами.


Решение:

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
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
#include <iostream.h>
 
// Протопиты функций
void InputDimensionOfMatrix  (int& n, int& m);
void InputElementsOfMatrix   (int** matrix, int n, int m);
void PrintMatrix             (int** matrix, int n, int m);
void SortMatrix              (int** matrix, int n, int m);
 
 
 
int main() {
 
    int N; // Количество строк матрицы
    int M; // Количество столбцов матрицы
 
    int i; // Итератор
 
 
    // Ввод размерности матрицы
    InputDimensionOfMatrix(N, M);
 
 
    // Создаем динамический двумерный массив
    int **matrix;
    matrix = new int *[N];
    if (!matrix) {
        cout << "Error: dynamic array is not created" << "\n";
        return 0;
    }
    for (i = 0; i < N; i++) {
        matrix[i] = new int [M];
        if (!matrix[i]) {
            cout << "Error: dynamic array is not created" << "\n";
            return 0;
        }
    }
 
 
 
    // Ввод элементов матрицы с клавиатуры
    InputElementsOfMatrix(matrix, N, M);
 
    // Вывод матрицы на дисплей
    cout << "Matrix " << N << "x" << M << ":" << "\n\n";
    PrintMatrix(matrix, N, M);
 
    // Cортировка элементов строк матрицы по убыванию
    SortMatrix(matrix, N, M);
 
    // Вывод отсортированной матрицы на дисплей
    cout << "Matrix " << N << "x" << M << " after sorting:" << "\n\n";
    PrintMatrix(matrix, N, M);
 
    // Удаление динамического массива
    for (i = 0; i < N; i++) delete matrix[i];
    delete [] matrix;
 
 
 
    // Конец программы
    return 0;
 
} // END OF MAIN
 
 
 
 
void InputDimensionOfMatrix(int& n, int& m) {
    cout << "Input matrix dimension NxM:" << "\n\n";
    cout << "2 <= N <= 100" << "\n";
    cout << "2 <= M <= 50"  << "\n\n";
    while (1) {
        cout << "\t" << "N = ";
        cin >> n;
        if ((n > 1) && (n <= 100)) break;
        cout << "\t" << "Error: matrix dimension for N must be 2 to 100" << "\n";
    }
    while (1) {
        cout << "\t" << "M = ";
        cin >> m;
        if ((m > 1) && (m <= 50)) break;
        cout << "\t" << "Error: matrix dimension for M must be 2 to 50" << "\n";
    }
    cout << "\n\n\n";
} // END OF FUNCTION
 
 
void InputElementsOfMatrix(int** matrix, int n, int m) {
    for (int i = 0; i < n; i++) {
        cout << "ROW " << (i + 1) << ">" << "\n"; 
        for (int j = 0; j < m; j++) {
            cout << "\t" << "COL " << (j + 1) << ":" << "\t";
            cin >> matrix[i][j];
        }
        cout << "\n\n";
    }
    cout << "\n\n";
} // END OF FUNCTION
 
 
void PrintMatrix(int** matrix, int n, int m) {
    for (int i = 0; i < n; i++) {
        cout << "\t" << "ROW " << (i + 1) << "> ";
        for (int j = 0; j < m; j++) cout << "\t" << matrix[i][j];
        cout << "\n";
    }
    cout << "\n\n";
} // END OF FUNCTION
 
 
void SortMatrix(int** matrix, int n, int m) {
    int buffer;
    for (int i = 0; i < n; i++)
    for (int j = 0; j < m; j++)
    for (int k = j + 1; k < m; k++)
        if (matrix[i][j] < matrix[i][k]) {
            buffer = matrix[i][j];
            matrix[i][j] = matrix[i][k];
            matrix[i][k] = buffer;
        }
} // END OF FUNCTION
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.04.2009, 03:33     Проверьте лабораторную
Посмотрите здесь:

Проверьте лабораторную №3 - C++
Создать шаблоны функций, выполняющей ввод, вывод и упорядочивание матриц. Протестировать шаблоны для матриц с элементами различных типов:...

Непонятное условие на лабораторную работу - C++
на завтра нужно лабу сделать..все выходные сидел и даже с условием сильно не разобрался..проблема даже не в том что я си не знаю а условие...

Не могу сделать лабораторную работу - C++
Задали лабораторную , а я даже не понимаю что от меня хотят и как это все сделать . Дан массив размером 2х5 с элементами...

Нужно выполнить лабораторную, пожалуйста. К зачёту не допускают - C++
1.Проверьте, есть ли в слове приставка &quot;при&quot; или &quot;пре&quot;. 2.Вставьте в слове после &quot;кас&quot; букву &quot;а&quot;, если ее там нет. 3.Удалите из слова...

Делаю лабораторную работу, написал код программы, принцип думаю верен, а вот с синтаксисом проблемы. Помогите исправить ошибки - C++
делаю лабораторную, написал код программы (принцип думаю верен, а вот с синтаксисом проблемы). Условие отправил в ворде. #include...

Проверьте - C++
Помогите чайнику. Гляньте пожалуйста, правильно сделал #include &quot;stdafx.h&quot; #include&lt;iostream&gt; #include&lt;math.h&gt; #include&lt;conio.h&gt; ...

Проверьте - C++
#include &lt;iostream&gt; #include &lt;conio.h&gt; #include &lt;string.h&gt; using namespace std; const int MAX=3; class StrNew { char*...

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

Проверьте программу - C++
Я написал программу для следующей задачи: 3.Если среди чисел Sin Xn (n=1, 2,…, 30) есть хотя бы одно отрицательное число, то...

Проверьте код - C++
# include &lt;stdio.h&gt; void main() { int a; printf(&quot;Vvedit a\n&quot;); scanf(&quot;%d&quot;, &amp;a); int b; printf(&quot;Vvedit b\n&quot;); ...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ISergey
Maniac
Эксперт С++
1373 / 884 / 52
Регистрация: 02.01.2009
Сообщений: 2,653
Записей в блоге: 1
18.04.2009, 03:53     Проверьте лабораторную #2
Вобщем все нормально, но в этом я смысла не вижу.
C++
1
2
3
4
   if (!matrix) {
        cout << "Error: dynamic array is not created" << "\n";
        return 0;
    }
Вот пример(коментарии уберёшь)
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
#include <iostream>
using namespace std;
int main()
{
    try
    {
        char *arr2 = new char[1024*1024*1204];
    }
    catch(std::bad_alloc&)
    {
        cout<<"Fack no memory0!"<<endl;
    }
 
 
    //char *arr = new char[1024*1024*1204];//здесь программа вылетает
    //if(!arr)
    //  cout<<"Это ни когда не увидем!";
 
    try
    {
        char *arr = new char[1024*1024*1204];
    }
    catch(std::bad_alloc&)
    {
        cout<<"Fack no memory1!"<<endl;
    }
 
    return 0;
}
Ответ Создать тему
Опции темы

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