在加工过程中打印菱形

Printing a diamond shape in processing

提问人:Danny Belloli 提问时间:10/23/2023 最后编辑:MaryDanny Belloli 更新时间:11/7/2023 访问量:48

问:

我正在尝试使用一个函数打印菱形形状,该函数会为我们决定使用的每个新 int 更改菱形的大小。首先我打印上半部分,然后打印下半部分,尽管这样做会给我带来问题。在这里,我给你留下代码:

 int ancho;

 void dibujaPiramide(int ancho){

 for(int i = 1; i <= ancho; i++){
   for(int j = 1; j<= ancho-i; j++){
   print(" ");

   }
   for(int k = 0; k<2*i-1; k++){
    print("*");
   }
   println();
 }
 for(int i = ancho; i >= 1; i--){
   for(int j = i; j >= 1-i; j--){
   print(" ");
   }
   for(int k = 0;k < 2*i-1;k++){
     print("*");
   }
   println();
 }

 }

 void setup(){
 dibujaPiramide(6);

 }

我想打印一个完整的菱形,它的大小会根据函数的入口变量而变化

加工

评论

0赞 George Profenza 10/23/2023
当你反向循环(从到1)时,你首先打印空格,这可能不是你想要的。我想知道您是否可以使用 if 条件来确定一行中的当前字符应该是空格还是星号(无论循环是向前还是向后)。它离中心()的距离会有所帮助。HTH型anchoancho/2

答:

0赞 apodidae 10/23/2023 #1

一种技术是添加一个计数器,并为金字塔底部的每一行增加计数器。根据行号,打印成比例的空格数。演示应该是可扩展的。

int ancho;
int counter = 0;

void dibujaPiramide(int ancho) {
  for (int i = 1; i <= ancho; i++) {
    for (int j = 1; j<= ancho-i; j++) {
      print(" ");
    }
    for (int k = 0; k<2*i-1; k++) {
      print("*");
    }
    println();
  }

  for (int i = ancho; i >= 1; i--) {
    counter++;
    for(int x = 1; x < counter; x++ ){
      print(" ");
    }
    for (int k = 0; k < 2*i-1; k++) {
      print("*");
    }
    println();
  }
}

void setup() {
  surface.setVisible(false);
  dibujaPiramide(10);
}