Невозможно запросить у пользователя повторный ввод для набора задач 1 марио на c языке программирования - PullRequest
0 голосов
/ 27 мая 2020

Я хочу бесконечно спрашивать пользователя о вводе между 1 и 8, пока пользователь не сделает это, проблема относится к набору задач 1 марио в курсе cs50, задача выполняется нормально, за исключением повторного запроса пользователя на ввод в случае ввод меньше 1, больше 8 или не целое значение. пожалуйста, предложите мне то же самое, спасибо. вот мой код Привет, я пытался принимать повторяющиеся вводы от пользователя для набора проблем марио 1, всякий раз, когда пользователь вводит ниже 1 или выше 8, но он не спрашивает снова, если ввод отличается от желаемого, застрял в нем со вчерашнего дня, может ли кто-нибудь предложить, как повторно запрашивать ввод данных у пользователя, пока пользователь не введет число от 1 до 8, спасибо, вот мой код

#include <stdio.h>
#include <cs50.h>
int main(void)
{
int i , j , k , Height ;
Height = get_int("Enter desired pyramid height between 1 and 8: ");
while (!((Height<=8 && (Height>=1)))
{
    Height = get_int("Enter desired pyramid height between 1 and 8: ");
}
if (Height>0 && Height<9)
{
for (i=0;i<Height;i++)
{
    for(j=0;j<(Height-1-i);j++)
    {
        printf(" ");
    }
    for(k=i+1;k>0;k--)
    {
        printf("#");
    }
    printf("  ");
    for(k=i+1;k>0;k--)
    {
        printf("#");
    }
    printf("\n");
}
}
}

Ответы [ 2 ]

0 голосов
/ 27 мая 2020

Было бы эффективнее и проще для чтения:

do {
    Height = get_int("Enter desired pyramid height between 1 and 8: ");
} while (Height<1 || Height>8);
0 голосов
/ 27 мая 2020

вроде работает, там есть лишние скобки ...

int get_int(char * _)
{
    return 8;
}
int main(void)
{
    int i , j , k , height ;
    height = -1;
    while (!(height<=8 && height>=1))
    {
        height = get_int("Enter desired pyramid height between 1 and 8: ");
    }
    if (height>0 && height<9) // this should always be true... remove it.
    {
        for (i=0;i<height;i++)
        {
            for(j=0;j<(height-1-i);j++)
            {
                printf(" ");
            }
            for(k=i+1;k>0;k--)
            {
                printf("#");
            }
            printf("  ");
            for(k=i+1;k>0;k--)
            {
                printf("#");
            }
            printf("\n");
        }
    }
           return 0;
}

выходы:

       #  #
      ##  ##
     ###  ###
    ####  ####
   #####  #####
  ######  ######
 #######  #######
########  ########
...