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

Ошибка в функции - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Задан массив, элементы которого принимают значения 0 или 1. Написать программу поиска наибольшего по длине участка, заполненного единицами. Вывести на http://www.cyberforum.ru/cpp-beginners/thread1008339.html
Задан массив, элементы которого принимают значения 0 или 1. Написать программу поиска наибольшего по длине участка, заполненного единицами. Вывести на экран индексы начала и конца найденого участка. #include <iostream> #include <stdio.h> #include <conio.h> #include <math.h> #include <iomanip> using namespace std; void func2 (void);
C++ Распараллеливание вычислений Здравствуйте. Может кто сможет подсказать как мне решить следующую задачу: необходимо распараллелить следующий последовательный код: #include <stdio.h> #include <stdlib.h> #define ISIZE 400 #define JSIZE 400 int main(int argc, char **argv) { http://www.cyberforum.ru/cpp-beginners/thread1008333.html
Оптимизация обмена C++
Дан файл последовательного доступа размером не менее 384 Кбайт, содержащий информацию числового типа. Переписать этот файл в ОП 10 раз поблочно, с использованием алгоритма чтения "от конца файла". Характеристика: размер блока считывания (1-1024 байт).
не могу подключить framework google c++ testing в проект C++
не могу подключить framework google c++ testing в проект пользовался инструкцией с сайта http://habrahabr.ru/company/infopulse/blog/164471/ выводит такие ошибки: как можно подключить? и что я неправильно делаю?
C++ Написать через оператор while http://www.cyberforum.ru/cpp-beginners/thread1008323.html
Здравствуйте, возник такой вопрос. Написал совсем простенькую программу и вроде бы всё хорошо, но тут возникла некоторая обходимость. #include "iostream.h" #include "math.h" int main() double n,s,x; int i; cout << "Vvedite n,x" << endl; cin >> n >> a; s=0;
C++ m - мерный массив Дано n точек m мерного пространства, каждая точка имеет массу. Найти координаты точки наиболее удаленной от точки центра масс. Помогите плз... подробнее

Показать сообщение отдельно
Croessmah
Модератор
Эксперт CЭксперт С++
13147 / 7410 / 830
Регистрация: 27.09.2012
Сообщений: 18,243
Записей в блоге: 3
Завершенные тесты: 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 ;
}
а вообще лучше всё переделать, имхо!
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru