Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
Lil Crazy
6 / 6 / 2
Регистрация: 23.03.2009
Сообщений: 198
1

Ошибка, связанная с массивами

02.09.2009, 22:26. Просмотров 916. Ответов 19
Метки нет (Все метки)

Вот такой код для такой задачи: записать в массиве М количество положительных элементов каждого столбца матрицы A(K,L).
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
#include <iostream>
#include <stdio.h>
#include <conio.h>
#include <math.h>
 
int **ReadMatrixFromFile(int &K, int &L); 
int **CreateMatrix(const int K, const int L); 
void FreeMatrix(int **X, const int L); 
void CountPositiveElementsIn(int **X, const int K, const int L, int **A);
void PrintMatrix(int **X, const int K, const int L);
void WriteArrayToFile(int **A, const int K, const int L);
 
void main()
{  
    int K,L;
    printf("This program write the number of positive elemnts every row in array.\n");
    int **X=ReadMatrixFromFile(K,L);
    int **A=CreateMatrix(K,1);
    printf("Initial matrix:\n");
    PrintMatrix(X,K,L);
    CountPositiveElementsIn(X,K,L,A);
    printf("Result array:\n");
    PrintMatrix(A,K,1);
    WriteArrayToFile(X,K,1);
    FreeMatrix(X,K);
    FreeMatrix(A,K);
    printf("The program work is completed. For exiting press Enter.\n");
    getch();
}
 
void CountPositiveElementsIn(int **X, const int K, const int L, int **A)
{
    int i,j,z;
    for (i=0;i<K;i++)
    {
        for(j=0;j<L;j++)
        {
            if (X[i][j]>0)
            {
                A[z]++;
            }
        }
    }
}
 
void PrintMatrix(int **X, const int K, const int L)
{
    int i,j;
    for (i=0;i<K;i++)
    {
        for (j=0;j<L;j++)
        {
            printf("%5i",X[i][j]);
        }
        printf("\n");
    }
}
 
void FreeMatrix(int **X, const int K)
{
    int i;
    for(i=0; i<K; i++)
    {
        delete[] X[i];
    }
    delete[] X;
}
 
int **CreateMatrix(const int K,const int L)
{
    int i;
    int ** X = new int*[K];
    for(i=0; i<K; i++)
    {
         X[i] = new int[L];
    }
    return X;
}
 
void CheckingDimensionOfMatrix(const int K, const int L)
{
    if ((K<1) || (L<1)) 
    {
        printf("Matrix has the wrong dimension, that is less than unity. For exiting press Enter.\n");
        getch();
        exit(1);
    }
}
 
int **ReadMatrixFromFile(int &K, int &L)
{
    FILE *InputFile;
    char PathIn[25];
    int i,j;
    printf("Enter a path for input file: ");
    scanf("%s",PathIn); 
    if ((InputFile=fopen(PathIn, "r")) == NULL )
    {
        perror(PathIn);
        exit;
    }
    fscanf(InputFile,"%d ",&K);
    fscanf(InputFile,"%d ",&L);
    CheckingDimensionOfMatrix(K,L);
    int ** X=CreateMatrix(K,L); 
    for (i=0;i<K;i++)
    {
         for (j=0;j<L;j++)
            fscanf (InputFile,"%d ",&X[i][j]);
    }
    fclose(InputFile); 
    return X;
}
 
void WriteMatrixToFile(int **X, const int K, const int L)
{
    int i,j;
    FILE *OutputFile;
    char PathOut[25];
    printf("Enter a path for output result file: ");
    scanf("%s",PathOut);  
    OutputFile=fopen(PathOut,"w+");
    for (i=0;i<K;i++)
    {
        for (j=0;j<L;j++)
        {
            fprintf(OutputFile,"%4d",X[i][j]);
        }
        fprintf(OutputFile,"\n");
    }
    fclose(OutputFile); 
}
Причём даже не знаю верно ли решение задачи...
А ошибки компилятор выдаёт такие:
Ошибка 12 error LNK2019: ссылка на неразрешенный внешний символ "void __cdecl WriteArrayToFile(int * *,int,int)" (?WriteArrayToFile@@YAXPAPAHHH@Z) в функции _main KKR.obj KKR
Ошибка 13 fatal error LNK1120: 1 неразрешенных внешних элементов F:\Документы\Политех\Программирование\Курсач\B KKR
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.09.2009, 22:26
Ответы с готовыми решениями:

Задача связанная с символьными массивами и функциями
Добрый день Помогите пожалуйста с этой задачей никак не выходит у меня. Заранее спасибою ...

Ошибка связанная с string
Не выполняется условие,хотя указываю всё верно.Возможно из-за того,что в условие идёт равно ==,а не...

Ошибка, связанная с переполнением буфера
В общем, данный код рабочий, собираю на VS2013, при компиляции выдает переполнение буфера. Другие...

Ошибка связанная с Динамическим массивом
#include &lt;iostream&gt; #include &lt;cstring&gt; int main() { using namespace std; char * ch = new...

Ошибка в функции, связанная с использованием памяти
Все доброго времени суток. Помогите, пожалуйста, найти ошибку в моей функции: #include...

19
zim22
depict1
276 / 141 / 4
Регистрация: 11.07.2009
Сообщений: 606
02.09.2009, 23:01 2
C++
1
void WriteArrayToFile(int **A, const int K, const int L);
тело функции где?
0
M128K145
Эксперт JavaЭксперт С++
8326 / 3547 / 420
Регистрация: 03.07.2009
Сообщений: 10,708
02.09.2009, 23:07 3
zim22, я так подозреваю, что вот
C++
1
void WriteMatrixToFile(int **X, const int K, const int L)
только ТС в названиях запутался

Вот
так
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
#include <iostream>
#include <stdio.h>
#include <conio.h>
#include <math.h>
 
int **ReadMatrixFromFile(int &K, int &L); 
int **CreateMatrix(const int K, const int L); 
void FreeMatrix(int **X, const int L); 
void CountPositiveElementsIn(int **X, const int K, const int L, int **A);
void PrintMatrix(int **X, const int K, const int L);
void WriteMatrixToFile(int **A, const int K, const int L);
 
void main()
{  
        int K,L;
    printf("This program write the number of positive elemnts every row in array.\n");
        int **X=ReadMatrixFromFile(K,L);
        int **A=CreateMatrix(K,1);
    printf("Initial matrix:\n");
    PrintMatrix(X,K,L);
    CountPositiveElementsIn(X,K,L,A);
    printf("Result array:\n");
        PrintMatrix(A,K,1);
    WriteArrayToFile(X,K,1);
        FreeMatrix(X,K);
        FreeMatrix(A,K);
        printf("The program work is completed. For exiting press Enter.\n");
        getch();
}
 
void CountPositiveElementsIn(int **X, const int K, const int L, int **A)
{
        int i,j,z;
        for (i=0;i<K;i++)
        {
        for(j=0;j<L;j++)
                {
                        if (X[i][j]>0)
                        {
                                A[z]++;
                        }
                }
        }
}
 
void PrintMatrix(int **X, const int K, const int L)
{
        int i,j;
        for (i=0;i<K;i++)
        {
                for (j=0;j<L;j++)
                {
                        printf("%5i",X[i][j]);
                }
                printf("\n");
        }
}
 
void FreeMatrix(int **X, const int K)
{
        int i;
        for(i=0; i<K; i++)
        {
                delete[] X[i];
        }
        delete[] X;
}
 
int **CreateMatrix(const int K,const int L)
{
        int i;
        int ** X = new int*[K];
    for(i=0; i<K; i++)
        {
         X[i] = new int[L];
        }
        return X;
}
 
void CheckingDimensionOfMatrix(const int K, const int L)
{
        if ((K<1) || (L<1)) 
        {
                printf("Matrix has the wrong dimension, that is less than unity. For exiting press Enter.\n");
                getch();
                exit(1);
        }
}
 
int **ReadMatrixFromFile(int &K, int &L)
{
        FILE *InputFile;
        char PathIn[25];
        int i,j;
        printf("Enter a path for input file: ");
    scanf("%s",PathIn); 
        if ((InputFile=fopen(PathIn, "r")) == NULL )
        {
                perror(PathIn);
                exit;
        }
        fscanf(InputFile,"%d ",&K);
    fscanf(InputFile,"%d ",&L);
        CheckingDimensionOfMatrix(K,L);
        int ** X=CreateMatrix(K,L); 
        for (i=0;i<K;i++)
        {
         for (j=0;j<L;j++)
            fscanf (InputFile,"%d ",&X[i][j]);
        }
        fclose(InputFile); 
        return X;
}
 
void WriteMatrixToFile(int **X, const int K, const int L)
{
        int i,j;
        FILE *OutputFile;
        char PathOut[25];
        printf("Enter a path for output result file: ");
    scanf("%s",PathOut);  
    OutputFile=fopen(PathOut,"w+");
        for (i=0;i<K;i++)
        {
        for (j=0;j<L;j++)
                {
                        fprintf(OutputFile,"%4d",X[i][j]);
                }
                fprintf(OutputFile,"\n");
        }
        fclose(OutputFile);     
}
должно работать
0
Lil Crazy
6 / 6 / 2
Регистрация: 23.03.2009
Сообщений: 198
02.09.2009, 23:14  [ТС] 4
О да, точно) Но не работает моя обработка:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
void CountPositiveElementsIn(int **X, const int K, const int L, int **A)
{
        int i,j,z;
        for (i=0;i<K;i++)
        {
        for(j=0;j<L;j++)
                {
                        if (X[i][j]>0)
                        {
                                A[z]++;
                        }
                }
        }
}
Подскажите плиз как это надо сделать
0
M128K145
Эксперт JavaЭксперт С++
8326 / 3547 / 420
Регистрация: 03.07.2009
Сообщений: 10,708
02.09.2009, 23:19 5
в 3 строке z присвой необходимое значение
0
Mozart
39 / 17 / 1
Регистрация: 21.08.2009
Сообщений: 63
03.09.2009, 00:54 6
A[z]++; меня настораживает при том что:
int **A;
0
Monte-Cristo
2796 / 1384 / 107
Регистрация: 07.03.2009
Сообщений: 4,446
03.09.2009, 01:00 7
Mozart, а это не будет тебя настараживать?
код
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
using namespace std;
 
int main()
{
    int n = 5;
    int *A = new int[n];
 
    for (int i=0; i<n; i++, A++)
        *A = i;
 
    A -= n;
 
    for (int i=0; i<n; i++, A++)
        cout << *A << " ";
    cout << endl;
 
    A -= n;
    delete[] A;
    return 0;
}
0
snake32
1653 / 1105 / 194
Регистрация: 26.02.2009
Сообщений: 4,103
Записей в блоге: 5
03.09.2009, 04:09 8
Monte-Cristo, код работать по идеи должен
Вывод: 0 1 2 3 4
но вот если забудешь перед delete[] A; поставить A -= n; что тогда высвободится??
Я бы так не рискнул бы делать
0
ISergey
Maniac
Эксперт С++
1409 / 920 / 148
Регистрация: 02.01.2009
Сообщений: 2,749
Записей в блоге: 1
03.09.2009, 04:38 9
Цитата Сообщение от snake32 Посмотреть сообщение
но вот если забудешь перед delete[] A; поставить A -= n; что тогда высвободится??
ни че хорошего..
Я бы так не рискнул бы делать
Можно так
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
#include <iostream>
 
struct Emloyee{
    Emloyee(){ 
        std::cout << "Emloyee()" << std::endl;
    }
    ~Emloyee(){ 
        std::cout << "~Emloyee()" << std::endl;
    }
};
 
int main()
{
    Emloyee *arr = new Emloyee[10];
 
    Emloyee *it_begin   = arr;
    Emloyee *it_end     = arr + 10;
 
    int i = 0;
    for(; it_begin != it_end; ++it_begin)
        std::cout << i++ << " ";
    std::cout << '\n';
 
    delete[] arr;
    return 0;
}
0
M128K145
Эксперт JavaЭксперт С++
8326 / 3547 / 420
Регистрация: 03.07.2009
Сообщений: 10,708
03.09.2009, 08:42 10
Я так подозреваю, что функция CountPositiveElementsIn должна выглядеть
вот так
C++
1
2
3
4
5
6
7
8
void CountPositiveElementsIn(int **X, const int K, const int L, int **A)
{
        int i,j;
        for (i=0;i<K;i++)
                for(j=0;j<L;j++)
                        if (X[i][j]>0)
                                A[i]++;
}
0
Monte-Cristo
2796 / 1384 / 107
Регистрация: 07.03.2009
Сообщений: 4,446
03.09.2009, 10:08 11
Цитата Сообщение от snake32 Посмотреть сообщение
что тогда высвободится??
ничего хорошого.

Цитата Сообщение от snake32 Посмотреть сообщение
Я бы так не рискнул бы делать
рискнул, не рескнул -- это уже дело каждого. я такую запись встречал в некоторых книгах.
0
snake32
1653 / 1105 / 194
Регистрация: 26.02.2009
Сообщений: 4,103
Записей в блоге: 5
03.09.2009, 14:59 12
Цитата Сообщение от Monte-Cristo Посмотреть сообщение
я такую запись встречал в некоторых книгах.
Надеюсь в этих книгах так же сказано что злоупотреблять этим не стоит, это так, чисто для примера работа арифметических операций над указателями.
0
Lil Crazy
6 / 6 / 2
Регистрация: 23.03.2009
Сообщений: 198
03.09.2009, 19:44  [ТС] 13
Вот в итоге такой код:
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
#include <iostream>
#include <stdio.h>
#include <conio.h>
#include <math.h>
 
int **ReadMatrixFromFile(int &K, int &L); 
int **CreateMatrix(const int K, const int L); 
void FreeMatrix(int **X, const int L); 
void CountPositiveElementsIn(int **X, const int K, const int L, int **A);
void PrintMatrix(int **X, const int K, const int L);
void WriteArrayToFile(int **A, const int K, const int L);
 
void main()
{  
    int K,L;
    printf("This program write the number of positive elemnts every row in array.\n");
    int **X=ReadMatrixFromFile(K,L);
    int **A=CreateMatrix(K,1);
    printf("Initial matrix:\n");
    PrintMatrix(X,K,L);
    CountPositiveElementsIn(X,K,L,A);
    printf("Result array:\n");
    PrintMatrix(A,K,1);
    WriteArrayToFile(A,K,1);
    FreeMatrix(X,K);
    FreeMatrix(A,K);
    printf("The program work is completed. For exiting press Enter.\n");
    getch();
}
 
void CountPositiveElementsIn(int **X, const int K, const int L, int **A)
{
    int i,j;
    for (i=0;i<K;i++)
        for(j=0;j<L;j++)
            if (X[i][j]>0)
                A[i]++;
}
 
void PrintMatrix(int **X, const int K, const int L)
{
    int i,j;
    for (i=0;i<K;i++)
    {
        for (j=0;j<L;j++)
        {
            printf("%5i",X[i][j]);
        }
        printf("\n");
    }
}
 
void FreeMatrix(int **X, const int K)
{
    int i;
    for(i=0; i<K; i++)
    {
        delete[] X[i];
    }
    delete[] X;
}
 
int **CreateMatrix(const int K,const int L)
{
    int i;
    int ** X = new int*[K];
    for(i=0; i<K; i++)
    {
         X[i] = new int[L];
    }
    return X;
}
 
void CheckingDimensionOfMatrix(const int K, const int L)
{
    if ((K<1) || (L<1)) 
    {
        printf("Matrix has the wrong dimension, that is less than unity. For exiting press Enter.\n");
        getch();
        exit(1);
    }
}
 
int **ReadMatrixFromFile(int &K, int &L)
{
    FILE *InputFile;
    char PathIn[25];
    int i,j;
    printf("Enter a path for input file: ");
    scanf("%s",PathIn); 
    if ((InputFile=fopen(PathIn, "r")) == NULL )
    {
        perror(PathIn);
        exit;
    }
    fscanf(InputFile,"%d ",&K);
    fscanf(InputFile,"%d ",&L);
    CheckingDimensionOfMatrix(K,L);
    int ** X=CreateMatrix(K,L); 
    for (i=0;i<K;i++)
    {
         for (j=0;j<L;j++)
            fscanf (InputFile,"%d ",&X[i][j]);
    }
    fclose(InputFile); 
    return X;
}
 
