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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Метод хорд, проверьте правильность кода http://www.cyberforum.ru/cpp-beginners/thread1112438.html
#include <iostream> #include <cmath> double func(double x) { return x*x*x+20*x+8*(log(2+10*sqrt(3))); } double find(double infinum, double supremum, double epsilon) {
C++ Сортировка масивов Сабж. Не могу додуматься до решения, особенно вторая задача. 1. Организуйте массив, содержащий 20 различных целых чисел. После этого 10 первых элементов массива упорядочиваются по возрастанию, а 10 последних элементов по убыванию. Содержимое отсортированного таким образом массива выводится на экран. 2. Отсортировать массив по убыванию Заданы два одномерных массива с различным количеством... http://www.cyberforum.ru/cpp-beginners/thread1112437.html
Дан массив А(20), найти количество элементов данного массива C++
Дан массив А(20), найти количество элементов данного массива,больших числа -5. Код нужен на с++
C++ Считывание из файла по слову
Нужно считать из файла данные по слову. Считывается только по символу. Помогите, пожалуйста, исправить. #include <stdlib.h> // (exit) #include <string.h> #include <iostream> // (cout, cin) #include <fstream> //работа с фаилами #include <iomanip> // (sew, setiosflags) #include <time.h> using namespace std;
C++ Как поменять кодировку? http://www.cyberforum.ru/cpp-beginners/thread1112415.html
Здравствуйте. У меня есть строка с непонятной кодировкой. string str="╨Ф╨╛╨▒╤А╤Л╨╣ ╨▓╨╡╤З╨╡╤А"; //Добрый вечер Пробовал использовать функцию MultiByteToWideChar(), но перекодировать строку не удалось. Как привести текст в нормальный вид? если это вообще возможно...
C++ Даны две разреженные квадратные матрицы A и B. Получить матрицу C = A+B .Даны две разреженные квадратные матрицы A и B порядка n ( разреженная матрица это матрица высокого порядка с большим количеством нулевых элементов ). Получить матрицу C = A+B. Для представления разреженной матрицы использовать двусвязный циклический список. Каждое звено списка состоит из пяти полей : - поле с номером строки ненулевого элемента, - поле с номером столбца... подробнее

Показать сообщение отдельно
tAruuuch
0 / 0 / 0
Регистрация: 24.02.2013
Сообщений: 144

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

06.03.2014, 02:35. Просмотров 171. Ответов 0
Метки (Все метки)

Ребята помогите пожайлуста, нужно в вот эту прогу нужно сделать шаблон который будет определять тип введенных елементов матрици, и как я понял нужно выводить какого типа этот елемент. Но так же мне уточнили что можно взять всего 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 минут
Очень нужна помощь, кому не сложно можете помочь!
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru