Форум программистов, компьютерный форум CyberForum.ru

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

Восстановить пароль Регистрация
 
dismay256
0 / 0 / 0
Регистрация: 21.04.2013
Сообщений: 13
15.10.2013, 01:05     Удалить из массива все простые числа #1

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

Добавлено через 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 секунды
есть только сортировка, остального вообще ничего не понял(((
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.10.2013, 01:05     Удалить из массива все простые числа
Посмотрите здесь:

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

Добавлено через 3 минуты
Folko, в реализации поможешь?
Folko
 Аватар для Folko
265 / 253 / 7
Регистрация: 27.09.2013
Сообщений: 877
Записей в блоге: 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;
}

Как то так. Функцию определения простого числа только проверить надо)
dismay256
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;
}
вот что получилось у меня, но неправильно считает говнарь, что не так то???
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.10.2013, 22:35     Удалить из массива все простые числа
Еще ссылки по теме:

C++ Вывести все простые числа из заданного пользователем массива
C++ Удалить из массива все числа, у которых все цифры, встречающиеся в их записи, одинаковы
Задача про простые числа. Выпишите все простые числа, находящиеся в интервале между а и б C++

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

Или воспользуйтесь поиском по форуму:
Folko
 Аватар для Folko
265 / 253 / 7
Регистрация: 27.09.2013
Сообщений: 877
Записей в блоге: 1
15.10.2013, 22:35     Удалить из массива все простые числа #8
dismay256, а почему функцию odd вызываешь так странно? Ей значение надо передать. И еще, тебе же надо было вначале простые числа убрать из массива
Yandex
Объявления
15.10.2013, 22:35     Удалить из массива все простые числа
Ответ Создать тему
Опции темы

Текущее время: 17:14. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru