Первый положительный элемент переводит вашу программу в бесконечный цикл.
Измените while
внутри цикла for
на if
. Внутри while
у вас есть tab2[i] = tab1[i];
, который для каждого i
никогда не изменит условия в цикле while. Таким образом, для каждого элемента в массиве вы либо выполняете назначение для элемента до бесконечности, либо никогда не выполняете назначение.
Изменение while
на if
удаляет цикл (в цикле) и оценивает условное выражение для отдельного элемента в цикле .
Еще один способ думать об этом заключается в следующем: «для каждого из этих элементов, если этот элемент является положительным, я назначу его другому массиву». То, что вы выразили в коде, было «для каждого из этих элементов, пока этот элемент является положительным, назначьте его другому массиву», что не делает то, что вы хотите.