Здравствуйте, нужно написать функцию, заменяющую в исходном массиве все элементы меньшие нуля на значение минимального элемента этого массива.
Вот то, что я сумел написать, но я не понимаю как расположить цикл для замены переменной, на минимальное значение массива.
#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);
}
C/C++
Помогите написать функцию на C++
#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
Игорь Кутасевич
Спасибо!
Тогда это средний уровень :)
#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");
}
#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;}
#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;}
Игорь Кутасевич
Спасибо!
КРАБИК - ВЫХОДИ!
А я вижу ушел в тень. Ну ладно, бред
int min = mas[0];
if (min < mas[i]) min = mas[i];
объявить тут переменную, но вижу у вас это работает и нормально.
А я вижу ушел в тень. Ну ладно, бред
int min = mas[0];
if (min < mas[i]) min = mas[i];
объявить тут переменную, но вижу у вас это работает и нормально.

Ismat Madraimov
Я же всё-таки не чертик, выскакивающий по нажатию из табакерки ;) Когда есть время, тогда и отвечаю :)
Похожие вопросы
- Помогите написать программу на C++
- Помогите написать программу на C++
- Как написать функцию в c++ которая складывает все положительные числа
- ПОМОГИТЕ НАПИСАТЬ ПРОГРАММУ НА C++
- Прошу помогите написать код на c++, нужно сдать сегодня ?
- Помогите написать программу на C++
- ПОМОГИТЕ НАПИСАТЬ ПРОГРАММУ НА C++ ИСПОЛЬЗУЯ ТОЛЬКО ЦИКЛЫ.
- Помогите написать программу на C++ Нето мои знания по программированию равны 0 а зачёт нужен
- Помогите написать литсинг на C++ Дана целочисленная квадратная матрица. Определить: ↓↓↓
- Помогите написать программу на c++