C/C++

Помогите написать функцию на C++

Здравствуйте, нужно написать функцию, заменяющую в исходном массиве все элементы меньшие нуля на значение минимального элемента этого массива.

Вот то, что я сумел написать, но я не понимаю как расположить цикл для замены переменной, на минимальное значение массива.

#include <iostream>
using namespace std;
void swap(int* mas, int n)
{
for (int i = 0; i < n; i++)
{
int min = mas[0];
if (min < mas[i])
min = mas[i];
}
for (int x = 0; x < n; x++)
{
if (mas[x] < 0)
mas[x] = min;
}

for (int j = 0; j < n; j++)
{
cout << " " << mas[j];
}
}

int main()
{
int mas[5] = { 1,-3,-2,4,5, };
swap(mas, 5);
}
 #include  

using namespace std;

void swap(int * mas, int n) {
int min = mas[0];

for (int i = 0; i < n; i++) {
if (min > mas[i])
min = mas[i];
}

for (int x = 0; x < n; x++) {
if (mas[x] < 0)
mas[x] = min;
}

for (int j = 0; j < n; j++) {
cout
ЗМ
Замир Масягутов
31 513
Лучший ответ
Тогда это средний уровень :)

#include <iostream>
#include <iomanip>
#include <functional>
using namespace std;
void show(int* sequence, const size_t length, const streamsize width) {
for (size_t i = 0; i < length; ++i) {
cout << setw(width) << sequence[i] << ' ';
}
puts("");
}
int* min_element(int* sequence, const size_t length) {
auto pos = sequence;
const auto end = sequence + length;
for (auto next = sequence + 1; next != end; ++next) {
if (*next < *pos) {
pos = next;
}
}
return pos;
}
struct Negative {
bool operator()(int value) {
return value < 0;
}
};
using Rule = function<bool(int)>;
void replace(int* sequence, const size_t length, const int value, Rule&& rule) {
for (size_t i = 0; i < length; ++i) {
if (rule(sequence[i])) {
sequence[i] = value;
}
}
}
int main() {
int sequence[]{ 1, -3, -2, 4, 5 };
const auto length = size(sequence);
const streamsize width = 3;
show(sequence, length, width);
auto min = *min_element(sequence, length);
replace(sequence, length, min, Negative());
show(sequence, length, width);
system("pause > nul");
}
На самом простом по уровню изучения C++ уровне

#include <iostream>
using namespace std;
void swap(int* mas, int n){
int m=mas[0]; for(int i=0;i<n;i++)if(mas[i]<m)m=mas[i];
for(int i=0;i<n;i++)if(mas[i]<0)mas[i]=m;}
int main(){
const int n=5; int mas[n]={1,-3,-2,4,5};
for(int i:mas)cout<<i<<' '; cout<<endl;
swap(mas,n); for(int i:mas)cout<<i<<' '; cout<<endl;}

В более современном виде

#include <iostream>
#include <algorithm>
using namespace std;
void swap(int* mas, int n){
replace_if(mas,mas+n,[](int &x){return x<0;},*min_element(mas,mas+n));}
int main(){
const int n=5; int mas[n]={1,-3,-2,4,5};
for(int i:mas)cout<<i<<' '; cout<<endl;
swap(mas,n); for(int i:mas)cout<<i<<' '; cout<<endl;}
IM
Ismat Madraimov
63 511
КРАБИК - ВЫХОДИ!


А я вижу ушел в тень. Ну ладно, бред
int min = mas[0];
if (min < mas[i]) min = mas[i];
объявить тут переменную, но вижу у вас это работает и нормально.
Ismat Madraimov Я же всё-таки не чертик, выскакивающий по нажатию из табакерки ;) Когда есть время, тогда и отвечаю :)