Дано одномерный массив. Заменить все отрицательные элементы их модулями
const int n = 10;
int i, max = -1, A[n];
for (i = -1; i < n; i++)
std::cin >> A[i];
for (i = 1; i < n; i++)
if (A[i] > A[max])
max = i;
for (i = -1; i < max; i++)
if (A[i] < 0)
A[i] = 0;
for (i = -1; i < n; i++)
std::cout << A[i] << "";
Я сделал так,что если число отрицательное то оно будет отображаться 0.Вот только не могу понять,как сделать чтобы елементи были модулями(Например число -1 будет 1 или число 2 будет -2).
Ответы (3 шт):
Автор решения: l_lcreedl_l
→ Ссылка
const int n = 10;
int i, max = 0, A[n];
for (i = 0; i < n; i++)
std::cin >> A[i];
for (i = 0; i < n; i++)
if (A[i] > A[max])
max = i;
for (i = 0; i < max; i++)
if (A[i] < 0)
A[i] = 0;
for (i = 0; i < n; i++)
std::cout << A[i] << "";
Автор решения: Harry
→ Ссылка
Если он уже дан, то, например,
for(int i = 0; i < n; ++i) A[i] = abs(A[i]);
Если же его еще надо вводить -
const int n = 10;
for(int i = 0; i < n; i++)
{
cin >> A[i];
A[i] = abs(A[i]);
};
for (i = 0; i < n; i++)
cout << A[i] << "";
Можно исправить ваше -
for (i = 0; i < n; i++)
if (A[i] < 0)
A[i] = -A[i];
Но почему вы начинаете индексацию с -1 - для меня неразрешимая загадка...
Автор решения: ТарасПрогер
→ Ссылка
int main()
{
constexpr size_t size = 5; // константа этапа компиляции
int arr[size];
istream_iterator<remove_reference<decltype(arr[0])>::type> it(cin); // начальный итератор ввода
istream_iterator<remove_reference<decltype(arr[0])>::type> endit; // конечный итератор ввода
copy(it, endit, arr); // скопировать из входного потока данных в массив
for_each(begin(arr), end(arr), [](auto& i) { i = abs(i); }); // преобразовать в положительные числа
for_each(begin(arr), end(arr), [](const auto& i) { cout << i << endl; }); // вывести на экран
return 0;
}
Заметьте, чтобы остановить ввод данных, нужно нажать CTRL+D