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

Ошибка в функции

15.11.2013, 02:44. Показов 3675. Ответов 58
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Не могу исправить ошибки можете помочь, тут в dynamic::dynamic(int n, int m, float l) ошибки:
1.error C2109: для индекса требуется массив или указатель
2.error C2660: dynamic::Create: функция не принимает 2 аргументов


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
#include "dynamic.h"
 
using namespace std;
 
dynamic::dynamic()
{
    m = 0;
    n = 0;
    z = NULL;
}
 
dynamic::dynamic(int n, int m, float l)
{
    Create((n,m) true);
 
    z[0][0] = l;
 
    for (int i = 1; i < n; i++)
        for(int j = 1; j < m; j++)
            z[i][j] = (rand() % 99 + 1);
}
 
void dynamic::Write()
{
    printf("Введите размер матрицы: ");
    cin >> n; 
    cin >> m;
}
 
void dynamic::NewMemory (int n, int m)
{
    this->n = n;
    z = new float [n];
 
    this->m = m;
    z = new float [m];
}
 
void dynamic::DelMemory ()
{
    delete []z;
    m = 0;
    n = 0;
    z = NULL;
}
 
void dynamic::Create ()
{
    if (m && n) DelMemory ();
        NewMemory (m,n);
}
 
void dynamic::Destroy ()
{
    if (m && n) DelMemory();
}
 
void dynamic::Napus()
{
    printf("Наша матрица\n");
 
    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j < m; j++)
            cout << setw(4) << z[i][j] << "   ";
            cout << endl;
    }
    
    if(n%2==1 && m%2==1)
        printf("Середнiй елемент: z[%d][%d]=%d\n", n/2, m/2, z[n/2][m/2]); 
    else if(n%2==1 && m%2==0)
        printf("Середнiй елемент:\nz[%d][%d]=%d\nz[%d][%d]=%d\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]=%d\nz[%d][%d]=%d\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]=%d\n", (n-1)/2, (m-1)/2, z[(n-1)/2][(m-1)/2]);
        printf("z[%d][%d]=%d\n", (n-1)/2, m/2, z[(n-1)/2][m/2]);
        printf("z[%d][%d]=%d\n", n/2, (m-1)/2, z[n/2][(m-1)/2]);
        printf("z[%d][%d]=%d\n", n/2, m/2, z[n/2][m/2]);
    }
 
    system("pause");
}
 
dynamic::~dynamic()
{
    Destroy();
}
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
15.11.2013, 02:44
Ответы с готовыми решениями:

А почему ошибка, что функции print и read не определены в функции main()?
Что-то не понимаю. Они определены в заголовочном файле. А подчеркивается красным что нет.... #include &lt;iostream&gt; #include...

Ошибка формирования отчета в СКД: ошибка при попытке вычисления значения агрегатной функции
Решая свою задачку, нарыла формулу, в которой вылазит ошибка. И не могу понять.. Вот формула ВЫБОР КОГДА...

Ошибка в шаблоне функции: "Отсутствуют экземпляры шаблон функции, соответствующие списку аргументов"
#include &lt;iostream&gt; #include &lt;iterator&gt; #include &lt;map&gt; #include &lt;Windows.h&gt; #include &lt;functional&gt; #include &lt;string&gt; #include...

58
0 / 0 / 1
Регистрация: 24.02.2013
Сообщений: 146
15.11.2013, 06:45  [ТС]
Студворк — интернет-сервис помощи студентам
StackOverflow, не(

Добавлено через 1 минуту
Croessmah,
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
#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
{
    int         m;
    int         n;
 
    float       **z;
 
    void newMemory();
public:
    Dynamic();
    Dynamic(int,int,float);
    ~Dynamic();
 
    void write();
    void napus();
};
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
#include "dynamic.h"
 
using namespace std;
 
Dynamic::Dynamic() : z ( NULL ), n( n ), m( m )
{
    m = 0;
    n = 0;
 
    newMemory();
}
 
Dynamic::Dynamic(int n, int m, float l) : z ( NULL ), n( n ), m( m )
{
    newMemory();
 
    srand(time(NULL));
 
    for (int i = 1; i < n; i++)
        for(int j = 1; j < m; j++)
            z[ i ][ j ] = (rand() % 99 + 1);    
}
 
void Dynamic::write()
{
    cout << "Введите n и m: ";
    cin >> n >> m;
}
 
void Dynamic::newMemory ()
{
    z = new float * [ n ];
        for (int i = 0; i < n; i++)
            z [ i ] = new float [ m ];
}
 
void Dynamic::napus()
{
    printf("Наша матрица\n");
 
    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j < m; j++)
            cout << setw(4) << z[ i ][ j ];
            cout << endl;
    }
        
    if(n%2==1 && m%2==1)
        printf("Середнiй елемент: z[%d][%d]=%d\n", n/2, m/2, z[n/2][m/2]); 
    else if(n%2==1 && m%2==0)
        printf("Середнiй елемент:\nz[%d][%d]=%d\nz[%d][%d]=%d\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]=%d\nz[%d][%d]=%d\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]=%d\n", (n-1)/2, (m-1)/2, z[(n-1)/2][(m-1)/2]);
        printf("z[%d][%d]=%d\n", (n-1)/2, m/2, z[(n-1)/2][m/2]);
        printf("z[%d][%d]=%d\n", n/2, (m-1)/2, z[n/2][(m-1)/2]);
        printf("z[%d][%d]=%d\n", n/2, m/2, z[n/2][m/2]);
    }
 
    system("pause");
}
 
Dynamic::~Dynamic()
{
    for ( int j = 0; j < m; j++ )
    {
        delete [] z[ j ];
    }
    delete [] z;
 
    z = 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
30
31
32
33
#include "dynamic.h"
 
using namespace std;
 
int main()
{
    setlocale(LC_ALL, "Rus");
 
    Dynamic dynamic;
 
    do
    {
        cout << "Виберiть один з запропонованих варiантiв" << endl;
        cout << "1. Ввести даннi" << endl;
        cout << "2. Вивести даннi" << endl;
        cout << "e. Вихiд" << endl << endl;
 
        int key = _getch ();
 
        switch (key)
        {
            case '1':   dynamic.write();                break;
            case '2':   dynamic.napus();                break;
 
            case 'e':
            {return 0;}
            default:
                cout << "Невiрний вибiр! Натиснiть будь-яку клавiшу для продовження..." << endl;
                _getch ();
        }
 
    } while (true);
}
0
All rights reserved.
93 / 83 / 24
Регистрация: 03.08.2013
Сообщений: 258
15.11.2013, 06:48
tAruuuch,
строки 7 и 8 уже не нужны.
write поправьте, как я говорил. Киньте туда заполнение массива рандомом.
0
0 / 0 / 1
Регистрация: 24.02.2013
Сообщений: 146
15.11.2013, 06:50  [ТС]
StackOverflow, так при запуске выдает ошибку
0
All rights reserved.
93 / 83 / 24
Регистрация: 03.08.2013
Сообщений: 258
15.11.2013, 06:53
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Так, попробуйте сделать так:
Dynamic::Dynamic() : z ( NULL ), n( 0 ), m( 0 )
{}
 
void Dynamic::write()
{
    cout << "Введите n и m: ";
    cin >> n >> m;
 
    newMemory();
    
    for (int i = 1; i < n; i++)
        for(int j = 1; j < m; j++)
            z[ i ][ j ] = (rand() % 99 + 1);
}
0
Неэпический
 Аватар для Croessmah
18150 / 10732 / 2067
Регистрация: 27.09.2012
Сообщений: 27,047
Записей в блоге: 1
15.11.2013, 06:54
tAruuuch, а код main где?
0
0 / 0 / 1
Регистрация: 24.02.2013
Сообщений: 146
15.11.2013, 06:57  [ТС]
Croessmah, там 3 кода один dynamic.h второй dynamic.cpp третий test.cpp

я там 3 выложил

Добавлено через 22 секунды
Croessmah,
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
#include "dynamic.h"
 
using namespace std;
 
int main()
{
    setlocale(LC_ALL, "Rus");
 
    Dynamic dynamic;
 
    do
    {
        cout << "Виберiть один з запропонованих варiантiв" << endl;
        cout << "1. Ввести даннi" << endl;
        cout << "2. Вивести даннi" << endl;
        cout << "e. Вихiд" << endl << endl;
 
        int key = _getch ();
 
        switch (key)
        {
            case '1':   dynamic.write();                break;
            case '2':   dynamic.napus();                break;
 
            case 'e':
            {return 0;}
            default:
                cout << "Невiрний вибiр! Натиснiть будь-яку клавiшу для продовження..." << endl;
                _getch ();
        }
 
    } while (true);
}
0
All rights reserved.
93 / 83 / 24
Регистрация: 03.08.2013
Сообщений: 258
15.11.2013, 06:57
В main() return 0 не хватает (как то хитро у вас там реализовано...)
Сделайте вот так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
    bool checking = true;
    do {
    ....
        case 'e':
            checking = false;
            break;
        default:
            break;
    ....
    } while ( checking == true )
 
    return 0
}
0
0 / 0 / 1
Регистрация: 24.02.2013
Сообщений: 146
15.11.2013, 06:58  [ТС]
StackOverflow, теперь оно запустило сгенерировало массив но ответы выводит не правельные( и при выходе ошибку выдает и крешит
0
All rights reserved.
93 / 83 / 24
Регистрация: 03.08.2013
Сообщений: 258
15.11.2013, 07:02
Ну уже лучше
Выкладывайте сюда всю "ругань" компилятора!)
0
0 / 0 / 1
Регистрация: 24.02.2013
Сообщений: 146
15.11.2013, 07:05  [ТС]
StackOverflow, вот сейчас запустило рандомит массив, закрывает прогу, но когда выводить центральную точку или две центральные то выводит просто 0
0
Неэпический
 Аватар для Croessmah
