如何制作这样的对称直方图?

hc2pp10m  于 2021-09-13  发布在  Java
关注(0)|答案(2)|浏览(441)

我想编写一个javascript程序来显示对称直方图,如下图所示:

程序应要求用户输入要打印的条数和用于绘制条的字符。条形图中的字符数需要显示在每个条形图的右侧。
显示的示例是当我输入@作为字符,输入13作为数字时。
这是我的密码:

  1. var symbol = prompt("Enter the symbol");
  2. var number = prompt("Enter the number");
  3. var currentNum = 1;
  4. let text = "";
  5. let symbolNum = symbol;
  6. while (currentNum <= number) {
  7. text += "<br>" + symbolNum + " " + currentNum;
  8. symbolNum += symbol;
  9. currentNum++;
  10. }
  11. document.write(text + "<br>");

最后,我只能输出以下内容:

我想知道我能做些什么来扭转这个循环?

ggazkfy8

ggazkfy81#

两种不同的方法可以获得相同的结果。不是真的很干净,而是工作。

  1. var symbol = prompt("Enter the symbol");
  2. var number = prompt("Enter the number");
  3. var currentNum = 1;
  4. let textTOP = "";
  5. let textBOTTOM = "";
  6. let symbolNum = symbol;
  7. while (currentNum <= number) {
  8. textTOP += "<br>" + symbolNum + " " + currentNum;
  9. if (currentNum < number)
  10. textBOTTOM = "<br>" + symbolNum + " " + currentNum + textBOTTOM;
  11. symbolNum += symbol;
  12. currentNum++;
  13. }
  14. document.write(textTOP + textBOTTOM + "<br>");
  1. var symbol = '@';
  2. var number = 13;
  3. var currentNum = 1;
  4. let text = "";
  5. while (currentNum <= number * 2) {
  6. if (currentNum <= number) {
  7. let num = currentNum;
  8. text += "<br>" + symbol.repeat(num) + " " + num;
  9. } else {
  10. let num = Math.abs(number * 2 - currentNum);
  11. text += "<br>" + symbol.repeat(num) + " " + num;
  12. }
  13. currentNum++;
  14. }
  15. document.write(text + "<br>");
展开查看全部
mrwjdhj3

mrwjdhj32#

试试这个

  1. function SymmetricHistogram(){
  2. const size = 10;
  3. let numberX = 0;
  4. let numberY = 0;
  5. for(let i = size; i>=-size; i--) {
  6. for(let j=size; j>=Math.abs(i); j--){
  7. process.stdout.write("@");
  8. }
  9. numberX <=size ? console.log(numberX++) : console.log(--numberY);
  10. }
  11. }
  12. SymmetricHistogram();

或者试试下面的方法
https://onecompiler.com/javascript/3x58bqr3h

展开查看全部

相关问题