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

Тип введенных елементов - C++

Восстановить пароль Регистрация
 
tAruuuch
0 / 0 / 0
Регистрация: 24.02.2013
Сообщений: 144
06.03.2014, 02:35     Тип введенных елементов #1
Ребята помогите пожайлуста, нужно в вот эту прогу нужно сделать шаблон который будет определять тип введенных елементов матрици, и как я понял нужно выводить какого типа этот елемент. Но так же мне уточнили что можно взять всего 2 типа: int и float, и сделать для них. Но я очень плохо дружу с шаблонами. Я вот уже сколько сидел думал у меня не получаеться придумать как это сделать, не могли бы вы помоч очень нужно.

matrica.h
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
#pragma once
 
#include <string.h>
#include <iostream>
#include <cstdlib>
#include <clocale>
#include <windows.h>
#include <stdio.h>
#include <conio.h>
#include <ctime>
#include <iomanip>
 
class Dynamic
{
    double       **z;
    int         n;
    int         m;
    void deallocate();
    void newMemory();
    void randomGenerateSubMatrix(int, int, int, int);
    void fillFromMatrix(double **);
public:
    Dynamic();
    Dynamic(int, int);
    Dynamic(int, int, double);
    Dynamic(int, int, double**);
    Dynamic(int, int, int, int, int, int);
    ~Dynamic();
    void randomGenerate();
    void write();
    void napus();
    void fillMatrix(double);
};


matrica.cpp
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
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
#include "matrica.h"
 
using namespace std;
 
Dynamic::Dynamic() : z(NULL), n(0), m(0)
{
    newMemory();
    fillMatrix(0.0f);
}
 
Dynamic::Dynamic(int n_, int m_, double l) : z(NULL), n(n_), m(m_)
{
    newMemory();
    fillMatrix(l);
}
 
void Dynamic::randomGenerateSubMatrix(int left, int top, int right, int bottom) {
    if (left >= 0 && left < n
        && right >= left && right < n
        && top >= 0 && top < m &&
        bottom >= top && bottom < m) {
        for (int x = left; x <= right; ++x)
        for (int y = top; y <= bottom; ++y)
        {
            cout << "Введите:"; 
            cin >> z[x][y];
        }
    }
}
 
void Dynamic::fillFromMatrix(double ** p) {
    if (p == NULL)
        return;
 
    for (int i = 0; i < n; ++i)
    for (int j = 0; j < m; ++j)
        z[i][j] = p[i][j];
}
 
 
Dynamic::Dynamic(int n_, int m_) : z(NULL), n(n_), m(m_)
{
    newMemory();
    randomGenerate();
}
Dynamic::Dynamic(int w, int h, int l, int t, int r, int b) : z(NULL), n(w), m(h){
    newMemory();
    fillMatrix(0.0f);
    randomGenerateSubMatrix(l, t, r, b);
}
 
Dynamic::Dynamic(int w, int h, double** p) : z(NULL), n(w), m(h) {
    newMemory();
    fillFromMatrix(p);
}
 
 
void Dynamic::randomGenerate() {
    if (z == NULL)
        return;
    for (int i = 0; i < n; i++)
    for (int j = 0; j < m; j++)
    {
        cout << "Введите:"; 
        cin >> z[i][j];
    }
}
 
 
void Dynamic::write()
{
    cout << "Введите n и m: ";
    int temp_n, temp_m;
    cin >> temp_n >> temp_m;
    if (temp_n > 0 && temp_m > 0) {
        newMemory();//n и m поменяли, значит нужно перевыделить память
        n = temp_n;
        m = temp_m;
    }
}
 
 
 
void Dynamic::newMemory()
{
    if (m == 0 || n == 0) {
        return;
    }
    deallocate();//сначала удалим старую память, если такая была выделена
    z = new double *[n];
    for (int i = 0; i < n; i++) {
        z[i] = new double[m];
    }
}
 
void Dynamic::fillMatrix(double val) {
    if (z == NULL)
        return;
    for (int i = 0; i < n; i++)
    for (int j = 0; j < m; j++)
        z[i][j] = val;
}
 
 
void Dynamic::napus()
{
    if (z == NULL) {
        printf("Матрица еще не создана\n\n");
        return;
    }
    printf("Наша матрица\n");
    for (int i = 0; i < m; i++)
    {
        for (int j = 0; j < n; j++)
            cout << setw(4) << z[j][i];
        cout << endl;
    }
 
    if (n % 2 == 1 && m % 2 == 1)
        printf("Середнiй елемент: z[%d][%d]=%.0f\n", n / 2, m / 2, z[n / 2][m / 2]);
    else if (n % 2 == 1 && m % 2 == 0)
        printf("Середнiй елемент:\nz[%d][%d]=%.0f\nz[%d][%d]=%.0f\n", n / 2, (m - 1) / 2, z[n / 2][(m - 1) / 2], n / 2, m / 2, z[n / 2][m / 2]);
    else if (n % 2 == 0 && m % 2 == 1)
        printf("Середнiй елемент:\nz[%d][%d]=%.0f\nz[%d][%d]=%.0f\n", (n - 1) / 2, m / 2, z[(n - 1) / 2][m / 2], n / 2, m / 2, z[n / 2][m / 2]);
    else{
        printf("Середнiй елемент:\n");
        printf("z[%d][%d]=%.0f\n", (n - 1) / 2, (m - 1) / 2, z[(n - 1) / 2][(m - 1) / 2]);
        printf("z[%d][%d]=%.0f\n", (n - 1) / 2, m / 2, z[(n - 1) / 2][m / 2]);
        printf("z[%d][%d]=%.0f\n", n / 2, (m - 1) / 2, z[n / 2][(m - 1) / 2]);
        printf("z[%d][%d]=%.0f\n", n / 2, m / 2, z[n / 2][m / 2]);
    }
 
    system("pause");
}
 
Dynamic::~Dynamic()
{
    deallocate();
}
 
void Dynamic::deallocate() {
    if (z == NULL)//если память не выделена, тогда ничего не делаем
        return;
    for (int i = 0; i < n; i++)
    {
        delete[] z[i];
    }
 
    delete[] z;
 
    z = NULL;
}


Исходный код.cpp
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 "matrica.h"
 
using namespace std;
 
int main()
{
    setlocale(LC_ALL, "Rus");
 
    Dynamic dynamic;
 
    do
    {
        cout << "1. Ввести даннi" << endl;
        cout << "2. Вивести даннi" << endl << endl;
 
        int key = _getch();
 
        switch (key)
        {
        case '1':   dynamic.write(); dynamic.randomGenerate();    break;
        case '2':   dynamic.napus();                break;
        default:
            cout << "Невiрний вибiр! Натиснiть будь-яку клавiшу для продовження..." << endl;
            _getch();
        }
 
    } while (true);
 
}


Добавлено через 18 минут
Очень нужна помощь, кому не сложно можете помочь!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.03.2014, 02:35     Тип введенных елементов
Посмотрите здесь:

C++ Удаления елементов из массива
C++ Сумма отрицательных елементов
тип cout-a ostrieam? соответствено тип cin-a istream? C++
C++ Знаки елементов.
Количество елементов массива C++
Восьмибитный тип переменной (что за тип, но не BYTE и не CHAR? C++
Массив из n елементов C++
шаблон функции который принимает в параметры массив количиство елементов и должен найти сумму елементов массив C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

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