C 布尔西矩阵图
我希望你能帮我解决这个问题。所以我想创建一个矩阵,它的设计看起来像一个目标,用1填充正方形或矩阵的边界,在一个同心正方形0之后,另一个同心正方形用1填充,然后继续,在你选择正方形矩阵的尺寸之后(如果我扫描3,矩阵将是一个3x3)。问题在于同心1,我不知道打印它们的条件。你能帮助我吗?我应该是这样的: 这就是我到现在为止所做的C 布尔西矩阵图,c,C,我希望你能帮我解决这个问题。所以我想创建一个矩阵,它的设计看起来像一个目标,用1填充正方形或矩阵的边界,在一个同心正方形0之后,另一个同心正方形用1填充,然后继续,在你选择正方形矩阵的尺寸之后(如果我扫描3,矩阵将是一个3x3)。问题在于同心1,我不知道打印它们的条件。你能帮助我吗?我应该是这样的: 这就是我到现在为止所做的 #include <stdio.h> void rellenarMatrizdiana(int filas, int cols,int diana[cols]
#include <stdio.h>
void rellenarMatrizdiana(int filas, int cols,int diana[cols][cols]);
int main()
{
int diana[500][500], tdiana;
printf("Selecciona el tamaño de la diana: ");
scanf("%d", &tdiana);
rellenarMatrizdiana(tdiana,tdiana,diana);
}
void rellenarMatrizdiana(int filas, int cols,int diana[cols][cols]){
for(int f=0; f<filas; f++){
for(int c=0; c<cols; c++){
if (f==0||f==filas-1||c==0||c==cols-1){
diana[f][c]=1;
}else{
diana[f][c]=0;
}
printf("%d\t", diana[f][c]);
}
printf("\n");
}
}
#包括
void rellenarMatrizdiana(int filas、int cols、int diana[cols][cols]);
int main()
{
国际戴安娜[500][500],tdiana;
printf(“黛安娜之夜”);
scanf(“%d”和&tdiana);
雷勒纳马特里兹迪亚纳(蒂迪亚娜,蒂迪亚娜,黛安娜);
}
void rellenarMatrizdiana(int filas,int cols,int diana[cols][cols]){
对于(int f=0;f#包括
#包括
#定义填充的“X”
无效打印诊断(int N){
如果(NIts西班牙语,diana代表目标,filas代表行,tdiana代表目标的大小,rellenar matriz diana代表填充目标矩阵)您是否可以编辑您的问题,包括所需的文本输出,而不是链接图像(我发誓,我试图滚动该图像…)也可以考虑将发布的代码中的名字翻译成英文。<代码>戴安娜< /COD> <代码> > ReleLARMATRIZIDEANA < /代码>与<代码>戴安娜<代码>的尺寸不匹配,在<代码>主< /代码>中,无论如何,关于您的问题,您能看到目标模式的SimoTrices吗?有两个对角线划分一个空间Fi。交替使用*或空格的行和列填充。这在我看来像是一个递归问题。我建议实现一个行打印函数。对于大于4的大小,递归调用此函数。with(size-4)
#include <stdio.h>
void rellenarMatrizdiana(int filas, int cols,int diana[cols][cols]);
int main()
{
int diana[500][500], tdiana;
printf("Selecciona el tamaño de la diana: ");
scanf("%d", &tdiana);
rellenarMatrizdiana(tdiana,tdiana,diana);
}
void rellenarMatrizdiana(int filas, int cols,int diana[cols][cols]){
int f = 0;
printf("\n");
for(int k=1; k<=filas; k++){
if(filas%2==0){
if(k<=filas/2)
f++;
if(k>filas/2+1)
f--;
} else {
k<=(filas+1)/2?f++:f--;
}
for(int c=1; c<=cols; c++){
if ((f%2==1 && (c>=f && c<=filas+1-f)) || ((c%2==1 && c<=f) || (c%2==filas%2 && c>=filas+2-f))){
diana[f][c]=1;
} else{
diana[f][c]=0;
}
printf("%d\t", diana[f][c]);
}
printf("\n");
}
}
N:1
1
N:2
1 1
1 1
N:3
1 1 1
1 0 1
1 1 1
N:4
1 1 1 1
1 0 0 1
1 0 0 1
1 1 1 1
N:5
1 1 1 1 1
1 0 0 0 1
1 0 1 0 1
1 0 0 0 1
1 1 1 1 1
N:6
1 1 1 1 1 1
1 0 0 0 0 1
1 0 1 1 0 1
1 0 1 1 0 1
1 0 0 0 0 1
1 1 1 1 1 1
N:7
1 1 1 1 1 1 1
1 0 0 0 0 0 1
1 0 1 1 1 0 1
1 0 1 0 1 0 1
1 0 1 1 1 0 1
1 0 0 0 0 0 1
1 1 1 1 1 1 1
N:8
1 1 1 1 1 1 1 1
1 0 0 0 0 0 0 1
1 0 1 1 1 1 0 1
1 0 1 0 0 1 0 1
1 0 1 0 0 1 0 1
1 0 1 1 1 1 0 1
1 0 0 0 0 0 0 1
1 1 1 1 1 1 1 1
N=0:
N=1:
X
N=2:
XX
XX
N=3:
XXX
X X
XXX
N=4:
XXXX
X X
X X
XXXX
N=5:
XXXXX
X X
X X X
X X
XXXXX
N=6:
XXXXXX
X X
X XX X
X XX X
X X
XXXXXX
N=7:
XXXXXXX
X X
X XXX X
X X X X
X XXX X
X X
XXXXXXX
N=8:
XXXXXXXX
X X
X XXXX X
X X X X
X X X X
X XXXX X
X X
XXXXXXXX
N=9:
XXXXXXXXX
X X
X XXXXX X
X X X X
X X X X X
X X X X
X XXXXX X
X X
XXXXXXXXX
N=10:
XXXXXXXXXX
X X
X XXXXXX X
X X X X
X X XX X X
X X XX X X
X X X X
X XXXXXX X
X X
XXXXXXXXXX
N=11:
XXXXXXXXXXX
X X
X XXXXXXX X
X X X X
X X XXX X X
X X X X X X
X X XXX X X
X X X X
X XXXXXXX X
X X
XXXXXXXXXXX
N=12:
XXXXXXXXXXXX
X X
X XXXXXXXX X
X X X X
X X XXXX X X
X X X X X X
X X X X X X
X X XXXX X X
X X X X
X XXXXXXXX X
X X
XXXXXXXXXXXX