Все положительные элементы массива увеличить в два раза - C (СИ)
Формулировка задачи:
Все положительные элементы массива а1, а2 , ..., а20, расположенные правее первого нулевого элемента, увеличить в два раза.
Решение задачи: «Все положительные элементы массива увеличить в два раза»
textual
Листинг программы
bool flag = false;
for ( int i = 0 ; i < N; i ++ )
{
if ( mas[i] == 0 ) flag = true;
if ( flag && mas[i] > 0 ) mas[i] *= 2 ;
}
Объяснение кода листинга программы
В данном коде представлена логика обработки массива в следующем порядке:
- Переменная типа bool
flagинициализируется значениемfalse. Она будет использоваться для контроля наличия нулевых элементов в массиве. - Происходит цикл по всем элементам массива
masот индекса0доN-1. - Внутри цикла проверяется два условия:
- Если значение текущего элемента массива
mas[i]равно0, то переменнаяflagустанавливается в значениеtrue. Это необходимо для того, чтобы на следующем шаге цикла проверить, были ли в массиве нулевые элементы. - Если значение переменной
flagравноtrueи текущий элемент массиваmas[i]больше0, то значение этого элемента удваивается с помощью оператора умножения*= 2.
- Если значение текущего элемента массива
- После завершения цикла, переменная
flagне будет иметь значенияtrue, так как все нулевые элементы были обработаны и увеличены в два раза. Таким образом, в результате выполнения данного кода, все положительные элементы массива будут увеличены в два раза.