cross HAP
1. 입력 n이면 n by n 배열을 만들고 지그재그(ㄹ)로 일련번호를 입력
2. n by n의 대각선 숫자들을 모두 더한 값을 구함
---------------------------------------------------
먼저 1번 문제>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(void)
{
int dim = 0;
int HAP = 0;
int count = 1;
printf("입력 배열 길이 : ");
scanf_s("%d", &dim);
printf("\n-----------------------------------------------------\n");
int **arrayData = (int**)malloc(sizeof(int*) * dim);
for (int i = 0; i < dim; i++)
arrayData[i] = (int *)malloc(sizeof(int) * dim);
//arrayData[dim][dim] = { 0, };
//memset(arrayData, 0, sizeof(int)*dim*dim);
for (int R = 0; R < dim; R++)
{
int C =0;
for (C = 0; C < dim; C++)
{
arrayData[R][C] = count++;
}
if (R <= (dim-2))
{
R++;
for (int reverse = dim - 1; reverse >= 0; reverse--)
{
arrayData[R][reverse] = count++;
}
}
}
for (int q = 0; q < dim; q++)
{
for (int g = 0; g < dim; g++)
{
printf("%d ", arrayData[q][g]);
}
printf("\n");
}
printf("-----------------------------------------------------\n");
printf("대각선의 합 : %d", HAP);
int i;
for(i = 0; i < dim; i++)
free(arrayData[i]);
free(arrayData);
return 0;
}
-----------------------------------------------------------------------------
결과 :
입력 배열 길이 : 15
-----------------------------------------------------
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
31 32 33 34 35 36 37 38 39 40 41 42 43 44 45
60 59 58 57 56 55 54 53 52 51 50 49 48 47 46
61 62 63 64 65 66 67 68 69 70 71 72 73 74 75
90 89 88 87 86 85 84 83 82 81 80 79 78 77 76
91 92 93 94 95 96 97 98 99 100 101 102 103 104 105
120 119 118 117 116 115 114 113 112 111 110 109 108 107 106
121 122 123 124 125 126 127 128 129 130 131 132 133 134 135
150 149 148 147 146 145 144 143 142 141 140 139 138 137 136
151 152 153 154 155 156 157 158 159 160 161 162 163 164 165
180 179 178 177 176 175 174 173 172 171 170 169 168 167 166
181 182 183 184 185 186 187 188 189 190 191 192 193 194 195
210 209 208 207 206 205 204 203 202 201 200 199 198 197 196
211 212 213 214 215 216 217 218 219 220 221 222 223 224 225
-----------------------------------------------------
대각선의 합 : 3277