Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Serjant0007
2 / 2 / 1
Регистрация: 21.06.2010
Сообщений: 247
#1

Массив - C++

16.11.2010, 17:41. Просмотров 773. Ответов 11
Метки нет (Все метки)

1.(одномерный) В заданном массиве найти самую маленькую серию подряд стоящих нечетных элементов.
2. (многомерный) Удалить из массива целых положительных элементов совершенные числа. Создать функции определения совершенного числа и удаления элементов массива.
Будьте добры помогите, сегодня тока начали изучать но я что то не понял
http://www.cyberforum.ru/cpp-beginners/thread748162.html
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.11.2010, 17:41
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Массив (C++):

Массив: Как скопировать двумерный массив в другой массив?
Как скопировать двумерный массив в другой массив?

Дан массив целых чисел,произвести для него следующие операции: для каждого из чисел ,входящего в массив,указать,сколько раз оно входит в массив...
помогите!!!((( дан массив целых чисел,произвести для него следующие операции:...

Файл: Загрузка данных из файла: первый столбец записывался в 1й массив, второй столбец - во 2й массив, а 3й столбец - в 3й массив.
Есть текстовый файл, в нем 3 столбца чисел (число строк заранее неизвестно)....

Есть массив одинаковых элементов, сделать функцию делающую массив различных
Дан одномерный массив, среди элементов которого есть совпадающие. Разработать...

Сжать массив, выбросив из него отрицательные элементы - массив становится пустым
Задачка такая: Разработать программу, обеспечивающую ввод с клавиатуры целых...

11
go
Эксперт С++
3636 / 1368 / 243
Регистрация: 16.04.2009
Сообщений: 4,527
16.11.2010, 17:48 #2
Цитата Сообщение от Serjant0007 Посмотреть сообщение
В заданном массиве найти самую маленькую серию подряд стоящих нечетных элементов.
а что надо вывести в итоге?
1
Serjant0007
2 / 2 / 1
Регистрация: 21.06.2010
Сообщений: 247
16.11.2010, 21:45  [ТС] #3
Цитата Сообщение от go Посмотреть сообщение
а что надо вывести в итоге?
как я понял например: 1 2 3 4 5 6 -1 2 3 -2 -5 -6 -8 и вот самая маленькая серия будет число -1
0
accept
4833 / 3254 / 454
Регистрация: 10.12.2008
Сообщений: 10,569
16.11.2010, 22:29 #4
1, 3, 5, -1, 3, -5

это всё серии нечётных элементов

а если бы там было 1, 3 3 3, 5 67 - три серии нечётных элементов, какая из них самая маленькая ?
1
Serjant0007
2 / 2 / 1
Регистрация: 21.06.2010
Сообщений: 247
16.11.2010, 22:31  [ТС] #5
думаю что первая самая маленькая
0
accept
4833 / 3254 / 454
Регистрация: 10.12.2008
Сообщений: 10,569
16.11.2010, 22:48 #6
а из этих 1, 3, 5, -1, 3, -5 ?
1
Serjant0007
2 / 2 / 1
Регистрация: 21.06.2010
Сообщений: 247
16.11.2010, 22:54  [ТС] #7
хм.....может быть все? Или -1
0
accept
4833 / 3254 / 454
Регистрация: 10.12.2008
Сообщений: 10,569
16.11.2010, 23:01 #8
почему -1
у тебя должна быть одна стратегия для всех видов серий

а для таких 1 1 1, 3 ?

и все быть тоже не могут
1
Serjant0007
2 / 2 / 1
Регистрация: 21.06.2010
Сообщений: 247
16.11.2010, 23:06  [ТС] #9
эти задачи нас когда нить добьют, мы всю пару сидели решали их так ничего путного не сделали.
0
accept
4833 / 3254 / 454
Регистрация: 10.12.2008
Сообщений: 10,569
17.11.2010, 05:11 #10
перед тем как писать код, надо понять, что нужно написать
1
Serjant0007
2 / 2 / 1
Регистрация: 21.06.2010
Сообщений: 247
17.11.2010, 08:10  [ТС] #11
ды я знаю это))) Ну ладно пускай пару ставит. Спасибо большое за то что хотели помочь))))
0
accept
4833 / 3254 / 454
Регистрация: 10.12.2008
Сообщений: 10,569
18.11.2010, 03:33 #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
#include <stdio.h>
 
/* находит индекс и длину кратчайшей серии нечётных чисел */
int main(void)
{
    int n[10] = { 1, 3, 1, 3, 2, 3, 7, 8, -1, 9 };
    int i, count;
    int minseqlen, minseqind;
    
    minseqlen = sizeof n / sizeof n[0];
    minseqind = -1;
    
    count = 0;
    for (i = 0; i < 10; i++)
        if (n[i] % 2 != 0) {
            count++;
            if (i + 1 == 10 && count < minseqlen) {
                minseqlen = count;
                minseqind = i - count + 1;
            }
        } else if (count > 0 && count < minseqlen) {
            minseqlen = count;
            minseqind = i - count;
            count = 0;
        }
 
    printf("len = %d, ind = %d" "\n", minseqlen, minseqind);
    
    return 0;    
}
Код
[guest@localhost tests]$ ./t
len = 2, ind = 5
[guest@localhost tests]$
Добавлено через 13 часов 13 минут
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
69
70
71
72
73
74
75
76
77
78
#include <stdio.h>
 
size_t condremove_array(int arr[], size_t nobj, int (*check)(int));
int isposit(int n), isnegat(int n), iseven(int n), isodd(int n);
 
int main(void)
{
    int n[10] = { 1, 3, 1, 3, -8, 3, 7, 8, -1, 9 };
    int i;
    int newsize;
 
#if 1
    printf("remove all positive:\n");
    newsize = 10 - condremove_array(n, 10, &isposit);
#endif
 
#if 0
    printf("remove all negative:\n");
    newsize = 10 - condremove_array(n, 10, &isnegat);
#endif
 
#if 0
    printf("remove all even:\n");
    newsize = 10 - condremove_array(n, 10, &iseven);
#endif
    
#if 0
    printf("remove all odd:\n");
    newsize = 10 - condremove_array(n, 10, &isodd);
#endif
    
    for (i = 0; i < newsize; i++)
        printf("%d%s", n[i], (i + 1 < newsize ? " " : "\n"));
    printf("newsize: %d" "\n", newsize);
    
    return 0;
}
 
/* удалить из массива элементы по условию */
size_t condremove_array(int arr[], size_t nobj, int (*check)(int))
{
    size_t i, j, count;
    
    for (i = 0; i < nobj - 1; i++)
        for (j = i + 1; j < nobj; j++)
            if (check(arr[i]) && !check(arr[j])) {
                int tmp = arr[i];
                arr[i] = arr[j];
                arr[j] = tmp;
            }
    
    count = 0;
    for (i = 0; i < nobj; i++)
        if (check(arr[i]))
            count++;
    
    return count;
}
 
int isposit(int n)
{
    return n > 0;    
}
 
int isnegat(int n)
{
    return n < 0;
}
 
int iseven(int n)
{
    return n % 2 == 0;
}
 
int isodd(int n)
{
    return n % 2 != 0;
}
Код
[guest@localhost tests]$ ./t
remove all positive:
-8 -1
newsize: 2
[guest@localhost tests]$
1
18.11.2010, 03:33
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.11.2010, 03:33
Привет! Вот еще темы с решениями:

Массив: Переместить в массив Y все числа, дробная часть которых больше 5.
Помогите решить, вообще не понимаю как в С++ с дробной частью работать. ...

Массив: Все элементы массива, кратные трем, записать в одномерный массив.
Дан двумерный массив размером n x n? заполненный целыми числами. Все его...

Массив: преобразорвать двумерный массив в одномерный и отсортировать его методом пузырька
всем привет. народ помогите с прогой, конкретно с функцией sort (65 строка),...

Массив: сформировать массив C[12] так, чтобы элементы располагались следующим образом: A(1) B(1) A(2) B(2)
из массивов A и B сформировать массив C так, чтобы элементы массива...


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

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

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