2015-03-23 5 views
-1

Я немного смущен тем, как сделать инвертированный треугольник от пользовательского ввода, чтобы последний символ удалялся каждый раз, и пространство добавлялось в начало каждой строки. Итак, это то, что у меня есть сейчас, это должно быть правильно, за исключением пробелов (которые, по-видимому, не могут работать по какой-либо причине). Должно быть, очень просто для цикла, но я просто не могу понять это для жизни меня.Перевернутый треугольник из строки

Вот что он выглядит, когда он запущен в настоящее время:

Enter a string: EXAMPLE 

E X A M P L E 
E X A M P L 
E X A M P 
E X A M 
E X A 
E X 
E 

и то, что я хочу, чтобы это выглядело как:

Enter a string: EXAMPLE 

E X A M P L E 
E X A M P L 
    E X A M P 
    E X A M 
    E X A 
    E X 
     E 

#include <stdio.h> 
#include <string.h> 
#include <conio.h> 

int main() 
{ 
    char string[100]; 
    int c, k, length; 

    printf("Enter a string: "); 
    gets(string); 
    length = strlen(string); 
    printf("\n"); 

    for(c=length; c>0; c--) 
    { 
     for(k=0; k<c; k++) 
     { 
      printf("%c ", string[k]); 
     } 

     printf("\n"); 
    } 
    getch(); 
    } 
+0

Видимо вам хотите ** добавить ** некоторые пробелы. Как бы вы это сделали? –

+0

Очевидно, вам нужно будет вставить пробелы перед строкой. Где код для этого? –

+0

Я спрашиваю, как сделать цикл для пробелов, я пробовал несколько разных способов, но каждый раз он дал мне неправильный ответ. Ближе всего я получил пробелы в обратном порядке (так что длина пробелов для первой строки, длина-1 для второго и т. Д.). – Link2999

ответ

0

Вы просто добавить length - c пространства перед печатью каждой строки, потому что меньше символов, вы должны напечатать, тем больше пространства вы должны вставить:

#include <stdio.h> 
#include <string.h> 

int main() 
{ 
    char string[100]; 
    int c, k, length; 

    printf("Enter a string: "); 
    gets(string); 
    length = strlen(string); 
    printf("\n"); 

    for(c=length; c>0; c--) 
    { 
     //Add some spaces 
     for(k=0; k < length - c ; k++) 
     { 
      printf(" "); 
     } 

     for(k=0; k<c; k++) 
     { 
      printf("%c ", string[k]); 
     } 

     printf("\n"); 
    } 
    return 0; 
} 

Пример с SAMPLE STRING:

Enter a string: SAMPLE STRING 

S A M P L E S T R I N G 
S A M P L E S T R I N 
    S A M P L E S T R I 
    S A M P L E S T R 
    S A M P L E S T 
    S A M P L E S 
     S A M P L E 
     S A M P L E 
     S A M P L 
     S A M P 
      S A M 
      S A 
      S 
0

Просто вставьте увеличивающееся количество мест на каждом шагу (т.е. printf space k раз).

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