Вопрос задан 25.06.2023 в 08:46. Предмет Информатика. Спрашивает Николайчук Мария.

Из массива X(N) удалить три наибольших простых числа.(СИ)

0 0
Перейти к ответам

Ответы на вопрос

Внимание! Ответы на вопросы дают живые люди. Они могут содержать ошибочную информацию, заблуждения, а также ответы могут быть сгенерированы нейросетями. Будьте внимательны. Если вы уверены, что ответ неверный, нажмите кнопку "Пожаловаться" под ответом.
Отвечает Алиева Мадина.

Ответ:

#include<conio.h>

#include<stdio.h>

#include <stdlib.h>

#include<time.h>

#define N 25

#define K 3

 

int prime(int num)

{   int i;

   for(i=2;i<=num/2;i++)

       if(num%i==0) break;

   if(i==num/2+1 || num==1) return num;

   else return 0;

}

 

int maxPos(int A[])

{   int i,max,mPos;

   max=0;

   for(i=0;i<N;i++)

       if(A[i]>max)

       {   max=A[i];

           mPos=i;

       }

   return mPos;

}

 

int main()

{   int i,j,X[N],Y[N],pos;

   srand(time(NULL));

   for(i=0;i<N;i++)

   {   X[i]=rand()%30+1;

       Y[i]=prime(X[i]);

   }

   printf("Original array\n");

   for(i=0;i<N;i++)

       printf("%3d",X[i]);

   printf("\nArray-masque of prime numbers\n");

   for(i=0;i<N;i++)

       printf("%3d",Y[i]);

   

   printf("\n\n");

   for(j=0;j<K;j++)

   {   pos=maxPos(Y);

       printf("%3d in position %3d targeted\n",X[pos],pos);

       Y[pos]=-1;

       X[pos]=-1;

   }

 

   j=0;

   for(i=0;i<N;i++)

       if(X[i]!=-1)

       {   Y[j]=X[i];

           j++;

       }

   

   printf("\nResult:\n");

   for(i=0;i<j;i++)

       printf("%3d",Y[i]);

   

   getchar();

   return 0;

}

Объяснение:

0 0
Отвечает нейросеть ChatGpt. Будьте внимательны, ответы нейросети могут содержать ошибочные или выдуманные данные.

Для удаления трех наибольших простых чисел из массива X(N) вам потребуется следующий алгоритм на языке программирования C++:

  1. Создайте функцию для проверки, является ли число простым. Простое число - это число, которое делится только на 1 и само на себя.
cpp
bool isPrime(int num) { if (num <= 1) { return false; } for (int i = 2; i * i <= num; ++i) { if (num % i == 0) { return false; } } return true; }
  1. Заполните массив X(N) вашими данными.

  2. Создайте функцию для удаления трех наибольших простых чисел из массива.

cpp
void removeLargestPrimes(int X[], int& N) { int largestPrimes[3] = {0}; // Массив для хранения трех наибольших простых чисел int count = 0; // Счетчик найденных простых чисел for (int i = 0; i < N; ++i) { if (isPrime(X[i])) { // Если X[i] является простым числом if (count < 3) { // Если еще не найдено 3 простых числа, то добавляем X[i] в массив largestPrimes largestPrimes[count] = X[i]; } else { // Иначе, находим минимальное простое число в largestPrimes и заменяем его, если X[i] больше int minIndex = 0; for (int j = 1; j < 3; ++j) { if (largestPrimes[j] < largestPrimes[minIndex]) { minIndex = j; } } if (X[i] > largestPrimes[minIndex]) { largestPrimes[minIndex] = X[i]; } } count++; } } // Удаляем найденные простые числа из массива X for (int i = 0; i < N; ++i) { for (int j = 0; j < 3; ++j) { if (X[i] == largestPrimes[j]) { // Если X[i] совпадает с одним из наибольших простых чисел, удаляем его из массива for (int k = i; k < N - 1; ++k) { X[k] = X[k + 1]; } N--; // Уменьшаем размер массива i--; // Возвращаемся на предыдущий индекс, чтобы не пропустить другие числа } } } }
  1. Вызовите эту функцию и передайте ей массив X и размер N:
cpp
int main() { int N = 10; // Размер массива X int X[N] = {23, 7, 42, 17, 5, 12, 31, 8, 19, 2}; removeLargestPrimes(X, N); // Выводим измененный массив X for (int i = 0; i < N; ++i) { cout << X[i] << " "; } return 0; }

Этот код найдет и удалит три наибольших простых числа из массива X и выведет измененный массив без них.

0 0

Похожие вопросы

Топ вопросов за вчера в категории Информатика

Последние заданные вопросы в категории Информатика

Задать вопрос