Помогите написать функцию на C++ - Вопросы по С+

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

Регистрация
12 Дек 2013
Сообщения
81
Репутация
0
Спасибо
1
Монет
0
Здравствуйте, нужно написать функцию, заменяющую в исходном массиве все элементы меньшие нуля на значение минимального элемента этого массива.



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



#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)

min = mas;

}

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);

}
 
Регистрация
28 Дек 2013
Сообщения
95
Репутация
0
Спасибо
0
Монет
0
Тогда это средний уровень :)

#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 << ' ';
}
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)) {
sequence = 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");
}
 
Регистрация
28 Дек 2013
Сообщения
65
Репутация
0
Спасибо
0
Монет
0
На самом простом по уровню изучения 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<m)m=mas;
for(int i=0;i<n;i++)if(mas<0)mas=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;}
 
Регистрация
9 Ноя 2013
Сообщения
74
Репутация
0
Спасибо
0
Монет
0
#include

using namespace std;

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

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

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

for (int j = 0; j < n; j++) {
cout
 
Регистрация
15 Окт 2013
Сообщения
85
Репутация
0
Спасибо
0
Монет
0
КРАБИК - ВЫХОДИ!


А я вижу ушел в тень. Ну ладно, бред
int min = mas[0];
if (min &lt; mas) min = mas;
объявить тут переменную, но вижу у вас это работает и нормально.
35530148_abdb5be329e0d67e487f4eadfb97610b_800.png

 
Сверху Снизу