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

Сжать массив, удалив из него все элементы, кратные заданному числу k.

14.09.2013, 16:34. Просмотров 825. Ответов 2
Метки нет (Все метки)

Дан массив A[n]. Сжать массив, удалив из него все элементы, кратные заданному числу k. Освободившиеся в конце массива элементы заполнить нулями. Напишите программу желательно на Си. Заранее благодарен
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.09.2013, 16:34
Ответы с готовыми решениями:

Сжать массив, удалив из него все элементы, величина которых находится в интервале
Сжать массив, удалив из него все элементы, величина которых находится в интервале . Место, которое...

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

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

Сжать массив, удалив из него элементы, величина которых находится в заданном интервале
В одномерном массиве, состоящем из n вещественных элементов, вычислить: Сжать массив, удалив из...

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

2
Catstail
Модератор
23879 / 11927 / 2104
Регистрация: 12.02.2012
Сообщений: 19,395
14.09.2013, 21:56 2
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

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
#include <stdio.h>
 
void Press(int *arr, int n, int k)
{
    int i,i_from, i_to;
 
    i_from=0;
    i_to=0;
    
    while(1)
    {
 
        while(1) 
        {
          if ((arr[i_from] % k) != 0) break;
          i_from++;
        }
 
        if (i_from >= n) break;
        
        arr[i_to]=arr[i_from];
        i_from++;
        i_to++;
    }
 
    for (i=i_to; i < n; i++) arr[i]=0;
 
}
 
int main(int argc, char* argv[])
{
    int Arr[]={1,2,3,4,5,6,7,8,1,2,3,4,5,6,7,8};
    int i,n,m;
 
    for (i=0; i<16; i++) printf("%d ",Arr[i]);
    printf("\n");
 
    n=16;
    m=4;
    Press(Arr,n,m);
 
    for (i=0; i<16; i++) printf("%d ",Arr[i]);
    printf("\n");
 
    return 0;
}
1
easybudda
Модератор
Эксперт CЭксперт С++
10152 / 6058 / 1523
Регистрация: 25.07.2009
Сообщений: 11,481
16.09.2013, 18:51 3
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

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
#include <stdio.h>
#include <string.h>
 
#define SIZE 10
#define MULTIPLER 3
 
void dump(const int * arr, size_t size) {
    while ( size-- )
        printf("%d%c", *arr++, ( size ) ? ' ' : '\n');
}
 
int * remove_multipled(int * arr, size_t size, int multipler) {
    size_t left = size;
    int * ptr = arr;
    
    while ( left-- ) {
        if ( *ptr % multipler )
            ++ptr;
        else
            memmove(ptr, ptr + 1, sizeof(int) * left);
    }
    
    memset(ptr, 0, sizeof(int) * ( size - ( ptr - arr ) ));
    
    return arr;
}
    
 
int main(void) {
    int arr1[SIZE] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
    int arr2[SIZE] = { 3, 2, 1, 6, 4, 5, 10, 7, 8, 9 };
    int arr3[SIZE] = { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 };
    int arr4[SIZE] = { 3, 3, 3, 3, 3, 3, 3, 3, 3, 3 };
    
    printf("ARRAY #1 Before:\n");
    dump(arr1, SIZE);
    remove_multipled(arr1, SIZE, MULTIPLER);
    printf("After:\n");
    dump(arr1, SIZE);
    printf("\n");
    
    printf("ARRAY #2 Before:\n");
    dump(arr2, SIZE);
    remove_multipled(arr2, SIZE, MULTIPLER);
    printf("After:\n");
    dump(arr2, SIZE);
    printf("\n");
    
    printf("ARRAY #3 Before:\n");
    dump(arr3, SIZE);
    remove_multipled(arr3, SIZE, MULTIPLER);
    printf("After:\n");
    dump(arr3, SIZE);
    printf("\n");
    
    printf("ARRAY #4 Before:\n");
    dump(arr4, SIZE);
    remove_multipled(arr4, SIZE, MULTIPLER);
    printf("After:\n");
    dump(arr4, SIZE);
    printf("\n");
    
    return 0;
}
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.09.2013, 18:51

Написать функцию, сжимающую массив, удалив из него элементы в заданном интервале
Такой вот код: #include&lt;stdio.h&gt; #include&lt;math.h&gt; #include&lt;locale.h&gt; #define N 10 #define...

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

Преобразовать массив, удалив все элементы, целая часть которых в интервале
Всем привет! Уважаемые помогите пожалуйста! :wall: Нужно преобразовать массив, удалив все...


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

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

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