Как я могу решить эту проблему с помощью k-цикла внутри другого цикла? - PullRequest
0 голосов
/ 15 октября 2018

Я только начал изучать C. У меня проблемы с решением какой-то проблемы.Вот что я должен сделать.

n = 3

enter image description here

n = 5

enter image description here

Таким образом, в основном у вас есть 2 пробела непосредственно перед первым o и после последнего o, независимо от того, какое значение n имеет.Вы можете увидеть мой код, его будет легче понять.Так что у меня есть проблемы с этими о.Можете ли вы взглянуть на мой код и сказать мне, в чем проблема.Я думаю, что-то с K-петлей.Это работает для 3, но если n больше 3, цикл повторяется еще раз (я так думаю), и это вызывает проблему.Код:

#include <stdio.h>
int main() {
int i,j,k,n;
printf("Unesi broj n: ");
scanf("%d",&n);

printf("+--");
for(i=0;i<(2*n-1);i++) printf("-");
printf("--+");
printf("\n");

for(i=0;i<n;i++){
        for(j=0;j<n;j++){
              if((i>0 || i<n) && j==0) printf("|  ");
              else if((i>0 || i<n) && j==n-1){
                    if(i%2==0) printf("  >");
                    else if(i%2==1) printf("  <");
                    }
             else { 
                for(k=0;k<n;k++){
                    if(k==n-1) printf("o");
                    else printf("o ");
                }
             }
        }
        printf("\n");
}

printf("+--");
for(i=0;i<(2*n-1);i++) printf("-");
printf("--+");
printf("\n");

return 0;
}

1 Ответ

0 голосов
/ 15 октября 2018

Уберите k, не усложняйте свою работу:)

#include <stdio.h>
int main() {
    int i,j,n;
    printf("Unesi broj n: ");
    scanf("%d",&n);


    // print the top edge
    printf("+--");
    for(i=0;i<(2*n-1);i++) printf("-");
    printf("--+");
    printf("\n");

    // row loop, only inner rows
    for(i=0;i<n;i++){
            // every inner column starts with "|  " so no need to put this in the column loop
            printf("|  ");
            // column loop, here you just need to print the o-s
            for(j=0;j<n;j++){
                printf("o ");
            }
            // every inner column ends with " >" or " <" so no need to put this in the column loop, and one space will be included with the last o
            if (i % 2 == 0)
                printf(" >");
            else
                printf(" <");
            printf("\n");
    }

    // print the bottom edge
    printf("+--");
    for(i=0;i<(2*n-1);i++) printf("-");
    printf("--+");
    printf("\n");

    return 0;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...