void WriteArrayToFile(int **X, const int K, const int L)
{
    int i,j;
    FILE *OutputFile;
    char PathOut[25];
    printf("Enter a path for output result file: ");
    scanf("%s",PathOut);  
    OutputFile=fopen(PathOut,"w+");
    for (i=0;i<K;i++)
    {
        for (j=0;j<L;j++)
        {
            fprintf(OutputFile,"%4d",X[i][j]);
        }
        fprintf(OutputFile,"\n");
    }
    fclose(OutputFile); 
}
Не работает моя функция подсчёта CountPositiveElementsIn и неверно освобождается память Подскажите плиз
0
M128K145
Эксперт JavaЭксперт С++
8326 / 3547 / 420
Регистрация: 03.07.2009
Сообщений: 10,708
03.09.2009, 20:08 14
а так
C
1
2
3
4
5
6
7
8
9
10
11
void CountPositiveElementsIn(int **X, const int K, const int L, int **A)
{
        int i,j;
        for (i=0;i<K;i++)
        {
                A[i] = 0;
                for(j=0;j<L;j++)
                        if (X[i][j]>0)
                                A[i]++;
        }
}

Цитата Сообщение от Lil Crazy Посмотреть сообщение
неверно освобождается память
С чего ты такое взял?
0
Lil Crazy
6 / 6 / 2
Регистрация: 23.03.2009
Сообщений: 198
03.09.2009, 20:31  [ТС] 15
Цитата Сообщение от M128K145 Посмотреть сообщение
а так
C
1
2
3
4
5
6
7
8
9
10
11
void CountPositiveElementsIn(int **X, const int K, const int L, int **A)
{
        int i,j;
        for (i=0;i<K;i++)
        {
                A[i] = 0;
                for(j=0;j<L;j++)
                        if (X[i][j]>0)
                                A[i]++;
        }
}

