2017-08-28 6 views
0

このプログラムをどのように作成するのか分からないので、私は助けに感謝します。 プログラムを2つのテーブルでコーディングする必要があります。最初の数字はRandom tab = new Random();です。その後、私は数字を逆にして、2番目のテーブルに記入する必要があります。C#データを2番目のテーブルに転記して逆にする

私は最初の機能を作りましたが、どのように2番目のテーブルから始めるのかよく分かりません。

class Program 
{ 


    static void Main(string[] args) 
    { 
     int[] tablica1 = new int[20]; 

     Random tab = new Random(); 

     for (int i = 0; i < 20; i++) 
     { 
      tablica1[i] = tab.Next(20); 
      Console.WriteLine("Tablica wylosowała nastepujace elementy:"); 
      Console.WriteLine(tablica1[i]); 
     } 

     Console.Read(); 

     int[] tablica2 = new int[20]; 

     /*for (int i = 20; i > 0; i--) 
     { 

     } 
     */ 
    } 
} 
+1

が重複する可能性を働くだろうと思います(https://stackoverflow.com/questions/18394882/revers e-elements-in-an-array) – Sinatr

+0

そこの答えは、組み込みのメソッドを使って示唆されていますが、これは "手動で"行う方法を理解する宿題割り当てのように見えます。 –

+0

@KlaudynaZ: 別の配列を作成せずに行う必要がありますか?もしそうなら、私はあなたが配列要素を上書きしないで(そしてそれゆえに)失うことなく、どうやってそれを行うのか混乱していると思います。ヒント:各繰り返しで2つの要素を交換することを検討してください。 –

答えて

0

- これはあなたのIndexOutOfRangeExceptionを与える必要がありますよう:

for (int j = tablica2.Length; j > 1 ; j--) 
{ 
    tablica2[j] = tablica1[20-j]; 
    Console.WriteLine(tablica2[j]); 
} 

アレイインデックスはフォーム0からtablica2.Length - 1(長次いで一つ少なくするので、インデックスtablica2.Length配列である)に行く。
あなたのループはSOMためから逆に進みますe理由。

実行を開始するとすぐにj20ですが、最も高いインデックスは19です。

変更、それは完全な範囲を行くので、ループ、そしてあなたが範囲外のインデックスにアクセスしないように、2つの方法のいずれかで、ループ本体を変更:

for (int j = tablica2.Length - 1; j >= 0 ; j--) // goes from 19 to 0 
{ 
    tablica2[j] = tablica1[tablica1.Length - j - 1]; 
} 

または

for (int j = tablica2.Length; j > 0 ; j--) // goes from 20 to 1 
{ 
    tablica2[j - 1] = tablica1[tablica1.Length - j]; 
} 
+0

ありがとうございました!それは働いている!今、私は間違いを理解しています! :) – KlaudynaZ

0
static void Main(string[] args) 
{ 
    int[] tablica1 = new int[20]; 

    Random tab = new Random(); 

    for (int i = 0; i < 20; i++) 
    { 
     tablica1[i] = tab.Next(20); 
     Console.WriteLine("Tablica wylosowała nastepujace elementy:"); 
     Console.WriteLine(tablica1[i]); 
    } 

    Console.Read(); 

    int[] tablica2 = new int[20]; 

    for (int i = 20; i > 0; i--) 
    { 
     tablica2[i]=tablica1[20-i]; 
    } 

} 

}

0

@Sinatrは、このトピックのためにありがとうございました。本当に役に立ちましたが、テーブルは1つだけです。 @FilipMilovanovićはい、私は2つのテーブルを作る必要があります:)最初に予約した後、私は最初から2番目の要素を配置する必要があります。私はこれを変更しましたが、コンソールではまだ最初のものしか見ることができません。あなたは非常にあなたがコードを実行したときに、正確に何が起こるかを説明していませんでしたが、私はこの問題は、この部分であると思います:(

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 

namespace Randomy1 
{ 
    class Program 
{ 

    static void Main(string[] args) 
    { 
     int[] tablica1 = new int[20]; 

     Random tab = new Random(); 

     for (int i = 0; i < 20; i++) 
     { 
      tablica1[i] = tab.Next(20); 
      Console.WriteLine(tablica1[i]); 
     } 



     int[] tablica2 = new int[20]; 

     for (int j = tablica2.Length; j > 1 ; j--) 
     { 
      tablica2[j] = tablica1[20-j]; 
      Console.WriteLine(tablica2[j]); 
     } 

     Console.Read(); 
    } 
} 
} 
0

私は、これは[配列の逆の要素]の

for (int i = 0; i < 20; i++) 
{ 
    tablica2[i] = tablica1[20 - (i + 1)]; 

    Console.WriteLine("Tablica 1st :: " + tablica1[i] + " Tablica 1 Reverse "  + tablica1[20 - (i + 1)] + " Tablica 2 " + tablica2[i]); 
} 
関連する問題