Задача 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 }