18150 / 10732 / 2067
Регистрация: 27.09.2012
Сообщений: 27,047
Записей в блоге: 1
15.11.2013, 07:08
проверьте, не проверял
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
//Ваши includ'ы (некоторые не нужны)
class Dynamic
{
    float       **z;
    int         n; 
    int         m;
    void deallocate() ;
    void newMemory();
public:
    Dynamic();
    Dynamic(int,int,float);
    ~Dynamic();
 
    void write();
    void napus();
};
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
#include "dynamic.h"
 
using namespace std;
 
Dynamic::Dynamic() : z ( NULL ), n( 0 ), m( 0 )
{
    newMemory();
}
 
Dynamic::Dynamic(int n_, int m_, float l) : z ( NULL ), n( n_ ), m( m_ )
{
    newMemory();
 
    srand(time(NULL));
 
    for (int i = 1; i < n; i++)
        for(int j = 1; j < m; j++)
            z[ i ][ j ] = (rand() % 99 + 1);    
}
 
void Dynamic::write()
{
    cout << "Введите n и m: ";
    cin >> n >> m;
    newMemory ( ) ;//n и m поменяли, значит нужно перевыделить память
}
 
void Dynamic::newMemory ()
{
    if ( m == 0 || n == 0 )
        return ;
    deallocate ( ) ;//сначала удалим старую память, если такая была выделена
    z = new float * [ n ];
    for (int i = 0; i < n; i++) {
        z [ i ] = new float [ m ];
        for ( int d = 0 ; d < m ; ++ d ) // инициализируем нулями
            z [ i ] [ d ] = 0.0f ;
    }
}
 
void Dynamic::napus()
{
    printf("Наша матрица\n");
 
    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j < m; j++)
            cout << setw(4) << z[ i ][ j ];
            cout << endl;
    }
        
    if(n%2==1 && m%2==1)
        printf("Середнiй елемент: z[%d][%d]=%d\n", n/2, m/2, z[n/2][m/2]); 
    else if(n%2==1 && m%2==0)
        printf("Середнiй елемент:\nz[%d][%d]=%d\nz[%d][%d]=%d\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]=%d\nz[%d][%d]=%d\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]=%d\n", (n-1)/2, (m-1)/2, z[(n-1)/2][(m-1)/2]);
        printf("z[%d][%d]=%d\n", (n-1)/2, m/2, z[(n-1)/2][m/2]);
        printf("z[%d][%d]=%d\n", n/2, (m-1)/2, z[n/2][(m-1)/2]);
        printf("z[%d][%d]=%d\n", n/2, m/2, z[n/2][m/2]);
    }
 
    system("pause");
}
 
Dynamic::~Dynamic()
{
    deallocate ( ) ; 
    z = 0;
}
 
void Dynamic::deallocate ( ) {
    if ( z == NULL )//если память не выделена, тогда ничего не делаем
        return ;
    for ( int j = 0; j < m; j++ )
    {
        delete [] z[ j ];
    }
    delete [] z;
    z = NULL ;
}
так же нужен оператор присваивания и конструктор копий, а вообще класс построен не ахти

Не по теме:

Добавлено через 33 секунды

Цитата Сообщение от StackOverflow Посмотреть сообщение
В main() return 0 не хватает
он не обязателен в main

0
All rights reserved.
93 / 83 / 24
Регистрация: 03.08.2013
Сообщений: 258
15.11.2013, 07:08
Ээм, не совсем представляю, о чём вы, к сожалению)
Дело скорее всего уже в вашем алгоритме нахождения.
1
0 / 0 / 1
Регистрация: 24.02.2013
Сообщений: 146
15.11.2013, 07:11  [ТС]
Croessmah, теперь оно не выходить с программы опять, но и матрицу не генерирует( все 0 выводит

Добавлено через 1 минуту
StackOverflow, просто алгорит не в классе работает все нормально находит, да и в классе находило нормально но вот когда дело дошло до конструктора все пошло жопой(
0
Неэпический
 Аватар для Croessmah
18150 / 10732 / 2067
Регистрация: 27.09.2012
Сообщений: 27,047
Записей в блоге: 1
15.11.2013, 07:12
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
void Dynamic::napus()
{
    if ( z == NULL ) { //Здесь тоже на NULL проверяем
        printf("Матрица еще не создана\n\n"); 
        return ;
    }
    printf("Наша матрица\n");
    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j < m; j++)
            cout << setw(4) << z[ i ][ j ];
            cout << endl;
    }
        
    if(n%2==1 && m%2==1)
        printf("Середнiй елемент: z[%d][%d]=%d\n", n/2, m/2, z[n/2][m/2]); 
    else if(n%2==1 && m%2==0)
        printf("Середнiй елемент:\nz[%d][%d]=%d\nz[%d][%d]=%d\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]=%d\nz[%d][%d]=%d\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]=%d\n", (n-1)/2, (m-1)/2, z[(n-1)/2][(m-1)/2]);
        printf("z[%d][%d]=%d\n", (n-1)/2, m/2, z[(n-1)/2][m/2]);
        printf("z[%d][%d]=%d\n", n/2, (m-1)/2, z[n/2][(m-1)/2]);
        printf("z[%d][%d]=%d\n", n/2, m/2, z[n/2][m/2]);
    }
 
    system("pause");
}
Добавлено через 54 секунды
Цитата Сообщение от tAruuuch Посмотреть сообщение
но и матрицу не генерирует
так у Вас нет кода, вызывающего генерацию матрицы.
0
0 / 0 / 1
Регистрация: 24.02.2013
Сообщений: 146
15.11.2013, 07:26  [ТС]
Croessmah, а если мне нужно в 3 моих конструкторах какие есть по заданию, в каждом разные матрицы генерировать как мне быть? просто гененрировать в той же ф-ции napus() я могу и тогда все будет ровно но тогда конструкторы вообще не нужны тут( а мне нужно реализовать 3 конструктора

Добавлено через 9 минут
вот такое вот кончиное задание

• с тремя аргументами ( третий аргумент - по умолчанию ) - динамично резервирует память на заданное количество строк и столбцов и заполняет матрицу заданным значением; если значение ( третий аргумент ) отсутствует , заполняет матрицу случайными числами из диапазона 0 ... 99;
• с тремя аргументами - динамично резервирует память на заданное количество строк и столбцов и заполняет матрицу значениями из вещественной матрицы , указатель на которую передан в третьем аргументе ;
• с шестью аргументами - динамично резервирует память на заданное количество строк и столбцов и заполняет случайными числами из диапазона 0 ... 99 подматрицу , заданную парой координат (левого верхнего и правого нижнего угла) .
0
Неэпический
 Аватар для Croessmah
18150 / 10732 / 2067
Регистрация: 27.09.2012
Сообщений: 27,047
Записей в блоге: 1
15.11.2013, 07:28
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
class Dynamic
{
    float       **z;
    int         n; 
    int         m;
    void deallocate() ;
    void newMemory();
public:
    Dynamic();
    Dynamic(int,int,float);
    Dynamic(int,int);
    ~Dynamic();
    void randomGenerate ( ) ;
    void write();
    void napus();
    void fillMatrix ( float ) ;
};
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 "dynamic.h"
 
using namespace std;
 
Dynamic::Dynamic() : z ( NULL ), n( 0 ), m( 0 )
{
    newMemory();
    fillMatrix ( 0.0f ) ;
}
 
Dynamic::Dynamic(int n_, int m_, float l) : z ( NULL ), n( n_ ), m( m_ )
{
    newMemory ( ); 
    fillMatrix ( l ) ;
}
 
Dynamic::Dynamic(int n_, int m_) : z ( NULL ), n( n_ ), m( m_ )
{
    newMemory ( ); 
    randomGenerate ( ) ; 
}
 
void Dynamic::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);   
}
 
 
void Dynamic::write()
{
    cout << "Введите n и m: ";
    cin >> n >> m;
    newMemory ( ) ;//n и m поменяли, значит нужно перевыделить память
}
 
 
 
void Dynamic::newMemory ()
{
    if ( m == 0 || n == 0 )
        return ;
    deallocate ( ) ;//сначала удалим старую память, если такая была выделена
    z = new float * [ n ];
    for (int i = 0; i < n; i++) {
        z [ i ] = new float [ m ];
    }
}
 
void Dynamic::fillMatrix ( float 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 < n; i++)
    {
        for (int j = 0; j < m; j++)
            cout << setw(4) << z[ i ][ j ];
            cout << endl;
    }
        
    if(n%2==1 && m%2==1)
        printf("Середнiй елемент: z[%d][%d]=%f\n", n/2, m/2, z[n/2][m/2]); 
    else if(n%2==1 && m%2==0)
        printf("Середнiй елемент:\nz[%d][%d]=%f\nz[%d][%d]=%f\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]=%f\nz[%d][%d]=%f\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]=%f\n", (n-1)/2, (m-1)/2, z[(n-1)/2][(m-1)/2]);
        printf("z[%d][%d]=%f\n", (n-1)/2, m/2, z[(n-1)/2][m/2]);
        printf("z[%d][%d]=%f\n", n/2, (m-1)/2, z[n/2][(m-1)/2]);
        printf("z[%d][%d]=%f\n", n/2, m/2, z[n/2][m/2]);
    }
 
    system("pause");
}
 
Dynamic::~Dynamic()
{
    deallocate ( ) ; 
    z = 0;
}
 
void Dynamic::deallocate ( ) {
    if ( z == NULL )//если память не выделена, тогда ничего не делаем
        return ;
    for ( int j = 0; j < m; j++ )
    {
        delete [] z[ j ];
    }
    delete [] z;
    z = NULL ;
}
C++
1
2
3
4
5
6
7
8
int main ( ) {
//...
        switch (key)
        {
            case '1':   dynamic.write(); dynamic.randomGenerate ( );    break;
            case '2':   dynamic.napus();                break;
//...
}
1
0 / 0 / 1
Регистрация: 24.02.2013
Сообщений: 146
15.11.2013, 07:49  [ТС]
Croessmah, спасибо работает, а вы бы не могли мне еще чучуть помочь с 2мя конструкторами просто очень нужно сделать и сдать ибо не допуск будет и кранты( а сдавать через 3 часа(

Добавлено через 13 минут
Croessmah, если вам не сложно вы сможете сделать эти 3 конструктора, потому что я очень плохо с ними лажу( сколько сидел разбирался ну вот не могу, а сдать сегодня нужно(, если вам конечно не сложно
0
Неэпический
 Аватар для Croessmah
18150 / 10732 / 2067
Регистрация: 27.09.2012
Сообщений: 27,047
Записей в блоге: 1
15.11.2013, 08:21
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
class Dynamic
{
    float       **z;
    int         n; 
    int         m;
    void deallocate() ;
    void newMemory();
    void randomGenerateSubMatrix ( int , int , int , int ) ;
    void fillFromMatrix ( float ** ) ;
public:
    Dynamic(int,int);
    Dynamic(int,int,float);
    Dynamic(int,int,float**);
    Dynamic(int,int,int,int,int,int);
    ~Dynamic();
    void randomGenerate ( ) ;
    void write();
    void napus();
    void fillMatrix ( float ) ;
};
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
#include "dynamic.h"
 
using namespace std;
 
 
Dynamic::Dynamic(int n_, int m_, float l) : z ( NULL ), n( n_ ), m( m_ )
{
    newMemory ( ); 
    fillMatrix ( l ) ;
}
 
void Dynamic::randomGenerateSubMatrix ( int left , int top , int right , int bottom ) {
    srand(time(NULL));
    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 )
                z[ x ][ y ] = (rand() % 99 + 1); 
    } 
}
 
void Dynamic::fillFromMatrix ( float ** 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 ,float** p ): z(NULL ) , n(w) , m (h) {
    newMemory ( ) ;
    fillFromMatrix ( p ) ;
}
 
 
void Dynamic::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);   
}
 
 
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 float * [ n ];
    for (int i = 0; i < n; i++) {
        z [ i ] = new float [ m ];
    }
}
 
void Dynamic::fillMatrix ( float 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]=%f\n", n/2, m/2, z[n/2][m/2]); 
    else if(n%2==1 && m%2==0)
        printf("Середнiй елемент:\nz[%d][%d]=%f\nz[%d][%d]=%f\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]=%f\nz[%d][%d]=%f\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]=%f\n", (n-1)/2, (m-1)/2, z[(n-1)/2][(m-1)/2]);
        printf("z[%d][%d]=%f\n", (n-1)/2, m/2, z[(n-1)/2][m/2]);
        printf("z[%d][%d]=%f\n", n/2, (m-1)/2, z[n/2][(m-1)/2]);
        printf("z[%d][%d]=%f\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 ;
}
а вообще лучше всё переделать, имхо!
1
0 / 0 / 1
Регистрация: 24.02.2013
Сообщений: 146
15.11.2013, 08:45  [ТС]
Croessmah, мне это сдать, и работать совсем с другим проектом, это было тупое задание прилягающее, а дальше у меня просто улучшение одного проекта

Добавлено через 18 минут
Croessmah, а как в главное программе вывести эти конструкторы?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
15.11.2013, 08:45

Ошибка "Присваивание имени функции вне тела этой функции" при наличии двух одноименных функций в одном контексте
Данный код: type T = class public function F: integer; begin F := 2; end; function F(x:...

График функции и ошибка "Неверное число параметров функции"
Program aaa; Uses GraphABC; Var x,y:integer; Begin For x:=0 to 360 do Begin Y:=Round( sin(x*3,14/180)*100); ...

Ошибка функции
выбивает ошибку функции

Ошибка в функции!
Доброго времени суток! Написал функцию которая возращает True если строка Sample (это строка из шестнадцеричных чисел) длиной Leng...

Ошибка в функции
Добрый день. Пожалуйста подскажите почему не работает функция, вроде с синтаксисом все нормально: function av_pereplata_func...


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

Или воспользуйтесь поиском по форуму:
59
Ответ Создать тему
Новые блоги и статьи
Транслитерация текста с кириллицы на латиницу (вариант №2)
Maks 13.11.2026
Обновленная версия ранее созданной обработки. Добавлено: - Проверка исходного текста на кириллицу, через обращение к стандартной функции "ТолькоКириллицаВСтроке" из общего модуля. . .
Часы с термометром и праздничным календарем
yariko 12.11.2026
Сегодня мы рассмотрим как можно сделать отличные многофункциональные часы. Итак, поставим конкретную задачу: разработать часы с календарем, двумя термодатчиками, выводом поздравительных сообщений. . .
Транслитерация текста с кириллицы на латиницу (вариант №1)
Maks 11.11.2026
Решил облегчить жизнь себе и коллегам админам при создании электронных почтовых ящиков для пользователей, в результате написал обработку "Транслитерация текста" с кириллицы на латиницу, а в ней. . .
Книги по геймдизайну, левел-дизайну, игровым механикам и проектированию игрового опыта
8Observer8 08.11.2026
Содержание блога | English Version 1. 2003 - 06 - Designing Virtual Worlds (1st Edition) Автор: Richard A. Bartle | Объем: 768 стр. Ссылки: Amazon . . .
Как только я захожу к себе в свою комнату я сразу же с себя снимаю свои трусы. Ответ от Джемени ИИ.
zorxor 08.11.2026
Джемени, как только я захожу к себе в свою комнату я сразу же с себя снимаю свои трусы. Многие люди, возвращаясь домой, сразу переодеваются в максимально свободную одежду или вовсе предпочитают. . .
Паттерн очереди действий/команд (Action / Command Queue). Система очереди действий и кат-сцен с SDL3 Callbacks, cglm и OpenGL
8Observer8 07.11.2026
Содержание блога | English Version Руководство для начинающих по реализации паттерна очереди действий/ команд (Action / Command Queue) на C++ (C++20) с использованием официального SDL3 Callbacks. . .
Проверка полного ФИО в типовом справочнике
Maks 07.11.2026
Решение реализовано в конфигурации КА2, на примере справочника "КонтактныеЛицаПартнеров". Задача: Запрет инициалов. Не допускаеть использование сокращений вида "И. И. ", "И. И. ", "И И" и. . .
Про "Windows must die!"
kumehtar 04.11.2026
Знаете, чет накатило. . . . Когда-то это было почти боевым кличем: мол, нормальный человек сидит на DOS, OS/ 2 или Linux, а вот это вот - Must Die. А теперь человек произносит «мастдай» с усмешкой - и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru