Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
0 / 0 / 0
Регистрация: 17.11.2019
Сообщений: 227

Дан динамический массив.Нужно удалить из него все простые числа и добавить оставшееся в новый массив

12.03.2020, 15:25. Показов 1516. Ответов 2
Метки cpp (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток,не могу понять, где моя ошибка, помогите пожалуйста.

Полный текст задания:
Написать функцию, которая получает указатель на динамический массив и его размер. Функция
должна удалить из массива все простые числа и вернуть указатель на новый динамический
массив.

Мой код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
#include <iostream>
#include <time.h>
using namespace std;
void filling(int* parray, int size);
void print(int* parray, int size);
int* solutionFilling(int* parray, int size);
int solutionSize(int* parray, int size);
bool primeNumber(int number);
 
int main() {
    srand(time(NULL));
    int size; cout << "Enter size: "; cin >> size;
 
    int* parray1 = (int*)malloc(size * sizeof(int));
    filling(parray1, size);
 
    cout << "Array: ";  print(parray1, size);
    cout << "ArrayM: "; print(solutionFilling(parray1,size), solutionSize(parray1, size));
   
    free(parray1);
    return 0;
}
 
void filling(int* parray, int size) {
    for (int i = 0; i < size; i++)
    {
        *(parray + i) = rand() % 21;
    }
}
void print(int* parray, int size) {
    for (int i = 0; i < size; i++)
    {
        cout << *(parray + i) << " ";
    }
    cout << "\n";
}
bool primeNumber(int number) {
    int count = 0;
    for (int i = 1; i <= number; i++) {
        if ((number % i) == 0) {
            count++;
        }
    }
    if (count == 2) {
        return 1;
    }
    else
        return 0;
}
int solutionSize(int* parray, int size) {
    int sizearrayF = 0;
    for (int i = 0; i < size; i++) {
        if (primeNumber(*(parray + i)) == 0) {
            sizearrayF++;
        }
    }
    return sizearrayF;
}
int *solutionFilling(int* parray, int size) {
    int* parrayF = (int*)malloc(solutionSize(parray,size) * sizeof(int));
    int counttemp = 0;
    for (int i = 0; i < size; ++i)
        if (primeNumber(*(parray + i))!=0) {
            *(parray + counttemp) = *(parray + i);
            counttemp++;
        }
    return parrayF;
}
Блок с ошибкой:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
int solutionSize(int* parray, int size) {
    int sizearrayF = 0;
    for (int i = 0; i < size; i++) {
        if (primeNumber(*(parray + i)) == 0) {
            sizearrayF++;
        }
    }
    return sizearrayF;
}
int *solutionFilling(int* parray, int size) {
    int* parrayF = (int*)malloc(solutionSize(parray,size) * sizeof(int));
    int counttemp = 0;
    for (int i = 0; i < size; ++i)
        if (primeNumber(*(parray + i))!=0) {
            *(parray + counttemp) = *(parray + i);
            counttemp++;
        }
    return parrayF;
}
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
12.03.2020, 15:25
Ответы с готовыми решениями:

Найти в массиве простые числа и добавить в новый массив
Помогите, не работает код Пользователь вводит элементы массива, нужно узнать, есть ли простные числа среди них, если есть - добавить в...

Дан массив целых чисел: удалить из него все числа от 3 до 5
1) Дан массив целых чисел (N=10), заполненный случайным образом числами из промежутка .удалить из него все числа от 3 до 5.

Дан массив, состоящий из цифр. Удалить из него все отрицательные числа
Здравствуйте. Помогите пожалуйста Дан массив, состоящий из цифр. Удалить из него все отрицательные числа. Массив, по идее можно...

2
Злостный нарушитель
 Аватар для Verevkin
10641 / 5792 / 1278
Регистрация: 12.03.2015
Сообщений: 26,737
12.03.2020, 16:01
А длину нового массива вернуть не надо ли?

Добавлено через 18 минут
Ахтунг! Не отлаживал! Писал на заборе!
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
/* Написать функцию, которая получает указатель на динамический массив 
   и его размер. Функция должна удалить из массива все простые числа и 
   вернуть указатель на новый динамический массив. */
int* foo(int* src, unsigned &count)
{
  assert(src && count);
  
  int* dest = (int*)calloc(count, sizeof(int));
  int* ptr = dest;
  
  while (count--)
  {
    if (!is_prime(*src)) *ptr++ = *src;
    src++;
  }
  
  count = (unsigned)(ptr - dest); // длина нового массива
  if (count) dest = (int*)realloc(dest, sizeof(int) * count); // обрезка
  else free(dest); // выходной массив пуст
  
  return count ? dest : NULL; // массив
}
0
Злостный нарушитель
 Аватар для Verevkin
10641 / 5792 / 1278
Регистрация: 12.03.2015
Сообщений: 26,737
12.03.2020, 16:12
Проверил, вроде шевелится...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
12.03.2020, 16:12
Помогаю со студенческими работами здесь

Дан массив целых чисел, содержащий 10 элементов. Составить новый массив, записать в него сначала все положительные элементы исходного массива
, потом все отрицательные элементы, потом нули... Да прибудет с вами сила...

Дан одномерный массив. Сжать массив, удалив из него все элементы. модуль которых не превышает, заданно 20 числа а.
Дан одномерный массив. Сжать массив, удалив из него все элементы. модуль которых не превышает, заданно 20 числа а.

Дан одномерный массив, из него нужно удалить каждый 2й элемент.
Помогите решить. Дан одномерный массив, из него нужно удалить каждый 2й элемент.

Дан отсортированный массив, удалить из него числа
Дан отсортированный по возрастанию массив а 1 , а 2 , ...a i ,... а n . Удалить из него числа b 1 , b 2 , ...b i ,... b m

Дан одномерный массив. Удалить все отрицательные элементы из него
Решите плз задачу. Дан одномерный массив. Удалить все отрицательные элементы из него.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизита табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать контроль заполнения реквизита "ПричинаСписания". . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Программное заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru