2013-04-13 3 views
0

Предположим, у меня есть символ со значением 42 (*). Мне нужно напечатать этот символ в n строках, причем n определяется пользователем. Однако для каждого сдвига строки необходимо напечатать еще один *. Если пользователь вводит «6», то результат будет так:C: Как добавить символ к другому символу/набору символов?

* 
** 
*** 
**** 
***** 
****** 

Я думал сделать программу повторить печать и перейти линию п раз, добавив еще * к полукоксу в конце каждый цикл. Есть ли какая-либо команда, которая превратит * в **, а затем в * и так далее?

+1

Опубликовать код, показывающий, что вы пробовали. –

ответ

2

вы можете использовать вложенный цикл для этой цели ...

for(i=0;i<n;i++)  //n is your user value 
{ 
    for(j=0;j<=i;j++) 
     { 
      printf("%c",your_char);  //print char here 
     } 
    printf("\n");     //for going to next line 
} 

верхнего for цикл будет обрабатывать строку в то время как внутренняя for петля будет иметь дело с колонкой ...

+1

Измените первый цикл for на 'for (i = 1; i <= n; i ++);' иначе последняя строка не будет напечатана. –

+0

@ Phoen1xUK Думаю, теперь это сработает –

+2

Не нужно использовать 'printf'. Мне нравится 'putchar', поскольку он будет быстрее :) – Bechir

7

Вам не нужно делать никаких манипуляций с строкой. Для каждой строки, если номер строки равен i, просто распечатайте одну звездочку (с putchar() или тому подобное) i раз, за ​​которой следует новая строка.

-1

Попробуйте это :

void print_n_chars(char c, size_t count) 
{ 
    char *buffer; 
    size_t i; 

    buffer = malloc(count + 1); 
    memset(buffer, 0, count + 1); 

    for (i = 0; i < count; i++) 
    { 
     buffer[i] = c; 

     printf("%s\n", buffer); 
    } 

    free(buffer); 
} 

Этот алгоритм имеет O(n) производительность, которая лучше, чем O(n^2/2) с двумя петлями.

Редактировать: исправлено опечатку, добавлено комментариев к произведению

+0

У вас есть два разных имени для указателя: buf и buffer. –

+0

@Valeri Разве это не намного приятнее и без malloc? http://ideone.com/BrBFVP – 2013-04-13 23:00:54

+0

@Armin Зависит. Несколько printfs могут быть значительно медленнее, чем мой вариант. Алгоритм в вашем примере имеет производительность 'O (n^2/2)'. Моя альтернатива имеет производительность «O (n)» –

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