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
| #include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <string.h>
void input(int** S, char c, int size)
{
for (int i = 0; i < size; i++)
{
S[i] = new int[size];
for (int j = 0; j < size; j++)
{
printf("%c[%d][%d] = ",c,i,j);
scanf("%d",&S[i][j]);
}
}
printf("\n");
}
void file_input(int** S, const char* filename, int size)
{
FILE* fp = NULL;
if ((fp = fopen(filename,"r")) == NULL)
{
printf("Unable to open file %s for reading\n",filename);
return;
}
char* str = new char[80];
for (int i = 0; fgets(str, 80, fp) != NULL; i++)
{
S[i] = new int[size]; int j = 0;
for (char* token = strtok(str," ");
token != NULL; token = strtok(NULL," "))
S[i][j++] = atoi(token);
}
fclose(fp);
}
void dsum(int** S, int* P, int size)
{
int k = 0;
for (int q = size-1; q >= 0; q--)
{
int i = 0, j = q, sum = 0;
while (i < size && j >= 0) sum+=S[i++][j--];
if (sum > 0) P[k++] = sum;
}
for (int t = 1; t < size; t++)
{
int i = t, j = size-1, sum = 0;
while (i < size && j >= t) sum+=S[i++][j--];
if (sum > 0) P[k++] = sum;
}
}
int main()
{
int **Q = new int*[10], **W = new int*[8];
int *P1 = new int[20], *P2 = new int[16];
// input(Q, 'Q', 10); input(W, 'W', 8);
file_input(Q, "in1.txt", 10);
file_input(W, "in2.txt", 8);
dsum(Q, P1, 10); dsum(W, P2, 8);
for (int m1 = 0; m1 < 20; m1++)
printf("%d ",P1[m1]);
printf("\n");
for (int m1 = 0; m1 < 16; m1++)
printf("%d ",P2[m1]);
printf("\n");
_getch();
} |