Магический квадрат
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
| ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
| [18.97.9.174] |
|
|
правила раздела Алгоритмы

Магический квадрат
|
Сообщ.
#1
,
|
|
|
|
Мне нужно решить задачу, написать программу на С, которая выводила бы на экран магический квадрат 4х4, если задана его первая строка...
Магическим квадратом называетсся квадрат a b c d e f g h i У которого a+b+c=d+e+f=g+h+i=a+d+g=b+e+h=c+f+i=a+e+i=c+e+g... алгоритм построения магического квадрата мне понятен, а как это сделать с учетом первой строки?? Заранее благодарен.. |
|
Сообщ.
#2
,
|
|
|
|
Реши аналитически ту систему, которую выше написал, там уравненй семь штук, достаточно, чтобы зависимость d e f g h i от (a+b+c) найти, и получишь формулы для етих переменных.
Для квадрата 4х4 a b c d e f g h i j k l m n o p при заданных a b c d придется перебирать 3 любых переменных в диапазоне от 1 до (a+b+c+d) |
|
Сообщ.
#3
,
|
|||
|
|
Некисло правдо ? 440 1 3 5 7 9 11 13 15 17 19 419 417 415 413 411 409 407 405 403 402 38 400 41 43 45 47 49 51 53 55 57 381 379 377 375 373 371 369 367 366 404 36 74 364 77 79 81 83 85 87 89 91 347 345 343 341 339 337 335 334 368 406 34 72 106 332 109 111 113 115 117 119 121 317 315 313 311 309 307 306 336 370 408 32 70 104 134 304 137 139 141 143 145 147 291 289 287 285 283 282 308 338 372 410 30 68 102 132 158 280 161 163 165 167 169 269 267 265 263 262 284 310 340 374 412 28 66 100 130 156 178 260 181 183 185 187 251 249 247 246 264 286 312 342 376 414 26 64 98 128 154 176 194 244 197 199 201 237 235 234 248 266 288 314 344 378 416 24 62 96 126 152 174 192 206 232 209 211 227 226 236 250 268 290 316 346 380 418 22 60 94 124 150 172 190 204 214 224 217 222 228 238 252 270 292 318 348 382 420 21 59 93 123 149 171 189 203 213 219 221 223 229 239 253 271 293 319 349 383 421 422 384 350 320 294 272 254 240 230 220 225 218 212 202 188 170 148 122 92 58 20 424 386 352 322 296 274 256 242 216 233 231 215 210 200 186 168 146 120 90 56 18 426 388 354 324 298 276 258 208 245 243 241 205 207 198 184 166 144 118 88 54 16 428 390 356 326 300 278 196 261 259 257 255 191 193 195 182 164 142 116 86 52 14 430 392 358 328 302 180 281 279 277 275 273 173 175 177 179 162 140 114 84 50 12 432 394 360 330 160 305 303 301 299 297 295 151 153 155 157 159 138 112 82 48 10 434 396 362 136 333 331 329 327 325 323 321 125 127 129 131 133 135 110 80 46 8 436 398 108 365 363 361 359 357 355 353 351 95 97 99 101 103 105 107 78 44 6 438 76 401 399 397 395 393 391 389 387 385 61 63 65 67 69 71 73 75 42 4 40 441 439 437 435 433 431 429 427 425 423 23 25 27 29 31 33 35 37 39 2 |
|
Сообщ.
#4
,
|
|
|
|
А перечислить все разные, с точностью до произвольного поворота волшебные квадратики 21 порядка?
|
|
Сообщ.
#5
,
|
|
|
|
вообще то для нечетных сторон можно и для 61 порядка на бумаге и без помарок начертить
|
|
Сообщ.
#6
,
|
|||
|
|
Боюсь, что жизни на это не хватит |
|
Сообщ.
#7
,
|
|
|
|
Вроде сделал, правдо глупенько и тупенько... зато сам!!!
Хотелось бы услышать Ваше мнение... глас народа так сказать... #include <stdio.h> int main() { int A[4][4]; int i,j,k,sum=0,sum1; printf("Vvedite 4 cifri:\n"); for(j=0;j<4;j++){ scanf("%d", &A[0][j]); sum+=A[0][j];} A[1][0]=A[0][2]; A[1][1]=A[0][3]; A[1][2]=A[0][0]; A[1][3]=A[0][1]; k=0; for(j=3;j>=0;j--)A[2][j]=A[0][k++]; for(i=0;i<4;i++) { sum1=0; for(j=0;j<3;j++){sum1+=A[j][i];A[3][i]=sum-sum1;} } for(i=0;i<4;i++) for(j=0;j<4;j++) { printf("%4d ",A[i][j]); if(j==3)printf("\n"); } } |
|
Сообщ.
#8
,
|
|
|
|
1 замечание:
предлагаю _4_ заменить на const int measure = 4; может сразу для любого квадрата покатит |
|
Сообщ.
#9
,
|
|
|
|
По моему придётся вносить некоторые изменения в весь текст... да и решение, кстати говоря, у меня препод не принял... говорит нужно делать по другому, как Visitor предлагал... буду делать..
|