Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/7: Рейтинг темы: голосов - 7, средняя оценка - 5.00
 Аватар для Lil Crazy
6 / 6 / 2
Регистрация: 23.03.2009
Сообщений: 198

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

02.09.2009, 22:26. Показов 1580. Ответов 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
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
02.09.2009, 22:26
Ответы с готовыми решениями:

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

Ошибка связанная с гетч
#include &lt;iostream&gt; #include &lt;locale&gt; #include &lt;conio.h&gt; using namespace std; int MIN(int a, int b) { int min; if (a...

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

19
depict1
 Аватар для zim22
281 / 146 / 4
Регистрация: 11.07.2009
Сообщений: 606
02.09.2009, 23:01
C++
1
void WriteArrayToFile(int **A, const int K, const int L);
тело функции где?
0
Эксперт JavaЭксперт С++
 Аватар для M128K145
8384 / 3617 / 419
Регистрация: 03.07.2009
Сообщений: 10,709
02.09.2009, 23:07
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  [ТС]
О да, точно) Но не работает моя обработка:
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
Эксперт JavaЭксперт С++
 Аватар для M128K145
8384 / 3617 / 419
Регистрация: 03.07.2009
Сообщений: 10,709
02.09.2009, 23:19
в 3 строке z присвой необходимое значение
0
 Аватар для Mozart
39 / 17 / 1
Регистрация: 21.08.2009
Сообщений: 63
03.09.2009, 00:54
A[z]++; меня настораживает при том что:
int **A;
0
 Аватар для Monte-Cristo
2816 / 1408 / 107
Регистрация: 07.03.2009
Сообщений: 4,446
03.09.2009, 01:00
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
3511 / 1694 / 236
Регистрация: 26.02.2009
Сообщений: 8,471
Записей в блоге: 6
03.09.2009, 04:09
Monte-Cristo, код работать по идеи должен
Вывод: 0 1 2 3 4
но вот если забудешь перед delete[] A; поставить A -= n; что тогда высвободится??
Я бы так не рискнул бы делать
0
Maniac
Эксперт С++
 Аватар для ISergey
1464 / 965 / 160
Регистрация: 02.01.2009
Сообщений: 2,820
Записей в блоге: 1
03.09.2009, 04:38
Цитата Сообщение от 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
Эксперт JavaЭксперт С++
 Аватар для M128K145
8384 / 3617 / 419
Регистрация: 03.07.2009
Сообщений: 10,709
03.09.2009, 08:42
Я так подозреваю, что функция 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
2816 / 1408 / 107
Регистрация: 07.03.2009
Сообщений: 4,446
03.09.2009, 10:08
Цитата Сообщение от snake32 Посмотреть сообщение
что тогда высвободится??
ничего хорошого.

Цитата Сообщение от snake32 Посмотреть сообщение
Я бы так не рискнул бы делать
рискнул, не рескнул -- это уже дело каждого. я такую запись встречал в некоторых книгах.
0
 Аватар для snake32
3511 / 1694 / 236
Регистрация: 26.02.2009
Сообщений: 8,471
Записей в блоге: 6
03.09.2009, 14:59
Цитата Сообщение от Monte-Cristo Посмотреть сообщение
я такую запись встречал в некоторых книгах.
Надеюсь в этих книгах так же сказано что злоупотреблять этим не стоит, это так, чисто для примера работа арифметических операций над указателями.
0
 Аватар для Lil Crazy
6 / 6 / 2
Регистрация: 23.03.2009
Сообщений: 198
03.09.2009, 19:44  [ТС]
Вот в итоге такой код:
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
Эксперт JavaЭксперт С++
 Аватар для M128K145
8384 / 3617 / 419
Регистрация: 03.07.2009
Сообщений: 10,709
03.09.2009, 20:08
а так
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  [ТС]
Цитата Сообщение от 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
2816 / 1408 / 107
Регистрация: 07.03.2009
Сообщений: 4,446
03.09.2009, 20:48
Цитата Сообщение от snake32 Посмотреть сообщение
Надеюсь в этих книгах так же сказано что злоупотреблять этим не стоит, это так, чисто для примера работа арифметических операций над указателями.
не сказано. а какая разница? если ты пишешь так - то ты обязан не допускать ошибок. это лично дело каждого как писать. просто разный стиль.
0
Эксперт JavaЭксперт С++
 Аватар для M128K145
8384 / 3617 / 419
Регистрация: 03.07.2009
Сообщений: 10,709
03.09.2009, 20:57
Lil Crazy, кинь файл из которого считываеш данные, я попробую все-таки ее откомпилировать
0
 Аватар для Lil Crazy
6 / 6 / 2
Регистрация: 23.03.2009
Сообщений: 198
03.09.2009, 22:50  [ТС]
Цитата Сообщение от M128K145 Посмотреть сообщение
Lil Crazy, кинь файл из которого считываеш данные, я попробую все-таки ее откомпилировать
прошу http://www.rapidshare.ru/1157962

Добавлено через 1 час 41 минуту
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
 Аватар для easybudda
12843 / 7592 / 1766
Регистрация: 25.07.2009
Сообщений: 13,973
03.09.2009, 22:57
Цитата Сообщение от 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
Эксперт JavaЭксперт С++
 Аватар для M128K145
8384 / 3617 / 419
Регистрация: 03.07.2009
Сообщений: 10,709
03.09.2009, 23:36
вот работающий
код
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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
03.09.2009, 23:36
Помогаю со студенческими работами здесь

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

Какая-то ошибка связанная с template
Итак, тренируюсь с шаблонами (template) создаю заголовочный файл templateclass.h в котором обозначаю класс Templclass и его методы,...

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

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

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


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru