С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/29: Рейтинг темы: голосов - 29, средняя оценка - 4.83
0 / 0 / 0
Регистрация: 21.04.2013
Сообщений: 13
1

Удалить из массива все простые числа

15.10.2013, 01:05. Показов 6030. Ответов 7
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам

дан массив целых чисел, удалить из массива все простые каждое четное число после удаления возвести в квадрат из каждого нечетного извлечь корень.Для определения четности\нечетности функция польз. простого числа тоже функция

Добавлено через 53 секунды
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
#include "stdafx.h"
#include <iostream>
#include <cmath>
 using namespace std;
void DeleteElement(int* arr, size_t length, size_t pos) 
    {
    for( ; pos < length - 1; ++pos) arr[pos] = arr[pos + 1];
    }
 
bool IsPrime(int num) 
    {
 
    if(2 == num) return true;
    if(!(num%2)) return false;
 
    for(int i = 2; i <= sqrt((double)num); ++i) {
        if(!(num%i)) return false;
    }
 
    return true;
}
 
int main()
{
 
    int *arr;
    size_t length;
 
    cout << "Array size: ";
    cin >> length;
    arr = new int[length];
 
    for(size_t i(0); i < length; ++i) 
    {
        cout << "A[" << i + 1 << "] = ";
        cin >> arr[i];
    }
 
    for(size_t i(0); i < length; ++i) 
    {
        if(IsPrime(arr[i])) 
        {
            DeleteElement(arr, length, i);
            --length;
        }
    }
 
    for(size_t i(0); i < length; ++i)
    {
        cout << arr[i] << ' ';
    }
    system ("pause");
    return 0;
}
Добавлено через 44 секунды
есть только сортировка, остального вообще ничего не понял(((
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.10.2013, 01:05
Ответы с готовыми решениями:

Удалить из массива все простые числа и подсчитать процент удаленных элементов
Подскажите пожалуйста как можно из массива удалить все простые числа и подсчитать процент удаленных...

Удалить простые числа из массива
Добрый вечер) в общем помогите удалить на выходе простые числа из массива. #include &quot;iostream&quot;...

Удалить из массива простые числа используя указатель- С++
Даны целые числа а1,.....,аn, где n-целое положительное число(n&lt;100).Если в последовательности...

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

7
3 / 3 / 0
Регистрация: 02.10.2013
Сообщений: 34
15.10.2013, 01:18 2
Проверка на четность нечетность число%2==0
Для удаления нужно изменить размер массива, т.к. он через new надо выделить меньший по размеру массив переписать в него данные из старого массива которые не надо удалять, старый удалить (удалять delete[])
0
267 / 255 / 27
Регистрация: 27.09.2013
Сообщений: 876
Записей в блоге: 1
15.10.2013, 01:20 3
dismay256, остальные задачи просты:
Вначале делаете 2 функции, они получают число и возвращают значения bool: простое/непростое число и четное/нечетное
1. Проходите по всем элементам массива и удаляете простые числа.
2. Снова проходите по массиву, если число в ячейке четное, возводите его в квадрат, если нечетное, то извлекаете корень.
При этом само собой, определять четность и простоту будете с помощью своих функций
1
3 / 3 / 0
Регистрация: 02.10.2013
Сообщений: 34
15.10.2013, 01:22 4
А забыл, проверку на простое число сделай тупым прогоном всех чисел до половины проверяемого числа
0
0 / 0 / 0
Регистрация: 21.04.2013
Сообщений: 13
15.10.2013, 11:05  [ТС] 5
Folko, помоги в реализации, если не труднно

Добавлено через 3 минуты
Folko, в реализации поможешь?
0
267 / 255 / 27
Регистрация: 27.09.2013
Сообщений: 876
Записей в блоге: 1
15.10.2013, 12:23 6
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

dismay256, хорошо, минут через 5-10 скину решение

Добавлено через 1 час 17 минут
dismay256,
C++ (Qt)
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
#include <math.h>
 
bool isChetn (int x)
{
    return (x%2==0);
}
 
bool isSimple (int x)
{
 
    for (int i=2;i<x;i++)
    {
        if (x % i == 0) return false;
    }
    return true;
}
 
int main(int argc, char *argv[])
{
    QTextStream cout(stdout);
    QTextStream cin(stdin);
    int size;
    cin >> size;
    int a[size],b[size];
    for (int i=0;i<size;i++)
    {
        cout << "number " << i << endl;
        cin >> a[i];
    }
    int t = -1;
    for (int i=0;i<size;i++)
        if (isSimple(a[i]) == false)
        {
            t++;
            b[t] = a[i];
        }
    for (int i=0;i<=t;i++)
        if (isChetn(b[i])) b[i] = b[i]* b[i];
        else b[i] = sqrt(b[i]);
    for (int i=0;i<=t;i++) cout << b[i] << "  ";
    return 0;
}

Как то так. Функцию определения простого числа только проверить надо)
1
0 / 0 / 0
Регистрация: 21.04.2013
Сообщений: 13
15.10.2013, 22:30  [ТС] 7
Folko,
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
#include "stdafx.h"
#include <iostream> 
#include <math.h>
#include <iomanip>
#include <time.h>
using namespace std;
 
 
bool odd(int value)
{
if (value %2==0)
    return false;
else 
    return true;
}
 
 
 
int _tmain(int argc, _TCHAR* argv[])
{
    srand(time(0));
    int arr[10];
    setlocale (0,"");
        for (int i=1;i<10;i++)
        {
            arr[i] = rand() % 100;
        }
            cout<<"Исходный массив:"; 
        for (int i=1;i<10;i++)
        {
            cout<<arr[i]<<" ";
        }
            cout<<"\nИзмененный массив:";
        for (int i=1;i<10;i++)
        {
        if (odd)
            {
                arr[i]=sqrt(arr[i]);
            }
        else
            {
                arr[i]=arr[i]*arr[i];
            }
        for (int i=1;i<10;i++)
        {
            cout<<arr[i]<<" ";
        }
        cout<<"\n";
    
    system ("pause");
    return 0;
}
вот что получилось у меня, но неправильно считает говнарь, что не так то???
0
267 / 255 / 27
Регистрация: 27.09.2013
Сообщений: 876
Записей в блоге: 1
15.10.2013, 22:35 8
dismay256, а почему функцию odd вызываешь так странно? Ей значение надо передать. И еще, тебе же надо было вначале простые числа убрать из массива
0
15.10.2013, 22:35
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.10.2013, 22:35
Помогаю со студенческими работами здесь

Создать односвязный список из последовательности чисел, удалить из него все простые числа
Прошу помощи, не могу понять в чем ошибка, надо создать односвязный список из последовательности...

Удалить все простые числа и найти среднее арифметическое до и после удаления простых чисел
Помогите пожалуйста разобрать ошибки и дописать программу. Ошибки: Функции должны возвращать...

Найти все трехзначные простые числа. Определить функцию позволяющую распознавать простые числа
Найти все трехзначные простые числа. Определить функцию позволяющую распознавать простые числа....

Задача про простые числа. Выпишите все простые числа, находящиеся в интервале между а и б
#include &lt;stdio.h&gt; #include &lt;iostream&gt; #include &lt;conio.h&gt; #include &lt;math.h&gt; using std::cout;...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru