2016-03-19 4 views
0

Я смущен, как конкатрировать и повторять символ с использованием PERL. Пожалуйста, помогите мне. Мне нужно напечатать пирамиду, используя TCL. Ниже мой код.Печать пирамиды с использованием TCL

Tcl


set height 10 
set spaceChar " " 
set pyramidChar^

for {set i 1} {$i <= $height} {incr i} { 
    set y "concat {$spaceChar *($height - $i)} {$pyramidChar * $i} " 
    puts $y 
} 

< PERL Какие работы>


print "Please Enter Pyramind Height:"; 
my $height = <>; chomp($height); # strip of new lines 

my $char='^'; 

for(my $i=1; $i<=$height; ++$i){ 
    print ' ' x ($height-$i) . $char x (2*$i-1), "\n"; 
+0

Я смущен, как конкат и повторять символ, используя TCL * и не PERL. –

+0

Кроме того, введенный код не был правильно отформатирован после того, как я добавил вопрос. Пожалуйста, голый со мной. ЕСЛИ вы знаете решение для той же, любезно помочь. –

+0

комплект высота 10 набор spaceChar "" множество pyramidChar^ для {множество я 1} {$ I <= $ высота} {инкр я} { множество у «Concat {$ spaceChar х ($ высота - $ я) } {$ pyramidChar x (2 * $ i - 1)} " puts $ y } Отпечатки –

ответ

1

concat является оператором списка, а не оператор строки.

Оператор x в perl повторяет строку. Вы не можете перевести это на * в Tcl. Вам необходимо использовать команду string repeat.

Чтобы скомпоновать символы в Tcl, просто поместите их рядом друг с другом, например.

set y "[string repeat { } 5][string repeat {^} 2]" 

Я использую цитаты здесь для ясности - в этом случае они не нужны. Или используйте команду string cat.

set y [string cat [string repeat { } 5][string repeat {^} 2]] 
+0

Спасибо большое Брэд, я отчетливо понимаю. Логика работает хорошо. Решил мое сомнение. –

2

Вы упускаете тот факт, что арифметика должно быть сделано с помощью команды expr. Кроме того, Perl . => TCL append и Perl x => TCL string repeat

перевод вашего Perl является

for {set i 1} {$i <= $height} {incr i} { 
    puts [string cat [string repeat " " [expr {$height - $i}]] [string repeat $char [expr {$i*2-1}]]] 
} 

Хотя длинные строки Tcl кода может быть довольно трудно читать со всеми вложенными скобками. Возможно:

+0

Большое спасибо Гленн. Сейчас я хорошо понимаю. Хорошего дня. –

+0

Для читателей преимущества и ясность. ничего не хватает в append part ...? Второй код работает отлично. набор высоты 3 набор символов^ для {множество я 1} {$ I <= $ высота} {инкр я} { ставит [добавить [строку повтор "" [выражение {$ высоты - $ I}]] [строка повтора $ символ [выражение {$ я * 2-1}]]] } Он печатает - (.. Но не пирамида Space не приходит в начале) ^ ^^^ ^^ ^^^ –

+0

'append' в первом примере отсутствует имя переменной. –

Смежные вопросы