Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.78/9: Рейтинг темы: голосов - 9, средняя оценка - 4.78
0 / 0 / 1
Регистрация: 24.02.2013
Сообщений: 146
1

При вводе элементов массива выводить их тип (или int или float)

12.03.2014, 22:56. Показов 1710. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Помогите с ошибкой, и если не сложно то с заданием а то я вроде сделал только не могу проверить так как крешит прогу(

А задание заключаеться в том что нужно при вводе елементов массива выводить их тип или 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
34
35
36
#pragma once
 
#include <string.h>
#include <iostream>
#include <cstdlib>
#include <clocale>
#include <windows.h>
#include <stdio.h>
#include <conio.h>
#include <ctime>
#include <iomanip>
#include <cmath>
 
template<class T>
class Dynamic
{
    T           **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(T);
};


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
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
#include "matrica.h"
 
using namespace std;
 
template<class T>
Dynamic<T>::Dynamic() : z(NULL), n(0), m(0)
{
    newMemory();
    fillMatrix(0.0f);
}
 
template<class T>
Dynamic<T>::Dynamic(int n_, int m_, double l) : z(NULL), n(n_), m(m_)
{
    newMemory();
    fillMatrix(l);
}
 
template<class T>
void Dynamic<T>::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 << "Enter number: -> ";
            string z;
            cin >> z[x][y];
 
            if (any_of(number.begin(), number.end(), isalpha) ||
            count(number.begin(), number.end(), '.') > 1)
            {
            cout << "Bad input.\n";
            return 1;
            }
 
            if (number.find('.') != string::npos)
            cout << "Floating type.\n";
            else
            cout << "Integer type.\n";
 
            return 0;
        }
    }
}
 
template<class T>
void Dynamic<T>::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];
}
 
template<class T>
Dynamic<T>::Dynamic(int n_, int m_) : z(NULL), n(n_), m(m_)
{
    newMemory();
    randomGenerate();
}
 
template<class T>
Dynamic<T>::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);
}
 
template<class T>
Dynamic<T>::Dynamic(int w, int h, double** p) : z(NULL), n(w), m(h) {
    newMemory();
    fillFromMatrix(p);
}
 
template<class T>
void Dynamic<T>::randomGenerate() {
    if (z == NULL)
        return;
    srand(time(NULL));
    for (int i = 0; i < n; i++)
    for (int j = 0; j < m; j++)
        z[i][j] = (rand() % 99 + 1);
}
 
template<class T>
void Dynamic<T>::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;
    }
}
 
template<class T>
void Dynamic<T>::newMemory()
{
    if (m == 0 || n == 0) {
        return;
    }
    deallocate();//сначала удалим старую память, если такая была выделена
    z = new double *[n];
    for (int i = 0; i < n; i++) {
        z[i] = new double[m];
    }
}
 
template<class T>
void Dynamic<T>::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;
}
 
template<class T>
void Dynamic<T>::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");
}
 
template<class T>
Dynamic<T>::~Dynamic()
{
    deallocate();
}
 
template<class T>
void Dynamic<T>::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<int> 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);
 
}


Добавлено через 58 минут
Ребят помогите а то завтра здавать а сделать не могу(
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.03.2014, 22:56
Ответы с готовыми решениями:

Как в VC++ переводить строки в тип int или float ???????
Здравствуйте .... уважаемые программисты ... помогите пожалуйста перевести тип строка в тип...

Как сменить тип с int на double или float в MFC?
такая проблема у меня.... мне нужно в диалоге отнять 2 числа, если числа типу int, то написать...

Какой тип данных лучше подойдет для приложения, которое делит числа int или float?
Ответ написал int Хотя нутром чую, что float

Почему при вводе элементов массива, программа прекращает работу или работает не так, как ожидается?
При вводе элементов массива, программа прекращает работу или не правильно работает. Например если...

4
41 / 37 / 15
Регистрация: 22.03.2013
Сообщений: 293
12.03.2014, 23:33 2
tAruuuch, компилируется? Если нет - какие ошибки говорит компилятор.
0
0 / 0 / 1
Регистрация: 24.02.2013
Сообщений: 146
12.03.2014, 23:34  [ТС] 3
Корд, Ошибка 1 error MSB8020: The builds tools for v120 (Platform Toolset = 'v120') cannot be found. To build using the v120 build tools, either click the Project menu or right-click the solution, and then select "Update VC++ Projects...". Install v120 to build using the v120 build tools. C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V110\Microsoft.Cpp.Platform.targets 44
0
41 / 37 / 15
Регистрация: 22.03.2013
Сообщений: 293
12.03.2014, 23:40 4
tAruuuch,
http://translate.google.ru/tra... es_sm%3D93
0
0 / 0 / 1
Регистрация: 24.02.2013
Сообщений: 146
12.03.2014, 23:55  [ТС] 5
Корд, теперь такая ошибка вилезла я почитал про неё но не понял почему она у меня вылазит, если не сложно можете об`яснить

Ошибка 1 error C2244: Dynamic<T>::fillMatrix: не удается сопоставить определение функции существующему объявлению c:\users\dima\documents\visual studio 2012\projects\mafaka\mafaka\matrica.cpp 122
0
12.03.2014, 23:55
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
12.03.2014, 23:55
Помогаю со студенческими работами здесь

Использование float вместо int при вводе в TextBox
Есть программа. Работает без ошибок. Но проблема в том, что в текстовые поля можно вводить только...

Нужно откоректировать программу которая будет при вводе любого числа, выводить чётное оно или нет
Здравствуйте, мне нужно откоректировать программу которая будет при вводе любого числа, выводить...

Изменить тип массива с int на float
Какие строки необходимо исправить, чтобы изменить тип массива? #include &lt;iostream&gt; #include...

Float в int или double в int
Надо прибавить в Shape1-&gt;Top+=0,33, но когда перевожу в int то он округляет до нуля, чего быть не...

При вводе имени абонента или его номера выводить его фамилию, номер телефона и адрес.
Создать телефонный справочник на 10 имен, адресов и номеров. При вводе имени абонента или его...

int или float
здрасьти, p=p*6; каким должен быть тип у p? int или float? или без разницы?


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru