Member 12731753 Ответов: 1

Как напечатать такого рода моделей для числа n образцов (N - нет. Последовательных #s в 1-м ряду):


1234 (n=4)

####       ####
   ###   ###
     ## ##
       #  
     ## ##
   ###   ###
####       ####


Что я уже пробовал:

#include<stdio.h>

main()
{
    int n,m,sp,i,j,p,k,sp1;

    printf("Enter n: "); scanf("%d",&n);
    sp1 = p = n;
    m = 2*n-1;
    sp = n-1;
    //printf("%d",sp);
    for(i=1;i<=m;i++)
    {
        if(i<n)>
        {
            if(i!=1)
            {
            for(k=1;k<=sp;k++)
                printf(" ");sp=sp+2;
            }
            for(j=0;j<p;j++)>
                printf("*");

            for(k=1;k<=sp1;k++)
                printf(" ");

            for(j=0;j<p;j++)>
                printf("*");
            p--;sp1-=2;
        }
        if(i==n)
        {
            for(k=1;k<=sp;k++)
                printf(" ");

            for(k=1;k<=p;k++)
                printf("*");

            sp-=2;p++;sp1+=3;
        }
        if(i>n)
        {
        for(k=1;k<=sp;k++)
                printf(" ");
            for(j=0;j<p;j++)>
            printf("*");
            sp=sp-2;
            p++;
        }
        printf("\n");
    }
}


это все еще не завершено.

NotPolitcallyCorrect

Повезло тебе. Ты, по крайней мере, попытался сделать домашнее задание сам. Однако вы не смогли задать вопрос, описать проблему или рассказать нам, каков результат вашей отладки вашей программы. Форматирование кода поможет. Научиться пользоваться пробелом тоже поможет.

Patrice T

Что такое фактический результат ?
В чем проблема ?

Philippe Mori

Как уже упоминали другие, в чем ваша проблема? Вы должны сами отлаживать программу и задавать конкретный вопрос только в случае необходимости.

1 Ответов

Рейтинг:
5

OriginalGriff

Начните с рассмотрения рисунка, потому что он сложнее, чем кажется.
Он состоит из строк: (n * 2) - 1 из них, каждая из которых отражается на другой стороне строки" 1 хэш".:

4 hashes, 7 spaces, 4 hashes
3 spaces, 3 hashes, 3 spaces, 3 hashes, 3 spaces
5 spaces, 2 hashes, 1 spaces, 2 hashes, 5 spaces
7 spaces, 1 hashes, 7 spaces
5 spaces, 2 hashes, 1 spaces, 2 hashes, 5 spaces
3 spaces, 3 hashes, 3 spaces, 3 hashes, 3 spaces
4 hashes, 7 spaces, 4 hashes

Поэтому относитесь к нему как к двум половинкам. которые печатают то же самое, но в обратном порядке. Затем сосредоточьтесь на том, чтобы заставить работать одну половину, потому что вторая половина тривиальна, как только вы сделали первую.
Теперь посмотрите на линии: они также являются зеркальным отражением вокруг центра линии.

a пространства, b гашиши, c пространства, c пространства, b гашиши, a пространства.
Итак, опять же, рассматривайте его как две половины и заставляйте одну половину работать, поскольку другая тривиальна.
Таким образом, шаблон, который вы пытаетесь воспроизвести,:
           a  b  c
####       0  4  4
   ###     3  3  2
     ##    5  2  1
       #   7  1  0

а-пробелы, б-хэши, в-пробелы.
Подсчет хэша b очень прост:
b = n - line number

Всего символов очень просто:
x = a + b + c = n * 2.

Все остальное сложно, потому что шаблон выглядит неправильно: первая строка очень сильно отличается от последующих строк: a должно быть 1, c должно быть 3, чтобы соответствовать развивающейся последовательности.
Если вы нарисовали его неправильно, то это просто:
c = b - 1
a = (n * 2) - b
И это легко сделать: три петли одна за другой.

Но если вы нарисовали это правильно, то вы не можете экстраполировать эти данные на то, как должна выглядеть первая строка n = 5, потому что она не соответствует последовательности, и это важно - потому что если вы не можете определить, как выглядит одна из строк, вы не можете обобщить алгоритм. Вместо этого вы должны делать предположения.
Поэтому начните с того, что вернитесь к своему домашнему вопросу и проверьте его: это диаграмма, которая вам нужна:
####       ####
   ###   ###
     ## ##
       #  
     ## ##
   ###   ###
####       ####
Или это:
####     ####
  ###   ###
    ## ##
      #  
    ## ##
  ###   ###
####     ####
Потому что, если это первый, вам нужно больше информации или решить, что нужно делать "большим" строкам.