Задача: Определить есть ли в массиве серии из подряд стоящих простых чисел
Задача 7. Дан динамический массив целых чисел. Определить есть ли в массиве серии из подряд стоящих простых чисел. Если да посчитать количество таких серий и удалить последнюю серию.
Решение с использованием языка CPP:
/* C++
* File: arrsimpleseries.cpp
* Author: darkfire
*
* Created on November 7, 2010, 7:19 PM
*/
#include <stdlib.h>
#include <iostream>
using std::cout;
using std::endl;
void EnterArrRand(int *, int);
void ViewArr(int *, int);
bool simplenumber(int);
int *deletesimple(int *,int &, int, int);
int main(int argc, char** argv) {
//если не передано ни одного аргумента значит применяем размер маcсива по умолчанию
int SIZE = 300, first=0, last=0;
int count=0, counts=0;
if (argc>1)SIZE=atoi(argv[1]);
int *parr = new int [SIZE];
EnterArrRand(parr,SIZE);//заполняем массив
ViewArr(parr,SIZE);//выводим на экран массив
cout<<"\n";
for(int i=0;i<SIZE;i++){
if (parr[i]==parr[i+1]){
if (!simplenumber(parr[i])){//если не простое продолжить выполнять цикл далее
continue;
}
count++;
}else{
if(count>0){
//запоминаем координаты серии
last=i;
first=last-count;
count=0;
counts++;
}
}
}
cout<<"first: "<<first<<"\n";
cout<<"last: "<<last<<"\n";
cout<<"counts: "<<counts<<"\n";
//функция для удаления последней последовательности
if(counts>0){
parr = deletesimple(parr,SIZE,first,last);
ViewArr(parr,SIZE);//выводим на экран новый массив
}
delete [] parr;
cout<<"\n";
return (EXIT_SUCCESS);
}
int *deletesimple(int *parrold,int &SIZE, int first, int last){
int SIZENew = SIZE - (last -first)-1;
int *parrnew = new int [SIZENew];
for(int i=0,j=0;i<SIZE;i++){
if((i>=first)&&(i<=last))continue;
else{
parrnew[j]=parrold[i];
j++;
}
}
delete [] parrold;//удалем старый массив
SIZE=SIZENew;//если нужно использовать в других функциях
return parrnew;
}
bool simplenumber(int number){
//true если число простое
for(int i=2;i<number-1;i++){
if(number%i==0)return false;
}
return true;
}
void ViewArr(int *parr1, int SIZEA){
for(int i=0;i<SIZEA;i++)cout<<parr1[i]<<" ";
}
void EnterArrRand(int *parr1, int sizearr){
for(int i=0;i<sizearr;i++)
parr1[i]=rand()%12+1;//for SIZE=30
}
📌 Удобный подбор VPS по параметрам доступен на DIEGfinder.com - официальном инструменте проекта DIEG. Это часть единой экосистемы, созданной для того, чтобы помочь быстро найти подходящий VPS/VDS сервер для любых задач хостинга.
📌 Для тестирования скриптов, установщиков VPN и Python-ботов рекомендуем использовать надежные VPS на короткий срок. Подробнее о быстрой аренде VPS для экспериментов - читайте здесь.
💥 Подпишись в Телеграм 💥 и задай вопрос по сайтам и хостингам бесплатно!7 Самых Популярных Статей
- Как запустить скрипты и веб-приложения на Python
- Что такое страны TIER 1,2,3
- 7 способов сравнения файлов по содержимому в Windows или Linux
- Установка и тестирование веб-панели HestiaCP
- Nginx простые примеры конфигурации
- top, htop, atop определение загрузки ОС (Load average, LA)
- Использование rsync в примерах
7 Самых Популярных Обзоров
- Хостинг для Python-скриптов и приложений
- ТОП 4 лучших антидетект браузеров (Бесплатные & Платные)
- Подборка купонов (промокоды) на хостинг, антидетект браузеры
- Обзор THE.Hosting (PQ Hosting): надежный хостинг с профессиональной поддержкой
- Хостинг в России
- Хостинг в Европе
- Обзор браузера Dolphin {anty} для мультиаккаунтинга