开元周游
德国频道
查看: 2098|回复: 12
打印 上一主题 下一主题

[互联网] 谁讲道题,*画圣诞树的。。。

[复制链接]
跳转到指定楼层
1#
发表于 22.12.2009 20:19:15 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
Schreiben Sie eine Methode static void printBaum(int hoehe, int breite, int
stamm, char zeichen). Diese Methode soll einen Weihnachtsbaum ausgeben, der aus
dem Zeichen zeichen besteht, hoehe Zeilen besitzt und – beginnend mit einem Zeichen
– in jeder Zeile links und rechts breite Zeichen erg¨anzt. Der Baumstamm soll zentriert
in der Mitte ausgeben haben und die H¨ohe stamm haben. So sollen z.B. die Aufrufe
von printBaum(4,2,3,’*’) und printBaum(3,1,4,’J’) zu den folgenden Ausgaben
f¨uhren:


           *                                   J
       *****                               JJJ
    *********                          JJJJJ
*************                         J
           *                                    J
           *                                    J
           *                                    J
13#
发表于 24.12.2009 02:44:05 | 只看该作者
回复 11# 北京的争争


    这个没有用任何额外的函数,所以只要略微修改一下语法适用于任何程序。
回复 支持 反对

使用道具 举报

12#
发表于 23.12.2009 23:50:32 | 只看该作者
回复 支持 反对

使用道具 举报

11#
 楼主| 发表于 23.12.2009 16:40:32 | 只看该作者
回复 支持 反对

使用道具 举报

10#
发表于 23.12.2009 15:15:52 | 只看该作者
回复 1# 北京的争争


    楼主对这个感兴趣,我写了个可以输入的,直接这个链接进去测试:http://vip.bianyou.com/test.php
代码如下:
  1. printTree($hoehe, $breite, $stamm, $zeichen);
  2. function printTree($hoehe, $breite, $stamm, $zeichen)
  3. {
  4.         $width = 1+(2*$breite)*($hoehe-1);
  5.         $height = $hoehe+$stamm;
  6.         for($i=0; $i<$height; $i++)
  7.         {
  8.                 if($i<$hoehe)
  9.                 {
  10.                         $sign_num = 1+(2*$breite)*$i;
  11.                 }
  12.                 else
  13.                 {
  14.                         $sign_num = 1;
  15.                 }
  16.                 $blank_num = ($width-$sign_num)/2;
  17.                 printRow($blank_num, $sign_num, $zeichen);
  18.         }
  19. }
  20. function printRow($blank_num, $sign_num, $zeichen)
  21. {
  22.         for($i=0; $i<$blank_num; $i++)
  23.         {
  24.                 echo ' ';
  25.         }
  26.         for($i=0; $i<$sign_num; $i++)
  27.         {
  28.                 echo $zeichen;
  29.         }
  30.        echo "\n";
  31. }
复制代码
回复 支持 反对

使用道具 举报

9#
发表于 23.12.2009 14:26:22 | 只看该作者
回复 支持 反对

使用道具 举报

8#
 楼主| 发表于 23.12.2009 12:19:23 | 只看该作者
回复 支持 反对

使用道具 举报

7#
 楼主| 发表于 23.12.2009 11:55:39 | 只看该作者
class Weihnachtsbaum{

   static void printBaum (int hoehe, int breite, int
stamm, char zeichen) {

        for(int i=0; i<hoehe+stamm; i++) {
           for(int j=0; j<= ( (hoehe-1)*breite*2+1); j++) {
                if ( i>0 && i<hoehe && (j >= (hoehe-1)*breite+1-i*j && j <= (hoehe-1)*breite+1+i*j) )
                   System.out.print(zeichen);
                else if( (i==0 || i>=hoehe) && j==(hoehe-1)*breite+1)
                   System.out.print(zeichen);
                else
                   System.out.print(" ");
           }
           System.out.println();
        }
}


   public static void main(String args []){
   char c = '*';
   int ho = 4;
   int br = 2;
   int st = 3;

   printBaum(4,2,3,'*');

   }
}


出来的还是不完全对。没行最后不对。
回复 支持 反对

使用道具 举报

6#
发表于 23.12.2009 06:41:00 | 只看该作者
树冠符号数量是:1+(2^breite)*n (n从0开始,  n<hoehe)
最大宽度是:1+(2^breite)*(hoehe-1)
这些条件组合一下应该能写简洁些。
如果是打印在网页上就好了,几行代码就可以搞定

评分

1

查看全部评分

回复 支持 反对

使用道具 举报

5#
 楼主| 发表于 23.12.2009 02:04:11 | 只看该作者
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

站点信息

站点统计| 举报| Archiver| 手机版| 小黑屋

Powered by Discuz! X3.2 © 2001-2014 Comsenz Inc.

GMT+1, 27.11.2024 09:09

关于我们|Apps

() 开元网

快速回复 返回顶部 返回列表