2016-03-19 3 views
0

私の質問は、私がいることを知ってどのように逆の順序で配列の出力のものをだけwhileループ に訴えると二つのことでグループ化された (すなわち、forループやリバース法のない、など)C#でwhileループを使用して配列の要素を逆順に出力する方法はありますか?

にあります2番目のwhileループは正しくありませんが、私はそれをどのように変更するのか分かりません。

ご協力いただきありがとうございます。

Console.WriteLine("Please type four things."); 

const int MAX_SIZE = 4; 
string[] things = new string[MAX_SIZE]; 
int i = 0; 

while (i < MAX_SIZE) 
{ 
    Console.WriteLine("Please type the things."); 

    things[i] = Console.ReadLine(); 
    i++; 
} 

i = 0; 

while (i < MAX_SIZE) 
{ 
    Console.Write(things[i] + ", "); 
    i--; 
} 
+0

明確化:[1、2、3、4、5、6]の配列があります。あなたは次の方法でそれを出力したい:(6,5)、(4,3)、(2、1)単一のwhileループを使用する。それが正しいか? – rsage

+0

これは正しいです、私はカンマで区切られたペアで物事を出力する必要があります。 – Luzing

答えて

1

C#での配列は0ベースであるため、私はMAX_SIZE-1を使用していた理由がある

i = MAX_SIZE - 1 
while (i >= 0) 
{ 
    Console.Write(things[i] + ", "); 
    i--; 
}   

を試してみてください。

i = MAX_SIZE - 1 
while (i >= 0) 
{ 
    Console.Write(things[i-1] + ", " things[i]); 
    i -= 2; 
} 
:最初の要素は常にあなただけの次の操作を行うことができ、アレイは4つの要素を持っている場合は、2つずつ物事を印刷したい場合は、最後の要素は、位置3

になります位置は0になります

0

forループの代わりにwhileループを使用する理由はありますか?私が正しくタスクを理解していれば

for(var i=0;i<MAX_SIZE;i++) { 
    Console.WriteLine("Please type the things."); 

      things[i] = Console.ReadLine(); 
      i++; 
} 

for(var i=MAX_SIZE-1;i>=0;i--){ 
    Console.Write(things[i] + ", "); 
} 
+4

おそらくそれは宿題であり、人工的な制約があるからです。 – user1666620

+0

私はこの人工的な制約を自分自身に課して、whileループで配列を理解するようにしました。学問分野でも仕事でも、どこでも制約があります。上記のforループの例も面白くて便利だと思いますが、別の具体的な目標を念頭に置いています。 – Luzing

+0

あなたの例は、コードのロジックをよりよく理解する助けになりました。提案ありがとう。 – Luzing

0

、次のコードは、あなたのために働く必要があります。

int i = things.Length - 1; 
while(i > 0) 
{ 
    Console.Write("({0}, {1}) ", things[i], things[i - 1]); 
    i -= 2; 
} 

//in case the the list lenght is odd, output the last element without pair 
if(i == 0) 
{ 
    Console.Write("({0})", things[i]); 
} 

if文は省略することができるthingsリストの長さは、あなたがプリングに必要な場合にのみ必要な場合でもので常にある場合ペアのない最後の要素(thingsの最初の要素)。

関連する問題