七、规则组织的衍生组织——菱形斜纹组织数学模型的建立

基础概念公式推到可参考该专栏下的前几篇博文。

菱形斜纹组织图:在这里插入图片描述在这里插入图片描述

分析:首先3上2下2上1下,飞数为+1,右斜。kw=8表示从左下角开始往上数8格为纬峰所在位置;kj=8表示从左上角开始往右数8格为经峰所在位置。

在这里插入图片描述
这样就将菱形斜纹组织图通过kw和kj分割为四部分,很明显,Ⅰ、Ⅱ部分也就是经山形组织;

一、先求第一部分(也就是规则组织求法)

1,3上2下2上1下,fw=8,fj=8,确定矩阵的大小

在这里插入图片描述

2,通过规则组织求法,求出第一部分

详细解法步骤内容可参考此处
实现步骤:
1,对第一列赋值
2,对第2列到第kj列赋值,需要注意,这里通过(i+f)>N1判断越界,通过a[i][j] = a[i+f-kw][j-1]越界赋值

核心代码如下:

/*
对第一部分的第1列进行赋值
*/i=1;//先对第一列赋值,从第一列的第一行开始for(j=0;j<=m-1;j++){while(c[j]>0){a[N1-i+1][1]=1;//因为是分子,所有值都赋值为1c[j]--;i++;}while(d[j]>0){a[N1-i+1][1]=0;//因为是分母,所有值都赋值为0d[j]--;i++;}}
/*
对第一部分的2到kj列 进行赋值
*/for(j=2;j<=kj;j++){for(i=kw-1;i<=N1;i++){if((i+f)>N1) a[i][j] = a[i+f-kw][j-1];else a[i][j]=a[i+f][j-1];}}/*

效果图如下:在这里插入图片描述

二、求第二部分(第二部分与第一部分关于第kj根经纱完全对称关系)

1,Ⅱ区中的任何一列都可以从Ⅰ区中对应
在这里插入图片描述
例如:a[14][3]==a[14][13]、a[13][4]=a[13][12]
通过推导可得公式:在这里插入图片描述
2,再分别对第kj+1列到第N2列进行对称式赋值

核心代码如下:

/*
对第二部分(kj+1列到N2列)进行赋值
*/for(j=kj+1;j<=N2;j++){for(i=N1;i>=N1-kw+1;i--){a[i][j]=a[i][2*kj-j];}}

效果图如下:
在这里插入图片描述

三、根据第一、第二部分与第三、第四部分对称关系,求第三部分和第四部分

在这里插入图片描述

观察可知,第三部分和第四部分是关于kw与第一部分和第二部分对称
在这里插入图片描述
核心代码如下:

/*
对第三部分和第四部分进行赋值
*/for(i=1;i<=N1-kw;i++){for(j=1;j<=N2;j++){a[i][j]=a[2*(N1-kw+1)-i][j];}}

效果图如下:

在这里插入图片描述

代码如下:

该代码仅适用于Kw==N1情况

#include <iostream>
#include<stdio.h>
using namespace std;int main()
{int i,j,N1,N2,f,m,kj,kw;//kj表示山峰的位置,从而确定出总列数N2int c[10],d[10],a[100][100]={0};printf("please input m:");scanf("%d",&m);for(i=0;i<=m-1;i++){printf("please input C[%d]:",i+1);scanf("%d",&c[i]);printf("please input D[%d]:",i+1);scanf("%d",&d[i]);}printf("please input kj:");scanf("%d",&kj);//输入山峰位置,从而确定出总列数printf("please input kw:");scanf("%d",&kw);//输入山峰位置,从而确定出总列数N1=2*kw-2;N2=2*kj-2;printf("please input f:");scanf("%d",&f);/*
对第一部分的第1列进行赋值
*/i=1;//先对第一列赋值,从第一列的第一行开始for(j=0;j<=m-1;j++){while(c[j]>0){a[N1-i+1][1]=1;//因为是分子,所有值都赋值为1c[j]--;i++;}while(d[j]>0){a[N1-i+1][1]=0;//因为是分母,所有值都赋值为0d[j]--;i++;}}/*
对第一部分的2到kj列 进行赋值
*/for(j=2;j<=kj;j++){for(i=kw-1;i<=N1;i++){if((i+f)>N1) a[i][j] = a[i+f-kw][j-1];else a[i][j]=a[i+f][j-1];}}/*
对第二部分(kj+1列到N2列)进行赋值
*/for(j=kj+1;j<=N2;j++){for(i=N1;i>=N1-kw+1;i--){a[i][j]=a[i][2*kj-j];}}/*
对第三部分和第四部分进行赋值
*/for(i=1;i<=N1-kw;i++){for(j=1;j<=N2;j++){a[i][j]=a[2*(N1-kw+1)-i][j];}}/*
输出二维数组a[i][j]
*/for(i=1;i<=N1;i++){for(j=1;j<=N2;j++){printf("%5d",a[i][j]);}printf("\n");}getchar();return 0;
}

