0

こんにちは、プログラミング初心者です。関数の仕組みと if ステートメントを知っているので、if & else ステートメントを関数に記述し、ユーザーに回答を表示する方法を知りたいです。goto ステートメントがない可能性があります

コードは次のとおりです。

  if(year < 1583) //considers if a year input is less than 1583 which is the starting year for this calendar
  {
       printf("\n\nPlease select a year after 1583 \n\n");
       goto YEAR;
       system("cls");
  }
  if(Leap_year(year))//if statement calls Leap Year function
  {
       printf("\t =======================  \n");
       printf("\t*  THIS IS A LEAP YEAR  *\n");      
       printf("\t =======================  \n\n"); 
  }
  else {
       printf("\t   =======================  \n");
       printf("\t*  THIS IS NOT A LEAP YEAR  *\n");
       printf("\t   =======================  \n\n"); 
  }
4

3 に答える 3

2

C でも C# でも、whileループを使用してこれを解決できます。

do
{     
      // You need to prompt for year here.  Your code doesn't show how you do that.
      if (year < 1583)
      {
          printf("\n\nPlease select a year after 1583 \n\n");
          // Note: The user will never see the printf above if you clear the screen right after
          system("cls");
      }
} while (year < 1583);
于 2012-04-18T23:45:05.663 に答える
1

あなたが探している解決策は、より多くの関数を使用することです。

検討:

// year == -1 means there was an error
int year = -1;
while (year != -1)
{
  PromptForYear();
  year = GetYear();
}

このコードは、GetYearで次のように機能します。

int GetYear()
{
  int year;
  cin >> year;

  // check for bad year values
  if (year < 1583)
    return -1;

  return year;
}

そして、PromptForYearは

void PromptForYear()
{
  cout << "\n\nPlease select a year after 1583 \n\n";
}

個人的には、TryGetYearメソッドを好みます。

while (true)
{
  PromptForYear();
  if (TryGetYear(&year))
  {
    break;
  }
}

// code for TryGetYear

bool TryGetYear(int* year)
{
  if (year == null)
    return false;

  cin >> *year;
  if (*year < 1583)
    return false;

  return true;
}
于 2012-04-18T23:50:47.427 に答える
0

を削除goto- else を追加

すなわち

  if(year < 1583) //considers if a year input is less than 1583 which is the starting year for this calendar 
  { 
          printf("\n\nPlease select a year after 1583 \n\n"); 
          system("cls"); 
  } 
  else
  { 
....
于 2012-04-18T23:46:24.297 に答える