С чего ты такое взял?
Если так, то программа виснет и всё( Необработанное исключение
0
Monte-Cristo
2796 / 1384 / 107
Регистрация: 07.03.2009
Сообщений: 4,446
03.09.2009, 20:48 16
Цитата Сообщение от snake32 Посмотреть сообщение
Надеюсь в этих книгах так же сказано что злоупотреблять этим не стоит, это так, чисто для примера работа арифметических операций над указателями.
не сказано. а какая разница? если ты пишешь так - то ты обязан не допускать ошибок. это лично дело каждого как писать. просто разный стиль.
0
M128K145
Эксперт JavaЭксперт С++
8326 / 3547 / 420
Регистрация: 03.07.2009
Сообщений: 10,708
03.09.2009, 20:57 17
Lil Crazy, кинь файл из которого считываеш данные, я попробую все-таки ее откомпилировать
0
Lil Crazy
6 / 6 / 2
Регистрация: 23.03.2009
Сообщений: 198
03.09.2009, 22:50  [ТС] 18
Цитата Сообщение от M128K145 Посмотреть сообщение
Lil Crazy, кинь файл из которого считываеш данные, я попробую все-таки ее откомпилировать
прошу http://www.rapidshare.ru/1157962

Добавлено через 1 час 41 минуту
0
easybudda
Модератор
Эксперт CЭксперт С++
10107 / 6016 / 1507
Регистрация: 25.07.2009
Сообщений: 11,404
03.09.2009, 22:57 19
Цитата Сообщение от M128K145 Посмотреть сообщение
C
1
2
3
4
5
6
7
8
9
10
11
void CountPositiveElementsIn(int **X, const int K, const int L, int **A)
{
        int i,j;
        for (i=0;i<K;i++)
        {
                A[i] = 0;
                for(j=0;j<L;j++)
                        if (X[i][j]>0)
                                A[i]++;
        }
}
Если я правильно понял, один из массивов всё-таки должен одномерным быть. То есть
C
1
2
void CountPositiveElementsIn(int **X, const int K, const int L, int *A){
    ...
При чём то, что через A передаётся, должно как-то вот так быть объявлено:
C
1
int Positive_row_values_summ[K];
ну или ... new Int (как там в c++ массивы создаются?).
0
M128K145
Эксперт JavaЭксперт С++
8326 / 3547 / 420
Регистрация: 03.07.2009
Сообщений: 10,708
03.09.2009, 23:36 20
вот работающий
код
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
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
 
int **ReadMatrixFromFile(int &K, int &L); 
int **CreateMatrix(const int K, const int L); 
void FreeMatrix(int **X, const int L); 
void CountPositiveElementsIn(int **X, const int K, const int L, int **A);
void PrintMatrix(int **X, const int K, const int L);
void WriteArrayToFile(int **A, const int K, const int L);
 
void main()
{  
    int K,L;
    printf("This program write the number of positive elemnts every row in array.\n");
    int **X=ReadMatrixFromFile(K,L);
    int **A=CreateMatrix(K,1);
    printf("\nInitial matrix:\n");
    PrintMatrix(X,K,L);
    CountPositiveElementsIn(X,K,L,A);
    printf("\nResult array:\n");
    PrintMatrix(A,K,1);
    WriteArrayToFile(A,K,1);
    FreeMatrix(X,K);
    FreeMatrix(A,K);
    printf("\nThe program work is completed. For exiting press Enter.\n");
    _getch();
}
 
void CountPositiveElementsIn(int **X, const int K, const int L, int **A)
{
    int i,j;
    for (i=0;i<K;i++)
        for(j = 0;j < L; j++)
            if (X[i][j]>0)
                A[i][0]++;
}
 
void PrintMatrix(int **X, const int K, const int L)
{
    int i,j;
    for (i=0;i<K;i++)
    {
        for (j=0;j<L;j++)
            printf("%5i",X[i][j]);
        printf("\n");
    }
}
 
void FreeMatrix(int **X, const int K)
{
    int i;
    for(i=0; i<K; i++)
        delete[] X[i];
    delete[] X;
}
 
int **CreateMatrix(const int K,const int L)
{
    int i;
    int ** X = new int*[K];
    for(i=0; i<K; i++)
    {   
        X[i] = new int[L];
        *X[i] = 0;
    }
    return X;
}
 
void CheckingDimensionOfMatrix(const int K, const int L)
{
    if ((K<1) || (L<1)) 
    {
        printf("Matrix has the wrong dimension, that is less than unity. For exiting press Enter.\n");
        _getch();
        exit(1);
    }
}
 
int **ReadMatrixFromFile(int &K, int &L)
{
    FILE *InputFile;
    char PathIn[25];
    int i,j;
    printf("Enter a path for input file: ");
    scanf_s("%s",PathIn); 
    if ((InputFile=fopen(PathIn, "r")) == NULL )
    {
        perror(PathIn);
        exit(1);
    }
    fscanf_s(InputFile,"%d ",&K);
    fscanf_s(InputFile,"%d ",&L);
    CheckingDimensionOfMatrix(K,L);
    int ** X=CreateMatrix(K,L); 
    for (i=0;i<K;i++)
        for (j=0;j<L;j++)
            fscanf_s(InputFile,"%d ",&X[i][j]);
    fclose(InputFile); 
    return X;
}
 
void WriteArrayToFile(int **X, const int K, const int L)
{
    int i,j;
    FILE *OutputFile;
    char PathOut[25];
    printf("Enter a path for output result file: ");
    scanf_s("%s",PathOut);  
    OutputFile=fopen(PathOut,"w+");
    for (i=0;i<K;i++)
    {
        for (j=0;j<L;j++)
            fprintf(OutputFile,"%4d",X[i][j]);
        fprintf(OutputFile,"\n");
    }
    fclose(OutputFile);     
}
0
03.09.2009, 23:36
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.09.2009, 23:36

Редкая ошибка, связанная с переполнением стека
Значит ситуация такая, вот весь код он полностью рабочий, но для перегрузки потокового ввода...

Ошибка, связанная со статическим членом класса
Есть код: class Foo{ public: static void f(); int a; }; void Foo::f(){ std::cin &gt;&gt; a;...

Ошибка Undefined Reference, связанная с использованием шаблона
Здравствуйте! У меня появилась проблема. Есть три файла: main.cpp, a.h, a.cpp. В а.h объявлен...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru