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

Нарушение прав доступа при чтении - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Статический указатель http://www.cyberforum.ru/cpp-beginners/thread923809.html
пример, есть такая конструкция например: class A { ... }; class B { private:
C++ Работа со спискаси Как удалить карточку из списка? http://www.cyberforum.ru/cpp-beginners/thread923801.html
C++ особенности передачи по "&&"
я не знаю как называется передача по "&&" . я называю "по двум загогулинам." вопрос №1: есть работающий код#include <iostream> void foo(const int&) { std::cout << "Hello! I'm foo(const int&)" << std::endl; } void foo(int&&) { std::cout << "Hello! I'm foo(int&&)" << std::endl; } template <class T> void bar(T&& t)
Шаблон класса строк - ошибка компиляции C++
Добрый вечер. Пытаюсь выполнить упражнение с учебника. Gcc выдаёт следующее: /home/ilyuha21st/Projects/qtcreator/cpp_some1/main.cpp:148: error: need 'typename' before 'String<C>::Cref' because 'String<C>' is a dependent scope #include <iostream> #include <cstring> template<class C> class String { struct Srep; Srep* rep; class Cref;
C++ Явная специализация, зачем она нужна?(Шаблоны функций) http://www.cyberforum.ru/cpp-beginners/thread923763.html
Какой смысл в явной специализации, когда есть перегрузка? если можно, и примерчик) я себе уже в голову вбил, и тут надо чем-то тяжелым выбивать, что специализация - нужная вещь XD и если можно, литературу хорошую именно на эту тему(Шаблоны функций). спасибо :)
C++ Bool Обьясните мне, как они pаботают и где их пpименять =( Вот с помощью учебника написал пpогу #include "stdafx.h" #include <iostream> using namespace std; int _tmain(int argc, _TCHAR* argv) { int a=2; подробнее

Показать сообщение отдельно
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
16.07.2013, 22:58     Нарушение прав доступа при чтении
Не знаю, правильно ли считает, но прежней ошибки нет:
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
#include <iostream>
#include <iomanip>
#include <conio.h>
#include <stdio.h>
#include <string>
#include <time.h>
#include <cmath>
 
short int index = 0;
double det = 0;
bool index_bool = false;
 
void Enter__Check ( double & );
void Enter__Array ( double ** &,  const short int & );
void Output_Array ( double ** &,  const short int & );
void Check__Zeros   ( double ** &, const short int &, short int *, bool * );
double Determinant  ( double ** , const short int &, short int *, bool * );
double **  Matrix_Minor ( double ** &, const short int &, short int, short int );
 
int main()
{
    setlocale (LC_ALL,"RUSSIAN");
    
    short int size;
    std::cin >> size;
    
    double ** Matrix_A = new double * [ size ];
    for ( int i = 0; i < size; i ++ )
        Matrix_A [i] = new double [ size ];
   
    Enter__Array (  Matrix_A, size );
    printf ( "\n%3s", " Матрица А \n\n" );
        Output_Array (  Matrix_A, size );
    det = Determinant (  Matrix_A, size, & index, & index_bool );
    printf ("\n%3G", det );
    _getch ();
    return 0;
}
void Enter__Check ( double & number)
{
    std::string symbol;
    do
    {
        std::cin >> number;
        if ( std::cin.fail () )
        {
            std::cin.clear ();
            std::cin >> symbol;
            printf ( " %s\n ", " Это не число! Повторите ввод данных " ); continue;
        }
        else break;
    }
    while ( true );
}
void Enter__Array ( double  ** & Matrix, const short int & size )
{
    double element;
    printf ( "\n%3s", " Введите элементы массива \n\n" );
    for ( int i = 0; i < size; i ++ )
        for ( int j = 0; j < size; j ++ )
        {
            printf ( " %+20 Matrix [ %d ] [ %d ] = ", i, j );
            Enter__Check (  element );
            Matrix [i][j] = element;
        }
}
void Output_Array ( double ** & Matrix, const short int & size )
{
    for ( int i = 0; i < size; i ++ ){
        for ( int j = 0; j < size; j ++ )
            printf ( "%10G\t", Matrix [i][j] );
        printf ( "\n");}
}
/*_________________ Вычисление определителя матрицы ______________________________*/
 
double Determinant ( double ** Matrix, const short int & size, short int * index_number, bool * index_check )
{
    double determinant = 0;
    if ( size == 1 ) return Matrix [0][0];
    else
    {
        Check__Zeros ( Matrix, size, & index, & index_bool );
        if ( * index_check )
        {
 
            for ( int i = 0; i < size; i ++ )
            {
                if ( Matrix [ * index_number ] [i] == 0 ) continue;
                else { determinant += 2 * ( -1, * index_number + i ) * Matrix [ * index_number ] [i] * 
                    Determinant ( Matrix_Minor ( Matrix, size, * index_number, i ), size - 1, & index, & index_bool );
                }
            }
        }
        else
        {
            for ( int j = 0; j < size; j ++ )
            {
                if ( Matrix [j] [ * index_number ] == 0 ) continue;
                else { determinant += 2 * ( -1, j + * index_number ) * Matrix [j] [ * index_number ] *
                    Determinant ( Matrix_Minor ( Matrix, size, j, * index_number ), size - 1, & index, & index_bool );
 
                }
            }
        }
    }
    return ( determinant );
}
/*_______________________________________________ Нахождение нулей ___________________________*/
void Check__Zeros   ( double ** & Matrix, const short int & size, short int * index_number, bool * index_check )
{
    short int bool_line = 0, bool_columns = 0, max_line = 0, max_columns = 0, line_number = 0, columns_number = 0;
    for ( int i = 0; i < size; i ++ )
    {
        for ( int j = 0; j < size; j ++ )
        {
            if ( Matrix [i][j] == 0 )
            {
                bool_line ++;
                if ( j == size - 1 && max_line < bool_line )
                {
                    max_line = bool_line; line_number = i;
                }
            }
            if ( Matrix [j][i] == 0 )
            {
                bool_columns ++;
                if ( j == size - 1 && max_columns < bool_columns )
                {
                    max_columns = bool_columns; columns_number = i;
                }
            }
        }
        bool_line = 0; bool_columns = 0;
    }
    if ( max_line >= max_columns )
    {
        * index_check = true;
        * index_number = line_number;
    }
    else
    {
        * index_check = false;
        * index_number = columns_number;
    }
}
/*________________________ Миноры ____________________*/
double ** Matrix_Minor ( double ** & Matrix, const short int & size, short int cut_line, short int cut_columns )
{
    short int cut_size = size - 1;
    double ** Matrix_cut = new double * [ cut_size ];
    for ( int i = 0; i < cut_size; i ++ )
        Matrix_cut [i] = new double [ cut_size ];
    short int n = 0, m = 0;
    for ( int i = 0; i < size; i ++ )
    {
        if ( i != cut_line )
        {
            for ( int j = 0; j < size; j ++ )
            {
                if ( j != cut_columns )
                {
                    Matrix_cut [n][m] = Matrix [i][j];
                    m ++;
                }
                else continue;
            }
            n ++; m = 0;
        }
        else continue;
    }
    return ( Matrix_cut );
}
Добавлено через 4 минуты
По-моему, здесь ссылки на указатели на указатели не нужны. Достаточно просто указателей на указатели. Если убрать, то работает точно так же.
 
Текущее время: 01:50. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru