| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 928 人关注过本帖
标题:求助,如何实现水平,垂直,对角线和相等
取消只看楼主 加入收藏
追梦人zmrghy
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:406
专家分:190
注 册:2021-4-9
结帖率:97.26%
收藏
已结贴  问题点数:20 回复次数:3 
求助,如何实现水平,垂直,对角线和相等
求助,如何实现水平,垂直,对角线和相等

void num_out(int num)
{
    …………
}
程序代码:
int main()
{
    printf("水平,垂直,对角线和相等\n");
    for (char i = 3; i <= 6; i++)
    {
        num_out(i);
        cout << endl;
    }
    return 0;
}

void num_out(int num)函数如何 实现水平,垂直,对角线和相等


图片附件: 游客没有浏览图片的权限,请 登录注册


[此贴子已经被作者于2022-7-8 18:17编辑过]

搜索更多相关主题的帖子: 对角线 相等 int 垂直 水平 
2022-07-08 18:13
追梦人zmrghy
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:406
专家分:190
注 册:2021-4-9
收藏
得分:0 
回复 2楼 rjsp
这个问题,有几年了,在网上查找过方法。
奇数,好计算。
偶数,没办法。
这个问题有几年了,没找到答案。。。
最近,在温习之前学过的编程方法和思路。。。
于是,又想起了这个问题。。。。

[此贴子已经被作者于2022-7-8 23:51编辑过]

2022-07-08 23:47
追梦人zmrghy
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:406
专家分:190
注 册:2021-4-9
收藏
得分:0 
以下是引用rjsp在2022-7-8 22:44:32的发言:

幻方吗?
那 num_out(3) 与 num_out(5) 都是奇数阶幻方,为什么使用的竟然不是同一种方法?



只要,实现水平,垂直,对角线和相等,就可以了。
不要问,为什么结果不一样。
这不是,程序计算出来的。这是我以前,人工计算出来的。
只为了,说明一下 水平,垂直,对角线和相等。。。。
我根本,没有写计算函数。
程序代码:
char number[4][36]={{ 6, 1, 8, 7, 5, 3, 2, 9, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
                     { 1, 2,15,16,12,14, 3, 5,13, 7,10, 4, 8,11, 6, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
                     {14, 9, 1,19,22,23,18, 2,16, 6,21,11,13,15, 5, 3,10,24, 8,20, 4,17,25, 7,12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
                     { 1, 5,34,27,18,26, 7,32, 9,21,22,20,30, 2,31,16,15,17, 4,29, 6,24,25,23,36, 8,28,13,12,14,33,35, 3,10,19,11}};

void num_out(char num)
{
    for(char i=0; i<num; i++)
    {
        for(char j=0; j<num; j++)
            printf("%3d", number[num-3][i*num+j]);
        printf("\n");
    }
}


直接输出数组,根本没计算

奇数计算程序如下
程序代码:
 #include <stdio.h>



 #define N 5  //3, 5, 7, 9 行、列数



 int main()


 {
     int a[N][N] = {0};
     int count =1 ;
     int row = 0,  cul = N / 2;
     while (count <= N*N)
     {
         a[row][cul] = count;
         int i = row;
         int j = cul;
         if (i == 0)
         {
             i = N - 1;
         }
         else
         {
             i--;
         }
         j = (j +1) % N;
         if (a[i][j]!=0||(row==0&&cul==N-1))
         {
             i = row + 1;
             j = cul;
         }
         row = i;
         cul = j;
         count++;
     }


     for (int i =0 ; i < N; i++)
     {
         for (int j =0 ; j < N; j++)
         {
             printf("%3d",a[i][j]);
         }
         printf("\n");
     }

 }


偶数如何计算。。。不会。。。。。。。。。


[此贴子已经被作者于2022-7-9 02:40编辑过]

2022-07-09 00:26
追梦人zmrghy
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:406
专家分:190
注 册:2021-4-9
收藏
得分:0 
以下是引用rjsp在2022-7-8 22:44:32的发言:

幻方吗?
那 num_out(3) 与 num_out(5) 都是奇数阶幻方,为什么使用的竟然不是同一种方法?

程序代码:
#include <iostream>

char number[8][8]={{ 1, 3,64,61,62, 4,63, 2},
                     {60,57, 5, 8, 7,59, 6,58},
                     {17,19,48,46,20,45,18,47},
                     {51,16,14,49,50,15,13,52},
                     {25,38,40,26,37,28,27,39},
                     {21,42,44,24,41,23,43,22},
                     {29,31,36,34,32,33,35,30},
                     {56,54, 9,12,11,53,55,10}};

void num_out()
{
    for(char i=0; i<8; i++)
    {
        for(char j=0; j<8; j++)
            printf("%3d", number[i][j]);
        printf("\n");
    }
}

int main()
{

    num_out();
    return 0;
}


图片附件: 游客没有浏览图片的权限,请 登录注册


人工计算出来的。。。
找不出规律,无法写程序。。。。

[此贴子已经被作者于2022-7-9 01:07编辑过]

2022-07-09 00:56
快速回复:求助,如何实现水平,垂直,对角线和相等
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.022065 second(s), 12 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved