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

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

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

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

19.04.2009, 03:35. Просмотров 842. Ответов 10
Метки нет (Все метки)

Создать шаблоны функций, выполняющей ввод, вывод и упорядочивание матриц. Протестировать шаблоны для матриц с элементами различных типов: int, float и char. Варианты заданий приведены в лабораторной работе № 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
104
105
106
107
108
#include <iostream>
#include <conio.h>
using namespace std;
 
#define DATATYPE double // Г’ГЁГЇ Г¤Г*Г*Г*ûõ Г¬Г*òðèöû
 
                   void input_matrix_dimension   (int&, int&);
template <class T> T**  create_matrix            (int n, int m, T foo);
template <class T> void input_elements_of_matrix (T** matrix, int n, int m);
template <class T> void print_matrix             (T** matrix, int n, int m);
template <class T> void sorting_matrix           (T** matrix, int n, int m);
template <class T> void delete_matrix            (T** matrix, int n);
 
 
 
 
int main() {
 
    int N, M;
    input_matrix_dimension(N, M);
 
    DATATYPE foo = 1;
    DATATYPE** matrix = create_matrix(N, M, foo);
    input_elements_of_matrix(matrix, N, M);
    cout << "Matrix " << N << "x" << M << ":" << "\n\n";
    print_matrix(matrix, N, M);
    cout << "Press <Enter> to start sorting the matrix..." << "\n";
    while (1) if (getch() == 13) break;
    sorting_matrix(matrix, N, M);
    cout << "The matrix " << N << "x" << M << " after sorting:" << "\n\n";
    print_matrix(matrix, N, M);
    delete_matrix(matrix, N);
 
    cout << "Press <Enter> to exit" << "\n";
    while (1) if (getch() == 13) exit(0);
 
    return 0;
} // END OF MAIN
 
 
 
 
void input_matrix_dimension(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 >= 2) && (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 >= 2) && (m <= 50)) break;
        cout << "\t" << "Error: matrix dimension for M must be 2 to 50" << "\n";
    }
    cout << "\n\n\n";
} // END OF FUNTION
 
template <class T> T** create_matrix(int n, int m, T foo) {
    T** matrix = new T* [n];
    if (!matrix) exit(0);
    for (int i = 0; i < n; i++) {
        matrix[i] = new T [m];
        if (!matrix[i]) exit(0);
    }
    return matrix;
} // END OF FUNTION
 
template <class T> void input_elements_of_matrix(T** 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 FUNTION
 
template <class T> void print_matrix(T** 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
 
template <class T> void sorting_matrix(T** 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
 
template <class T> void delete_matrix(T** matrix, int n) {
    for (int i = 0; i < n; i++) delete [] matrix[i];
    delete [] matrix;
} // END OF FUNCTION
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.04.2009, 03:35
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Проверьте лабораторную №3 (C++):

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

требуется Решить лабораторную - C++
2 лабораторная и уже несправляюсь((( Дана матрица MxN найти все ее периметры Если не сложно расписать каждый шаг (чтоб сам...

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

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

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

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

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
ISergey
Maniac
Эксперт С++
1374 / 885 / 52
Регистрация: 02.01.2009
Сообщений: 2,658
Записей в блоге: 1
19.04.2009, 04:25 #2
Вобщем здесь
C++
1
2
3
4
5
6
7
8
9
10
11
template <class T> void sorting_matrix(T** 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
int buffer; замени на T buffer;
и макросы подальше в С++ закинь.
0
rar14
28 / 22 / 1
Регистрация: 14.04.2009
Сообщений: 448
19.04.2009, 05:09  [ТС] #3
В смысле подальше закинуть? Про какие макросы идет речь?
0
kazak
3034 / 2355 / 155
Регистрация: 11.03.2009
Сообщений: 5,402
Завершенные тесты: 1
19.04.2009, 14:53 #4
Я так подозреваю
C++
1
#define DATATYPE double // Тип данных матрицы
0
rar14
28 / 22 / 1
Регистрация: 14.04.2009
Сообщений: 448
19.04.2009, 15:07  [ТС] #5
А куда по-дальше?
0
kazak
3034 / 2355 / 155
Регистрация: 11.03.2009
Сообщений: 5,402
Завершенные тесты: 1
19.04.2009, 15:13 #6
В смысле отказаться от них, имхо зачем такие сложности, если можно вместо
C++
1
2
3
#define DATATYPE double // Тип данных матрицы
        DATATYPE foo = 1;
    DATATYPE** matrix = create_matrix(N, M, foo);
написать просто
C++
1
2
        double foo = 1;
    double** matrix = create_matrix(N, M, foo);
и даже нужно.
0
rar14
28 / 22 / 1
Регистрация: 14.04.2009
Сообщений: 448
19.04.2009, 15:27  [ТС] #7
Ну так, проще в одном месте исправить, чем в двух.
0
kazak
3034 / 2355 / 155
Регистрация: 11.03.2009
Сообщений: 5,402
Завершенные тесты: 1
19.04.2009, 15:46 #8
А зачем исправлять?
0
rar14
28 / 22 / 1
Регистрация: 14.04.2009
Сообщений: 448
19.04.2009, 16:12  [ТС] #9
Для проверки разных типов данных.
0
ISergey
Maniac
Эксперт С++
1374 / 885 / 52
Регистрация: 02.01.2009
Сообщений: 2,658
Записей в блоге: 1
19.04.2009, 23:38 #10
Цитата Сообщение от kazak Посмотреть сообщение
Я так подозреваю
Код C++1
#define DATATYPE double // Тип данных матрицы
именно оно.
Это просто создает лишнее проблемы.
Можно(лучше в С++)
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <iostream>
 
using namespace std;
 
typedef int my_def ;
 
int main() 
{
    my_def i;
    cout<<typeid(i).name()<<endl;
    return 0;
}
0
rar14
28 / 22 / 1
Регистрация: 14.04.2009
Сообщений: 448
19.04.2009, 23:56  [ТС] #11
А какие лишние проблемы это создает?
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.04.2009, 23:56
Привет! Вот еще темы с ответами:

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

Проверьте программу - C++
Здравствуйте,Написал программу по этой задаче: Но сомневаюсь в её правильности,вот код: #include &lt;stdlib.h&gt; #include &lt;math.h&gt; ...

Проверьте программу - C++
Напишите программу, запрашивающую у пользователя N вещественных чисел и выводящую на экран их среднее арифметическое. int main() { int...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
19.04.2009, 23:56
Ответ Создать тему
Опции темы

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