сергей7777 С сергей7777 Регистрация 12 Дек 2013 Сообщения 82 Репутация 0 Спасибо 1 Монет 0 26 Июн 2022 #1 Здравствуйте, нужно написать функцию, заменяющую в исходном массиве все элементы меньшие нуля на значение минимального элемента этого массива. Вот то, что я сумел написать, но я не понимаю как расположить цикл для замены переменной, на минимальное значение массива. #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); }
Здравствуйте, нужно написать функцию, заменяющую в исходном массиве все элементы меньшие нуля на значение минимального элемента этого массива. Вот то, что я сумел написать, но я не понимаю как расположить цикл для замены переменной, на минимальное значение массива. #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); }
casha C casha Регистрация 28 Дек 2013 Сообщения 97 Репутация 0 Спасибо 0 Монет 0 26 Июн 2022 #2 Тогда это средний уровень #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" } Позитивный голос 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" }
Malish M Malish Регистрация 28 Дек 2013 Сообщения 66 Репутация 0 Спасибо 0 Монет 0 26 Июн 2022 #3 На самом простом по уровню изучения 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;} Позитивный голос 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;}
LеониD L LеониD Регистрация 9 Ноя 2013 Сообщения 75 Репутация 0 Спасибо 0 Монет 0 26 Июн 2022 #4 #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 Позитивный голос 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
Максим858 М Максим858 Регистрация 15 Окт 2013 Сообщения 89 Репутация 0 Спасибо 0 Монет 0 26 Июн 2022 #5 КРАБИК - ВЫХОДИ! А я вижу ушел в тень. Ну ладно, бред int min = mas[0]; if (min < mas) min = mas; объявить тут переменную, но вижу у вас это работает и нормально. Позитивный голос 0
КРАБИК - ВЫХОДИ! А я вижу ушел в тень. Ну ладно, бред int min = mas[0]; if (min < mas) min = mas; объявить тут переменную, но вижу у вас это работает и нормально.