Копирование содержимого таблицы в другое с помощью циклов - PullRequest
1 голос
/ 02 июня 2019

Я новичок в C # и у меня проблема с домашней работой, с которой я борюсь. Я не могу скопировать содержимое таблицы в другую с помощью циклов. Я хочу скопировать положительные цифры из предопределенной таблицы из 10 элементов во вторую и показать содержимое в консоли после того, как это будет сделано.

int[] tab1 = { 4, 6, 32, 16, 5, 22, -3, 61, 11, 99 };
int[] tab2 = new int[tab1.Length];
for (int i = 0; i < tab2.Length; i++)
{
  while(i > 0)
  {
    tab2[i] = tab1[i];
  }
}

for (int i = 0; i < tab2.Length; i++)
{
  Console.Write(tab2[i] + ", ");
}
Console.ReadKey();

Ответы [ 2 ]

1 голос
/ 02 июня 2019

Первый положительный элемент переводит вашу программу в бесконечный цикл.

Измените while внутри цикла for на if. Внутри while у вас есть tab2[i] = tab1[i];, который для каждого i никогда не изменит условия в цикле while. Таким образом, для каждого элемента в массиве вы либо выполняете назначение для элемента до бесконечности, либо никогда не выполняете назначение.

Изменение while на if удаляет цикл (в цикле) и оценивает условное выражение для отдельного элемента в цикле .

Еще один способ думать об этом заключается в следующем: «для каждого из этих элементов, если этот элемент является положительным, я назначу его другому массиву». То, что вы выразили в коде, было «для каждого из этих элементов, пока этот элемент является положительным, назначьте его другому массиву», что не делает то, что вы хотите.

0 голосов
/ 02 июня 2019

Если вы не знаете, сколько положительных элементов (будет на вкладке 2), вы не сможете определить размер второго массива. Поэтому вам лучше использовать Список , где вы можете хранить необходимое количество предметов. if (tab1 [i]> 0) будет проверять элемент в первом массиве.

int[] tab1 = { 4, 6, 32, 16, 5, 22, -3, 61, 11, 99 };
List<int> tab2 = new List<int>();// because you dont know how many items positive
for (int i = 0; i < tab1.Length; i++)
{
    if (tab1[i] > 0)
    {
      tab2.Add(tab1[i]);
     }
  }

 for (int i = 0; i < tab2.Count; i++)
 {
   Console.Write(tab2[i] + ", ");
 }
 Console.ReadKey();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...