最终运行效果如下:

在这里插入图片描述

补充:实际上菱形斜纹组织的Kw并不一定都等于组织循环数,至于大于或者小于组织循环数的按照Kw进行忽略不显示。

例如:3上2下2上1下,右斜,飞数为1,Kw=5,Kj=5
此时组织循环数为3+2+2+1=8,小于Kw,如何处理?
实际上,当Kw小于组织循环数时,超过Kw的组织会被忽略但是不会消失,遇到顶部时仍会从下上来。
在这里插入图片描述
灰色部分表示超过Kw的部分,会被忽略但是不会消失。
如上图部分为第一部分,其余部分都可以根据对称来进行求解,主要就是第一部分元素的确定

如何确定呢?
我的思路为:
主要就是第一部分的求解很重要,但是他会忽略超过Kw的区域,于是我想到了通过两个二维数组进行求解,首先第一个二维数组专门用于求解第一部分的数值,直接通过输入的组织循环数和飞数来获取规则组织。
然后通过第二个二维数组截取通过Kw和Kj所确定出的第一部分的元素,之后第二个二维数组就存有第一部分的元素了,再通过对称的方法求解出第二第三第四部分的元素即可。

优化后的代码如下:

#include <iostream>
#include<stdio.h>
using namespace std;int main()
{int i,j,N1,N2,n1,n2,f,m,kj,kw;int c[10],d[10],a[100][100]={0},b[100][100]={0};printf("please input m:");scanf("%d",&m);for(i=0;i<=m-1;i++){printf("please input C[%d]:",i+1);scanf("%d",&c[i]);printf("please input D[%d]:",i+1);scanf("%d",&d[i]);}printf("please input kj:");scanf("%d",&kj);//输入山峰位置printf("please input kw:");scanf("%d",&kw);//输入山峰位置n1=2*kw-2;//n1和n2才是最终的二维数组大小n2=2*kj-2;N1=0;for(i=0;i<=m-1;i++){N1=N1+c[i]+d[i];}N2=N1;printf("please input f:");scanf("%d",&f);/*
对第一部分的第1列进行赋值
*/i=1;//先对第一列赋值,从第一列的第一行开始for(j=0;j<=m-1;j++){while(c[j]>0){a[N1-i+1][1]=1;//因为是分子,所有值都赋值为1c[j]--;i++;}while(d[j]>0){a[N1-i+1][1]=0;//因为是分母,所有值都赋值为0d[j]--;i++;}}
/*
对2到N1列 进行赋值
*/for(j=2;j<=N2;j++){for(i=1;i<=N1;i++){if((i+f)>N1) a[i][j] = a[i+f-N1][j-1];else a[i][j]=a[i+f][j-1];}}
/*
对第一部分结果的有效部分赋给数组b
*/for(i=0;i<kw;i++){for(j=0;j<kj;j++){b[kw-1+i][1+j]=a[N1-kw+1+i][1+j];}}//对第二部分(kj+1列到N2列)进行赋值for(j=kj+1;j<=n2;j++){for(i=n1;i>=n1-kw+1;i--){b[i][j]=b[i][2*kj-j];}}//对第三部分和第四部分进行赋值for(i=1;i<=n1-kw;i++){for(j=1;j<=n2;j++){b[i][j]=b[2*(n1-kw+1)-i][j];}}/*
输出二维数组b[i][j]
*/for(i=1;i<=n1;i++){for(j=1;j<=n2;j++){printf("%5d",b[i][j]);}printf("\n");}getchar();return 0;
}

运行效果如下:
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/378090.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

显卡测试软件毛毛虫,超龙超龙,与众不同,顶流配备,散热一流,3070Ti超龙旗舰版评测...

可能大家都没想到此次显卡荒会持续近一年&#xff0c;还是出现国家级干涉才将这股“歪风”刹住了。而且也仅仅算是刹住了大陆的速度&#xff0c;主要踩死刹车的应该就是黄大厨。他从5月初推出的新核心就采取了出厂即锁算力的做法&#xff0c;但是即便如此&#xff0c;那些看着高…

八、非规则组织分析及其数学模型——平纹变化组织

非规则组织顾名思义&#xff0c;无法通过一个数学模型来描述所有的非规则组织、对于每一个具体的非规则组织而言&#xff0c;其也有一定的规律性可循&#xff0c;即可通过分析每一个具体的非规则组织的组织点运动规律来建立相应的数学模型。 一、平纹变化组织 平纹变化组织即…

怎么看xp计算机是32位还是64位,教你查看XP系统的不同32位还是64位详细的步骤

电脑中使用的不同的版本如果安装一些大型的游戏的时候都是有技巧来实现的&#xff0c;那在XP电脑中想要知道的对于不同的32位还是64位的版本的文件操作的时候新手是怎么知道自己安装的软件的版本呢&#xff0c;今天小编就来跟大家分享一下教你查看XP系统的不同32位还是64位详细…

LeetCode 27.移除元素 思考分析

题目 给你一个数组 nums 和一个值 val&#xff0c;你需要 原地 移除所有数值等于 val 的元素&#xff0c;并返回移除后数组的新长度。 不要使用额外的数组空间&#xff0c;你必须仅使用 O(1) 额外空间并 原地 修改输入数组。 元素的顺序可以改变。你不需要考虑数组中超出新长…

九、非规则组织分析及其数学模型——曲线斜纹组织

曲线斜纹组织图&#xff1a; 因为其形状酷似抛物线&#xff0c;抛物线又是曲线中的一种&#xff0c;故称为曲线斜纹组织。 特点&#xff1a;1&#xff0c;每一根经纱上的组织点运动规律不变 2&#xff0c;飞数是变化的&#xff0c;故也称为变飞数组织 飞数满足的两个条件&…

计算机公式column,函数公式的左膀右臂:ROW、COLUMN函数知多少

一个公式生成乘法口诀表演示的公式中用到了两个函数&#xff1a;ROW和COLUMN&#xff0c;这两个函数的用途非常广泛&#xff0c;可以配合其他函数实现很多功能(尤其是和VLOOKUP函数)&#xff0c;另外和这两个函数相似的还有ROWS和COLUMNS函数&#xff0c;也顺便介绍下。函数说明…

apache2.4.x三种MPM介绍

三种MPM介绍 Apache 2.X 支持插入式并行处理模块&#xff0c;称为多路处理模块&#xff08;MPM&#xff09;。在编译apache时必须选择也只能选择一个MPM&#xff0c;对类UNIX系统&#xff0c;…

LeetCode 15. 三数之和 思考分析(双指针解)

目录初解&#xff1a;未考虑去重二解&#xff1a;未考虑去重位置三解&#xff1a;AC题目&#xff1a;给你一个包含 n 个整数的数组 nums&#xff0c;判断 nums 中是否存在三个元素 a&#xff0c;b&#xff0c;c &#xff0c;使得 a b c 0 &#xff1f;请你找出所有满足条件且…

十、非规则组织分析及其数学模型——锯齿形斜纹组织

锯齿形斜纹组织图&#xff1a; 分析&#xff1a; 前半齿长度k&#xff0c;表示山谷到山峰的列数&#xff0c;也就是锯齿的宽度&#xff1b; 锯齿飞数s&#xff0c;表示山峰到山峰的行数&#xff0c;也就是锯齿的高度。 起始点相差4格&#xff0c;也就是第一部分整体向上移动…

十一、非规则组织分析及其数学模型——芦席斜纹组织

芦席斜纹组织&#xff1a; 该组织是由左斜和右斜有机的结合在一块的&#xff0c;因为其外观酷似芦席故称之为芦席斜纹组织。 织物组织效果&#xff1a; 所需参数&#xff1a; 其基层组织采用双面加强型斜纹&#xff0c;即分子和分母是相同的组织点&#xff0c;例如2上2下(2个经…

LeetCode 18. 四数之和 思考分析(双指针解)

目录需要注意的几点1、去除剪枝操作2、去重操作的细节code以及效果&#xff1a;题目给定一个包含 n 个整数的数组 nums 和一个目标值 target&#xff0c;判断 nums 中是否存在四个元素 a&#xff0c;b&#xff0c;c 和 d &#xff0c;使得 a b c d 的值与 target 相等&#…

图解DotNet框架之一:编译与执行引擎(上)

众所周知,DotNet框架是非常庞大的,光项目创建时的种类就有WPF,WCF,WF这三种最新的技术,还有以前的Web,WinForm,Service,Mobile等等. 这么复杂和庞大的框架,用文字来描述是远远不够的,所以我准备写一系列图文并茂的文章,把我所知道的所有Net框架中的东西全部串联起来,希望可以给…

【Kissy WaterFall】实行手动加载数据

前言&#xff1a;由于Kissy WaterFall默认是监听滚动事件来实现数据动态加载的&#xff0c;但是有一些情况要用到手动加载数据。以下是使用Kissy WaterFall实现手动加载数据的方法。 最终实现效果&#xff1a;点击”逛更多的商店“会动态加载数据 步骤&#xff1a; 当一页数据加…

web服务器文档根目录在哪里,web服务器根目录在哪

web服务器根目录在哪 内容精选换一换SSL证书通过在客户端浏览器和Web服务器之间建立一条SSL安全通道(访问方式为HTTPS)&#xff0c;实现数据信息在客户端和服务器之间的加密传输&#xff0c;可以防止数据信息的泄露。SSL保证了双方传递信息的安全性&#xff0c;而且用户可以通过…

二、图片加载与保存

一、基本概念 1&#xff0c;什么是图片&#xff1f; 答&#xff1a;图像是结构化存储的数据信息 2&#xff0c;图像的属性 答&#xff1a;1、通道数目&#xff0c;2、宽与高&#xff0c;3、像素数据&#xff0c;4、图像类型 二、加载显示图像并保存 import cv2 import nump…

LeetCode 206. 反转链表 思考分析

题目 反转一个单链表。 示例: 输入: 1->2->3->4->5->NULL 输出: 5->4->3->2->1->NULL 进阶: 你可以迭代或递归地反转链表。你能否用两种方法解决这道题&#xff1f; 迭代双指针 从某公众号&#xff08;代码随想录&#xff09;搬过来的gif图&…

怎样看虚拟主机的服务器,虚拟主机怎么查看服务器类型

虚拟主机怎么查看服务器类型 内容精选换一换使用华为云提供的公共镜像制作私有镜像时&#xff0c;您需先购买云主机等云资源时镜像选择公共镜像、云服务器类型建议统一选择“s3 (通用计算型)”&#xff0c;在云主机安装部署完商品&#xff0c;然后参照以下方式进行私有镜像制作…

Anaconda自带Python编译器Jupyter Notebook显示代码行数

ESC&#xff1a;进入命令行模式&#xff1b;按下H即可显示各种快捷键信息 Enter&#xff1a;进入编辑模式 方法一&#xff1a;命令方法 一、点击代码段&#xff0c;按ESC&#xff0c;使代码段显示蓝色&#xff0c;进入命令行模式 二、按下ShiftL&#xff0c;显示代码行数 方法…

(转)MOMO的Unity3D研究院之深入理解Unity脚本的执行顺序(六十二)

http://www.xuanyusong.com/archives/2378 Unity是不支持多线程的&#xff0c;也就是说我们必须要在主线程中操作它&#xff0c;可是Unity可以同时创建很多脚本&#xff0c;并且可以分别绑定在不同的游戏对象身上&#xff0c;他们各自都在执行自己的生命周期感觉像是多线程&…

【C、C++基础】什么时候用 “.” 什么时候用“->”(3个实例搞懂)

从堆栈的角度来说&#xff1a; 从堆栈的角度来说&#xff1a; 对象放在堆上&#xff0c;就要用指针&#xff0c;也就是对象指针->函数&#xff1b; 放在栈上,就对象.函数 那么如何判断对象放在堆上还是栈上&#xff1f; 从我的另一篇笔记【C grammar】C简化内存模型可知&am…