Циклы. Поочерёдное вычитание первого элемента массива из первого и каждого последующего массива
Приветствую всех кто читает! Поставил перед собой задачу по циклам на плюсах. Условие таково: имеется массив из n чисел (Переменная n задаётся с клавиатуры, но я ищу возможность автоматического присвоения значения переменной на основание введённого цикла (этот вопрос не основной, но если у кого-то появятся идеи - буду рад Вашей помощи)), сам массив также записывается с клавиатуры. Для него выполняется цикл по вычитанию первого числа самого же массива. Следующим действием нужно повторить операцию для уже сгенерированного массива (arr[n]-= temp, где temp = arr[0]). Суть вопроса следующая: какие есть способы реализации, учитывая что переменную temp нужно перезаписать после каждой итерации, а конечным результатом цикла должно быть единственное значение (конечный вывод в консоль каждого нового массива в новую строку с конечным пирамидальным видом, где последнее число будет разницей этого же числа с первыми элементами всех циклов) Если Вы считаете что вопрос глупый, то заранее прошу прощения. Поиски в гугле не дал ответов на поставленный вопрос, поэтому прошу подсказку у Знатоков. Благодарю за каждый ответ
UPD:
int n;
int* arr = new int[n];
int temp;
cout << "Введите колличество элементов в массиве ";
cin >> n;
cout << " Запишите массив: ";
for (int i = 0; i < n; i++)
{
cin >> arr[i];
}
temp = arr[0];
for (int i = 0; i < n; i++)
{
arr[i] -= temp;
cout << arr[i] << ' ';
}
Скорректирую вопрос, так как первичный вариант задан некорректно. Тот способ который мне известен предполагает окончание цикла по достижению числа ноль, но это сразу же приведёт к завершению работы кода, так как ноль ожидается в каждой итерации цикла. Необходимо найти решение, при котором цикл будет выполнятся полностью и завершаться выводом всех массивов, где последний массив является числом - разницей последнего числа первично заданного массива и каждого нулевого элемента (первого числа) предшествующих ему массивов.
Ответы (1 шт):
Если не выводить пирамидальную пирамидку :), то
int a, b;
cout << "Введите предпоследний элемент массива:";
cin >> a;
cout << "Введите последний элемент массива:";
cin >> b;
cout << b-a;
Результат от всех предыдущих чисел массива не зависит.
Раз нужна именно пирамидка... Ну вот пример (только мне вводить руками не хочется, я заполняю случайными числами):
int main()
{
int n = 12;
int * v = new int[n];
for(int i = 0; i < n; ++i)
{
int d = rand()%20;
cout << setw(6) << d;
v[i] = d;
}
cout << endl;
for(int i = 0; i < n-1; ++i)
{
for(int j = i+1; j < n; ++j) cout << setw(6) << (v[j] -= v[i]);
cout << endl;
}
}