Saya mencoba menulis program kecil untuk menghitung penambahan dua vektor dari pengguna dan menyimpannya dalam array. Saya ingin mendapatkan dua X dan Y (seperti ini {x,y}) dari pengguna dan kemudian menambahkan keduanya bersama-sama.

Saya mencoba menggunakan array 2D seperti itu

int[,] array = new int[0, 1] {};

Tapi saya ingin pengguna memasukkan nilainya. Saya tidak cukup tahu tentang c # jadi jika ada yang tahu bagaimana saya bisa menyelesaikan masalah ini akan membantu Anda

0
Rasta Mosi 12 Mei 2021, 18:27

1 menjawab

Jawaban Terbaik

Jika Anda ingin mendapatkan vektor dari pengguna, Anda dapat mencoba meminta pengguna untuk menyediakan komponennya yang dipisahkan oleh beberapa pembatas, mis.

  private static int[] ReadVector(string title) {
    while (true) { // keep asking user until valid input is provided
      if (!string.IsNullOrEmpty(title))
        Console.WriteLine(title);

      string[] items = Console
        .ReadLine()
        .Split(new char[] { ' ', '\t', ';', ',' }, 
               StringSplitOptions.RemoveEmptyEntries);

      if (items.Length <= 0) {
        Console.WriteLine("You should provide at least one component");

        continue; 
      } 

      bool failed = false; 
      int[] result = new int[items.Length];

      for (int i = 0; i < items.Length; ++i) {
        if (int.TryParse(items[i], out int value))
          result[i] = value;
        else {
          Console.WriteLine($"Syntax error in {i + 1} term");
          failed = true;

          break;
        }  
      }

      if (!failed)
        return result; 
    }
  }

Kemudian Anda dapat menggunakan rutinitas ini seperti ini:

  // We don't want any 2D matrices here, just 2 vectors to sum
  int[] A = ReadVector("Please, enter vector A");
  int[] B = ReadVector("Please, enter vector B");  

  if (A.Length != B.Length) 
    Console.WriteLine("Vectors A and B have diffrent size");
  else {
    // A pinch of Linq to compute C = A + B 
    int[] C = A.Zip(B, (a, b) => a + b).ToArray();

    Console.WriteLine($"[{string.Join(", ", A)}] + ");
    Console.WriteLine($"[{string.Join(", ", B)}] = ");
    Console.WriteLine($"[{string.Join(", ", C)}]");  
  }  

Edit: Tentu Anda dapat menjumlahkan vektor dengan bantuan loop for lama yang baik alih-alih Linq:

   int[] C = new int[A.Length];

   for (int i = 0; i < A.Length; ++i)
     C[i] = A[i] + B[i]; 
2
Dmitry Bychenko 12 Mei 2021, 16:31