平铺输出图案

描述
已有图案如下:

--**-**-- 
-*--*--*-
-*-----*-
--*---*--
---*-*---
----*---- 

将图案按m*n平铺输出

输入
第一行是输入两个正整数m和n(大于等于1,小于等于5),用空格隔开,如果输入不满足要求则输出Input Error。

输出
输出图案见样例

样例
输入
2 3
输出

    --**-**----**-**----**-**--
    -*--*--*--*--*--*--*--*--*-
    -*-----*--*-----*--*-----*-
    --*---*----*---*----*---*--
    ---*-*------*-*------*-*---
    ----*--------*--------*----
    --**-**----**-**----**-**--
    -*--*--*--*--*--*--*--*--*-
    -*-----*--*-----*--*-----*-
    --*---*----*---*----*---*--
    ---*-*------*-*------*-*---
    ----*--------*--------*----

代码

#include<stdio.h>
int main()
{
 char a[6][10]={"--**-**--",
     "-*--*--*-",
     "-*-----*-",
     "--*---*--",
     "---*-*---",
     "----*----"};
 int m,n,i,j,x,y;//i,j计数 
 scanf("%d%d",&m,&n);
 char b[6*m][9*n];
 if(m<1||m>5||n<1||n>5)
 {
  printf("Input Error\n");
 }
 else
 {
  for(i=0;i<m;i++)
  {
   for(j=0;j<n;j++)
   {
    for(x=0;x<6;x++)
    {
     for(y=0;y<9;y++)
     {
      b[i*6+x][j*9+y]=a[x][y];
     }
    }
   }
  }
  for(i=0;i<6*m;i++)//放到了外面; 
  {
   for(j=0;j<9*n;j++)
   {
    printf("%c",b[i][j]);
   }
   printf("\n");//忘加\n 
  }
 }
 return 0;
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
图像平铺是一种常见的图像处理技术,其可将一张较小的图片平铺成一张较大的图片。在Verilog中实现图像平铺需要进行如下步骤: 1. 读取原始图像数据,将其存储到内存中; 2. 按照指定的倍数对图像进行水平和垂直方向的平铺; 3. 将平铺后的图像数据写入内存中; 4. 将内存中的图像数据输出到显示设备上。 下面是一个简单的Verilog代码示例,实现了对输入图像进行2x2的平铺: ``` module image_tiling ( input clk, input rst, input [7:0] image_in [0:31][0:31], // 输入图像数据 output reg [7:0] image_out [0:63][0:63] // 输出图像数据 ); reg [7:0] pixel [0:3][0:3]; // 存储4个像素点的数据 always @(posedge clk or posedge rst) begin if (rst) begin // 复位操作 // ... end else begin // 图像平铺操作 for (int i = 0; i < 64; i = i + 2) begin for (int j = 0; j < 64; j = j + 2) begin // 读取4个像素点的数据 for (int k = 0; k < 2; k = k + 1) begin for (int l = 0; l < 2; l = l + 1) begin pixel[k][l] <= image_in[i/2+k][j/2+l]; end end // 将4个像素点的数据平铺输出图像中 for (int k = 0; k < 2; k = k + 1) begin for (int l = 0; l < 2; l = l + 1) begin image_out[i+k][j+l] <= pixel[k][l]; end end end end end end endmodule ``` 在代码中,我们定义了一个4x4的像素点缓存,用于存储每个平铺操作中的4个像素点数据。对于每个2x2的平铺操作,我们将4个像素点的数据读取到缓存中,并将其复制到输出图像的对应位置中,最终得到一个2倍大小的图像。其中,输入图像的大小为32x32,输出图像的大小为64x64。 需要注意的是,这只是一个简单的Verilog实现示例,实际应用中还需要考虑更多的因素,如图像大小、平铺倍数、内存容量等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值