
Создать динамические массивы, используя указатели. Задан одномерный массив а (n). Найти номер
последнего положительного элемента и переставить его с первым элементом массива. Найти количество и сумму отрицательных элементов массива. С++

Ответы на вопрос

Відповідь:
#include<iostream>
#include<random>
#include<ctime>
int main(){
setlocale(0,"");
std::mt19937 f(time(0));
std::uniform_int_distribution<> uid(-100,100);
long n,pos=0,neg=0,index;
std::cout<<"Введите n:\n";
std::cin>>n;std::cin.ignore();
std::cout<<"Массив до замены:\n";
long *mas = new long[n];
for(long i=0;i<n;i++){
mas[i]=uid(f);
std::cout<<"mas["<<i<<"] = "<<mas[i]<<std::endl;
if(mas[i]>0) pos+=mas[i];
else neg+=mas[i];
}
for(index=n-1;index>=0;index--){
if(mas[index]>0)break;
}
std::swap(mas[0],mas[index]);
std::cout<<"Массив после замены:\n";
for(long i=0;i<n;i++){
std::cout<<"mas["<<i<<"] = "<<mas[i]<<std::endl;
}
std::cout<<"Сумма позитивных чисел = "<<pos<<std::endl;
std::cout<<"Сумма отрицательных чисел = "<<neg<<std::endl;
delete []mas;
return 0;
}
Использован вихрь Мерсенна.



Конечно, я могу помочь вам с этой задачей на языке программирования C++. Вот пример кода:
```cpp
#include
int main() { // Задаем размер массива int n; std::cout << "Введите размер массива: "; std::cin >> n;
// Создаем динамический массив int* a = new int[n];
// Вводим элементы массива std::cout << "Введите элементы массива:\n"; for (int i = 0; i < n; ++i) { std::cout << "a[" << i << "] = "; std::cin >> a[i]; }
// Находим номер последнего положительного элемента int lastPositiveIndex = -1; for (int i = 0; i < n; ++i) { if (a[i] > 0) { lastPositiveIndex = i; } }
// Переставляем последний положительный элемент с первым if (lastPositiveIndex != -1) { int temp = a[0]; a[0] = a[lastPositiveIndex]; a[lastPositiveIndex] = temp; }
// Находим количество и сумму отрицательных элементов int countNegative = 0; int sumNegative = 0; for (int i = 0; i < n; ++i) { if (a[i] < 0) { ++countNegative; sumNegative += a[i]; } }
// Выводим результаты std::cout << "Массив после перестановки:\n"; for (int i = 0; i < n; ++i) { std::cout << "a[" << i << "] = " << a[i] << "\n"; }
std::cout << "Номер последнего положительного элемента: " << lastPositiveIndex << "\n"; std::cout << "Количество отрицательных элементов: " << countNegative << "\n"; std::cout << "Сумма отрицательных элементов: " << sumNegative << "\n";
// Освобождаем выделенную память delete[] a;
return 0; } ```
Этот код создает динамический массив, заполняет его значениями, находит номер последнего положительного элемента и переставляет его с первым элементом. Затем он находит количество и сумму отрицательных элементов и выводит результаты. Не забывайте освобождать память с помощью `delete[]` после использования динамического массива.


Похожие вопросы
Топ вопросов за вчера в категории Информатика







Последние заданные вопросы в категории Информатика
-
Математика
-
Литература
-
Алгебра
-
Русский язык
-
Геометрия
-
Английский язык
-
Химия
-
Физика
-
Биология
-
Другие предметы
-
История
-
Обществознание
-
Окружающий мир
-
География
-
Українська мова
-
Информатика
-
Українська література
-
Қазақ тiлi
-
Экономика
-
Музыка
-
Право
-
Беларуская мова
-
Французский язык
-
Немецкий язык
-
МХК
-
ОБЖ
-
Психология
-
Физкультура и спорт
-
Астрономия
-
Кыргыз тили
-
Оʻzbek tili