Информация об изменениях

Сообщение Re: +- для массива в зависимости от условия от 07.05.2024 15:22

Изменено 07.05.2024 15:24 romangr

Re: +- для массива в зависимости от условия
Здравствуйте, e.thrash, Вы писали:

ET>Просто интересно.

ET>Есть массив целых и есть некое число. Если число больше 0, надо пройти по массиву и сделать вычитание, если меньше то добавление по единичке пока число не станет равно нулю.
ET>Можно ли

ET>
  текущий код
ET>
ET>int num;
ET>var arr = new int[] { ... };
ET>int ind = 0;

ET>if (num > 0)
ET>{
ET>  while (num > 0)
ET>  {
ET>    arr[ind]--;
ET>    ind++;
ET>    num--;
ET>  }
ET>}

ET>if (num < 0)
ET>{
ET>  while (num < 0)
ET>  {
ET>    arr[ind]++;
ET>    ind++;
ET>    num++;
ET>  }
ET>}
ET>




ET>переделать в вид чтобы был один цикл и для + и для —


Если я правильно понял, то что-то типа такого:
void myfunc(int[] list, int num)
{
  int value = num > 0 ? -1 : +1;
  while (num != 0)
  {
    arr[ind] += value;
    ind++;
    num += value;
  }
}
... << RSDN@Home 1.3.110 alpha 5 rev. 62>>
Re: +- для массива в зависимости от условия
Здравствуйте, e.thrash, Вы писали:

ET>Просто интересно.

ET>Есть массив целых и есть некое число. Если число больше 0, надо пройти по массиву и сделать вычитание, если меньше то добавление по единичке пока число не станет равно нулю.
ET>Можно ли

ET>
  текущий код
ET>
ET>int num;
ET>var arr = new int[] { ... };
ET>int ind = 0;

ET>if (num > 0)
ET>{
ET>  while (num > 0)
ET>  {
ET>    arr[ind]--;
ET>    ind++;
ET>    num--;
ET>  }
ET>}

ET>if (num < 0)
ET>{
ET>  while (num < 0)
ET>  {
ET>    arr[ind]++;
ET>    ind++;
ET>    num++;
ET>  }
ET>}
ET>




ET>переделать в вид чтобы был один цикл и для + и для —


Если я правильно понял, то что-то типа такого:

void myfunc(int[] list, int num)
{
  int value = num > 0 ? -1 : +1;
  while (num != 0)
  {
    list[ind] += value;
    ind++;
    num += value;
  }
}