Определить,содержит ли заданный массив группы простых элементов, и удалить вторую такую группу.

Определить,содержит ли заданный массив группы простых элементов.Удалить из массива вторую группу таких элементов.
Вот код программы:

#include <iostream> 
#include <math.h>
#include <stdlib.h>  
using namespace std; 
int prostoe(int N)
{
int i,pr;
if (N<2) pr=0;
else
for(pr=1,i=2; i<=N/2; i++)
if (N%i==0){pr=0; break;}
return pr;
}

int main ()

{
setlocale(0, "");
int *X,*G1,*D,N,i,P,M;
cout<<"vvedite znacenie N=";cin>>N;
X=new int [N];
cout<<"vvedite znacenie M=";cin>>M;
G1=new int [M];
cout<<"vvedite znacenie P=";cin>>P;
D=new int [P];
cout<<"vvedite massiv X\n";
for(i=0;i<N;i++)
{
cout<<"X("<<i<<")=";cin>>X[i];}
system("pause");
for(i=0;i<N;i++)
{
if (prostoe(X[i])){ G1[i]=X[i];
cout<<"G1("<<i<<")=";cout<<G1[i]<<endl;}
else { D[i]=X[i];
cout<<"D("<<i<<")=";cout<<D[i]<<endl;}
}
delete [] G1;
system("pause");
return 0;
}

Почему то мне кажется,что неверно работает она.

На сколько я понял, у тебя во втором цикле числа рассортировываются из первого массива по двум другим массивам, при этом первый массив остаётся неизменным. Но в задании сказано, что во первом массиве имеются группы из простых чисел и из массива надо удалить вторую группу простых чисел. Т.е. что бы перед выводом результата работы массив содержал все введённые числа без второй группы простых чисел. Чисто по логике, твоя программа не соответствует заданию.

По самой же программе есть следующие замечания:

  1. Динамически создаются три массива, но уничтожается только один. Надо добавить удаление остальных массивов.
  2. При создании массивов программа запрашивает три размерности для трёх массивов, причём из дальнейшей логики программы понятно, что все три массива должны быть одного размера. В противном случае, будет либо перерасход памяти, либо, что совсем плохо, выход за границу массива с разнообразными последствиями.
  3. Массивы G1 и D будут частично заполнены мусором, поскольку если, например, 1-й элемент массива X — простое число, а второй элемент — не простое, то G1[0] <- X[0] и D[1] <- X[1], при этом элементы G1[1] и D[0] останутся неинициализированными, т.е. будут содержать мусор. И без повторной проверки соответствующего элемента массива X выяснить где в этих массивах «нормальные» значения, а где мусор — невозможно.

Внимание! Это довольно старый топик, посты в него не попадут в новые, и их никто не увидит. Пишите пост, если хотите просто дополнить топик, а чтобы задать новый вопрос — начните новый.

Ответить

Вы можете использовать разметку markdown для оформления комментариев и постов. Используйте функцию предпросмотра для проверки корректности разметки.

Пожалуйста, оформляйте исходный код в соответствии с правилами разметки. Для того, чтобы вставить код в комментарий, скопируйте его в текстовое поле ниже, после чего выделите то, что скопировали и нажмите кнопку «код» в панели инструментов. Иначе ваш код может принять нечитаемый вид.

Либо производите оформление кода вручную, следующим образом:

``` #include <iostream> using namespace std; int main() { // ... } ```

Предпросмотр сообщения

Ваше сообщение пусто.