Форум программистов, компьютерный форум, киберфорум
Наши страницы
C для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
Markiza
3 / 3 / 0
Регистрация: 05.12.2010
Сообщений: 33
1

Удалить из массива целых чисел все элементы, являющихся простыми числами

06.12.2010, 21:20. Просмотров 989. Ответов 11
Метки нет (Все метки)

Помогите пожалуйста найти ошибку в программе.Условие задачи:Удалить из массива целых чисел все элементы, являющихся простыми числами.
/*program*/
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <stdio.h>
#include <math.h>
#include <iostream.h>
using namespace std;
void main ()
{unsigned int N,j;
int X[10],b; int i;
bool Pr;
const n=10;
printf(" \n Zapolnite massiv chisel \n");
for (i=0;i<n;i++)
{scanf("%d",&X[i]);}
Pr=true;
for (i=0;i<n;i++)
for (j=2;j<=X[i]/2;j++)
{if (X[i]%j==0) delete X[i];
{Pr=false;
break;}
for (i=0;i<n;i++)
printf ("X[%d]=%d \n",i,X[i]);}
return 0;}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.12.2010, 21:20
Ответы с готовыми решениями:

Найти среднее арифметическое элементов, не являющихся простыми числами
Здравствуйте! Нужно сделать задание на языке C. Самому просто не хватает...

Вывести на экран все элементы, индексы которых являются простыми числами
Динамическая память. Одномерный массив. Вывести на экран все элементы индексы...

Составить массив из номеров строк, все элементы которых являются простыми числами
Дана матрица N x M. Составить массив из номеров строк, все элементы которых...

Дан массив целых чисел. Удалить из него:все элементы, кратные 3 или 5
Дан массив целых чисел. Удалить из него:все элементы, кратные 3 или 5.

Сформировать массив B так, чтобы в него вошли элементы массива А, индексы которых являются простыми числами
В массиве А(55) лежат целые числа. Сформировать массив B таким образом, чтобы в...

11
Crudelis
Шаровик затейник
684 / 433 / 78
Регистрация: 06.05.2010
Сообщений: 1,109
06.12.2010, 21:37 2
что такое delete X[i];? Что вы пытаетесь удалить таким способом? delete может удалить либо весь массив, либо строку из массива. Вам нужен временный массив, в который вы будете записывать все не простые числа, т.е. не удовлетворяющие условию if (X[i]%j==0)
1
Markiza
3 / 3 / 0
Регистрация: 05.12.2010
Сообщений: 33
06.12.2010, 21:48  [ТС] 3
А как это записать?
0
lemegeton
2936 / 1365 / 467
Регистрация: 29.11.2010
Сообщений: 2,725
06.12.2010, 22:25 4
А никак. Нет такой вещи, как удаление элемента из массива.
Можно воспользоваться классами, выполняющими работу массива. Например stl::vector.
Можно переписать один массив в другой без удаляемых элементов.
Можно сдвигом изменять содержимое массива и "уменьшать" диапазоны работы с ним.

Но удалять элементы массива не выйдет.
1
Markiza
3 / 3 / 0
Регистрация: 05.12.2010
Сообщений: 33
06.12.2010, 22:52  [ТС] 5
Вы не могли бы помочь мне с решением?
0
Crudelis
Шаровик затейник
684 / 433 / 78
Регистрация: 06.05.2010
Сообщений: 1,109
06.12.2010, 23:44 6
Цитата Сообщение от lemegeton Посмотреть сообщение
А никак. Нет такой вещи, как удаление элемента из массива.
что значит никак, человек должен создать временный массив, записать туда числа, удалить основной массив, создать новый основной массив величиной со временный и в основной переписать элементы временного массива, зачем какие то векторы)))
1
lemegeton
2936 / 1365 / 467
Регистрация: 29.11.2010
Сообщений: 2,725
07.12.2010, 00:00 7
Мне понравилось ваше определение удаления элемента массива. Только как-то однобоко.

Этот вариант, кстати, проходит у меня под вторым номером.
Боюсь, что ТС нужен вариант, который я указал третьим пунктом -- сдвиг, затирание ненужных ("удаляемых") элементов массива следующими по номеру с уменьшением расчетного количества элементов. У него там уже и n подготовленное лежит (надо только const убрать).
1
Crudelis
Шаровик затейник
684 / 433 / 78
Регистрация: 06.05.2010
Сообщений: 1,109
07.12.2010, 00:03 8
lemegeton, я думаю они вряд ли уже изучали сдвиги и тому подобное, массивы это самое начало с++
1
Markiza
3 / 3 / 0
Регистрация: 05.12.2010
Сообщений: 33
08.12.2010, 00:21  [ТС] 9
Вы правы, сдвиги мы еще не проходили,и классы тоже.
Подскажите как в таком случае записать решение ?
0
dihlofos
Бродяга
305 / 259 / 56
Регистрация: 27.08.2010
Сообщений: 553
08.12.2010, 07:10 10
Цитата Сообщение от Crudelis Посмотреть сообщение
я думаю они вряд ли уже изучали сдвиги и тому подобное, массивы это самое начало с++
Ну, я надеюсь циклы изучались ещё перед массивами, поэтому сдвиг вполне подойдёт.
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 <iostream>
#include <cmath>
using namespace std;
 
// ф-ция определения простого числа
bool isPrime (int x)
{
        if(x <= 1)
              return false;
 
        for(int i = 2; i <= sqrt((double)x); ++i)
                if (x % i == 0)
                      return false;
        return true;
}
 
int main()
{
    const int SIZE = 10;
    int arr[SIZE], i, j; 
    int n = SIZE;
 
    // ввод
    for (i = 0; i < n; ++i)
    {
        cout << "Enter [" << i << "] element: ";
        cin >> arr[i];
    }
 
    // удаление
    for (i = 0; i < n; ++i)
    {
        if(isPrime(arr[i]))
        {
            for(j = i + 1; j < n; ++j)
            {
                arr[j-1] = arr[j];
            }
            --n;
            --i;
        }
    }
 
    // вывод
    cout<<"Result: ";
    for (i = 0; i < n; ++i)
    {
        cout << arr[i] << ' ';
    }
        
    return 0;
}
1
Markiza
3 / 3 / 0
Регистрация: 05.12.2010
Сообщений: 33
08.12.2010, 13:12  [ТС] 11
спасибо
А если компилятор не распознает библиотеки функций, значит нужно новую версию скачать??
Где ее можно найти?
0
Cnoob
1 / 1 / 0
Регистрация: 10.01.2015
Сообщений: 46
03.02.2015, 18:36 12
Здравствуйте, пишу ту же программу : Удалить из массива элементы , являющиеся простыми числами. Просьба вот в чем - подскажите что не так в программе? Необходимо все действия выполнять через функции. В главной функции не должно быть никаких вычислений. Только ввод , ну и можно еще вывод массива тоже в главной оставить. В чем ошибка кода?
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
#include <stdio.h>
#include <stdlib.h>
 
DeleteElement(int *array, int n);
 
int main (void)
{
    int *array, n, i;
    
    printf ("Введите длину массива : \n");
    scanf ("%d", &n);
    
    array= (int*)malloc(n * sizeof ( int ));
    if (!array||n<1)
    {
        printf ("Ошибка выделения памяти ! ");
        exit (2);
    }
    printf ("Введите элементы массива : ");
    for (i=0; i<n; i++)
        scanf ("%d", &array[i]);
    
    DeleteElement(array,n);
    
    return 0;
}
 
DeleteElement(int *array, int n)
    {
        int i ,j,count;
        
        for (i=0;i<n;i++)
            for (j=2; j<array[i]; j++)
                {
                    count=0;
                    if (array[i]%j==0)
                        count++;
                    if (count == 0)
                        {   
                            for (i=0; i<n;i++)
                            array[i]=array[i+1];
                            n--;
                            i--;
                        }
                }
    for (i=0; i<n; i++)
        printf ("%d ", array[i]);
    printf ("\n");
    }
0
03.02.2015, 18:36
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.02.2015, 18:36

Заполнение массива простыми числами начиная с 2
Мне нужно заполнить массив простыми числами начиная с 2. Я читал инфу о решете...

Создать список из случайных целых чисел и удалить из него отрицательные элементы
Всем привет! Ребята помогите! Нужна ваша помощь! &quot;Написать программу по...

Вывести на экран все элементы массива, являющимся двухзначными числами
Заполнить одномерный массив случайными числами. Вывести на экран все элементы...


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru