Дан два массива размерности 27. Заполнить массив случайными
числами в диапазоне от -48 до 59. Вывести массивы на экран. Найти первый
чётный и последний положительный элементы и вывести их и их индексы на
экран. Произвести сортировку по возрастанию элементов, расположенных
между ними. Вывести массивы на экран. Найти и вывести на экран количество
простых чисел в массиве и их индексы.
Другие языки программирования и технологии
Помогите пожалуйста с решением задания на с++
Размерность массива — это количество индексов, необходимое для однозначной адресации элемента в рамках массива.
Т. е. 27 мерный массив у тебя? Если да, то каким образом его выводить на экран?
Или все таки массив 2х-мерный, т. е. мартица размером 27х27?
Т. е. 27 мерный массив у тебя? Если да, то каким образом его выводить на экран?
Или все таки массив 2х-мерный, т. е. мартица размером 27х27?
Сергей Тихонов
два отдельных одномерных массива с 27 элементами в каждом, насколько я понимаю
#include <iostream>
#include <array>
#include <vector>
#include <random>
#include <algorithm>
using namespace std;
vector<unsigned> sieveOfEratosthenes(unsigned max);
ostream& operator<<(ostream& os, const vector<unsigned>& v){
if(v.size() == 0) return os << "[]";
os << '[';
for(size_t i = 0; i < v.size(); i++)
os << v[i] << (v.size() - i == 1 ? "]" : ", ");
return os;
}
int main(){
array<int, 27> A;
mt19937 engine((random_device())());
uniform_int_distribution<int> dist(-48, 59);
cout << "Массив: ";
for(size_t i = 0; i < A.size(); i++)
cout << (A[i] = dist(engine)) << (A.size() - i == 1 ? '\n' : ' ');
array<int, 27>::iterator begin = find_if(A.begin(), A.end(), [](int n){ return n % 2 == 0; }) + 1;
array<int, 27>::iterator end = find_if(A.rbegin(), A.rend(), [](int n){ return n > 0; }).base() - 1;
sort(begin, end);
cout << "Массив после сортировки: ";
for(size_t i = 0; i < A.size(); i++)
cout << A[i] << (A.size() - i == 1 ? '\n' : ' ');
vector<unsigned> primes = sieveOfEratosthenes(*max_element(A.cbegin(), A.cend()));
cout << "Простые числа: " << endl;
for(size_t i = 0; i < A.size(); i++)
if(find(primes.cbegin(), primes.cend(), A[i]) != primes.cend())
cout << "A[" << i << "] = " << A[i] << endl;
return 0;
}
vector<unsigned> sieveOfEratosthenes(unsigned max){
if(max <= 1) return {};
bool* mask = new bool[max + 1];
mask[0] = false;
mask[1] = false;
for(size_t i = 2; i <= max; i++) mask[i] = true;
vector<unsigned> res = {2};
while(res.back() * res.back() <= max){
for(size_t i = res.back() * res.back(); i <= max; i += res.back())
mask[i] = false;
res.push_back(res.back());
while(res.back() <= max && !mask[++res.back()]);
}
if(res.back() > max) res.erase(res.end() - 1);
for(unsigned i = res.back() + 1; i <= max; i++)
if(mask[i]) res.push_back(i);
delete[] mask;
return res;
}
#include <array>
#include <vector>
#include <random>
#include <algorithm>
using namespace std;
vector<unsigned> sieveOfEratosthenes(unsigned max);
ostream& operator<<(ostream& os, const vector<unsigned>& v){
if(v.size() == 0) return os << "[]";
os << '[';
for(size_t i = 0; i < v.size(); i++)
os << v[i] << (v.size() - i == 1 ? "]" : ", ");
return os;
}
int main(){
array<int, 27> A;
mt19937 engine((random_device())());
uniform_int_distribution<int> dist(-48, 59);
cout << "Массив: ";
for(size_t i = 0; i < A.size(); i++)
cout << (A[i] = dist(engine)) << (A.size() - i == 1 ? '\n' : ' ');
array<int, 27>::iterator begin = find_if(A.begin(), A.end(), [](int n){ return n % 2 == 0; }) + 1;
array<int, 27>::iterator end = find_if(A.rbegin(), A.rend(), [](int n){ return n > 0; }).base() - 1;
sort(begin, end);
cout << "Массив после сортировки: ";
for(size_t i = 0; i < A.size(); i++)
cout << A[i] << (A.size() - i == 1 ? '\n' : ' ');
vector<unsigned> primes = sieveOfEratosthenes(*max_element(A.cbegin(), A.cend()));
cout << "Простые числа: " << endl;
for(size_t i = 0; i < A.size(); i++)
if(find(primes.cbegin(), primes.cend(), A[i]) != primes.cend())
cout << "A[" << i << "] = " << A[i] << endl;
return 0;
}
vector<unsigned> sieveOfEratosthenes(unsigned max){
if(max <= 1) return {};
bool* mask = new bool[max + 1];
mask[0] = false;
mask[1] = false;
for(size_t i = 2; i <= max; i++) mask[i] = true;
vector<unsigned> res = {2};
while(res.back() * res.back() <= max){
for(size_t i = res.back() * res.back(); i <= max; i += res.back())
mask[i] = false;
res.push_back(res.back());
while(res.back() <= max && !mask[++res.back()]);
}
if(res.back() > max) res.erase(res.end() - 1);
for(unsigned i = res.back() + 1; i <= max; i++)
if(mask[i]) res.push_back(i);
delete[] mask;
return res;
}
Похожие вопросы
- Здравствуйте! помогите пожалуйста выполнить зачётные задания по программированию на Pascal
- Помогите, пожалуйста, с решением задачи из задачника Абрамяна.
- Помогите пожалуйста оптимизировать решение задачи (Зайчик) на C++
- Помогите пожалуйста с решением задач в паскале
- помогите пожалуйста с 3 заданием, С++
- Помогите пожалуйста составить решение с задачей по программированию(на любом языке программирования)
- Помогите пожалуйста с решением задачи, если можно объясните как расшифровать.
- добрый вечер!помогите пожалуйста решить задание
- Всем привет! Помогите, пожалуйста, создать блок - схему к следующему коду и заданию. Заранее большое спасибо!
- Помогите пожалуйста с Заданием по Паскалю!