Другие языки программирования и технологии

(плиз решите на С++) Количество отрицательных элементов массива и заменить эти элементы их квадратами. Одномерный масси

#include <ctime>
#include <iostream>
#include <algorithm>
#include <functional>

using namespace std;

int rop() { return rand() % 51 - 25; }
int top(int x) { return x < 0? x * x : x; }

int main() {
    srand(time(0));
    int a[10];
    generate_n(a, 10, rop);
    cout << "исходный массив: ";
    for (int c = 0; c < 10; ++c) cout << ' ' << a[c];
    cout << "\nотрицательных эл-тов: " << count_if(a, a + 10, bind2nd(less<int>(), 0));
    transform(a, a + 10, a, top);
    cout << "\nпреобразованный массив: ";
    for (int c = 0; c < 10; ++c) cout << ' ' << a[c];
    return 0;
}

ЗЫ:
> Терентий Резман
> while(true){
>     int i;
>     std::cin >> i;
>     if(!std::cin)
>     break;
>    
>     v.push_back(i);
> }

Зачем все так усложнять? Достаточно:

int i;
while (cin >> i) v.push_back(i);
Дима Кузьмин
Дима Кузьмин
74 622
Лучший ответ
int m[10]; // пусть есть массив из 10 элементов
int n=0; // кол. отр. эл. = 0

// цикл поиска и замен для всех 10 элементов
for(int i=0; i<10; i++){
if(m[ i ] < 0) { // если нашли отр. элемент
m[ i ] = m[ i ] * m[ i ]; // заменяем квадратом
n++; // эквивалентно n=n+1; подсчет отр. элементов
}
}

УДАЧИ В ЖИЗНИ !!!
const int size = 5;
int arr[size];
int negCount = 0;

// Ввод данных в массив
for (int i = 0 ; i < size ; i++)
{
....cout << "Enter arr[" << i << "] = "; cin >> arr [ i ];
}

// Подсчет и замена отрицательных эл-тов
for (int i = 0 ; i < size ; i++)
{
....if (arr [ i ] <0)
....{
....negCount++;
....arr [ i ] = arr [ i ] * arr [ i ] ;
....}
}

// Вывод итогового массива
for (int i = 0 ; i < size ; i++)
{
....cout << " | " << arr [ i ];
}
// Вывод количества отрицательных элементов
cout << endl << "Count of negative elements is " << negCount;

P.S.
Почти один-к-одному написали))
RH
Ramiz Huseynov
7 783
человек с массивом справиться не может, а Вы ей вектора пихаете...
#include <iostream>
#include <vector>
#include <algorithm>

int main()
{
std::vector<int> v;

// вводим числа через пробел
// сколько хотим,
// по окончании ввода нажимаем Ctrl + Z и затем Enter
while(true){
int i;
std::cin >> i;

if(!std::cin)
break;

v.push_back(i);
}

int count = 0;
std::for_each(v.begin(), v.end(), [&count](int &elem){
if(elem < 0){
elem *= elem;
count++;
}
});

std::cout << "count = " << count << "\n"
<< "array:\n";

std::for_each(v.begin(), v.end(), [](int elem){
std::cout << elem << " ";
});
}

Похожие вопросы