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

Группу элементов с наибольшим числом подряд идущих отрицательных элементов переписать в «хвост» массива

14.04.2013, 12:58. Просмотров 1131. Ответов 2
Метки нет (Все метки)

В одномерном массиве A=(a1, а2, ..., аn) группу элементов, содержащую наибольшее число подряд идущих отрицательных элементов, переписать в «хвост» массива. Элементы массива вводить с клавиатуры.
Помогите пожалуйста, просто я не знаю как задать цикл для нахождения отрицательных элементов идущих подряд...
0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.04.2013, 12:58
Ответы с готовыми решениями:

Динамический массив: группу элементов с заданными свойствами переписать в «хвост» массива
Надо переделать стандартный массив в динамический. Помогите пожалуйста. /*В...

Все группы элементов, содержащие более 3х подряд идущих отрицательных элементов, заменить на максимальный элемент
В одномерном массиве A=(a1, a2, ..., an) все группы элементов, содержащие более...

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

Подсчитать максимальное количество подряд идущих отрицательных элементов
Дан одномерный массив А, состоящий из N элементов. Подсчитать максимальное...

Найти максимальную сумму подряд идущих N элементов массива
Необходимо вывести максимальную сумму подряд идущих элементов массива. Вводятся...

2
bgm123
40 / 40 / 27
Регистрация: 29.01.2013
Сообщений: 277
14.04.2013, 13:32 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
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
79
80
81
82
83
84
85
86
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
 
#define SIZE 20
#define MAX_VALUE 100
 
 
//инициализация массива
void initArray(int *list, int size)
{
    int i, sgn;
 
    for(i = 0; i < size; i++){
        sgn = rand() % 2;
        list[i] = rand() % MAX_VALUE;
        if(sgn) list[i] *= (-1);
    }
}
 
//поиск самой длинной последовательности отрицательных чисел
int searchSeq(int *list, int size, int *len_seq)
{
    int max_len = 0, start = -1;
    int i, j, len;
 
    for(i = 0; i < size; i++){
        if(list[i] < 0){
            len = 0;
            for(j = i; list[j] < 0; j++)
                len++;
            
            if(len > max_len){
                max_len = len;
                start = i;
            }
 
            i += len - 1;
        }
    }
 
    *len_seq = max_len;
    return start;
}   
 
//копирование отрицательной подпоследовательности в хвости списка
void copySeq(int *list, int size, int len_seq, int start)
{
    int i, j;
 
    for(i = start + len_seq - 1, j = size - 1; i >= start ; i--, j--)
        list[j] = list[i];
}
 
//печать массива
void printArray(int *list, int size)
{
    int i;
 
    for(i = 0; i < size; i++)
        printf("%i ", list[i]);
 
    putchar('\n');
}
 
int main(void)
{
    int list[SIZE];
    int len_seq, start;
 
 
    srand(time(NULL));
    initArray(list, SIZE);     //инициализация массива случайными значениями
    printArray(list, SIZE);   //печать массива
 
    start = searchSeq(list, SIZE, &len_seq);   //поиск подпоследовательности из отрицательных чисел
    if(start < 0) 
        puts("no negative element.\n");
    else 
        copySeq(list, SIZE, len_seq, start);  //копирование найденной подпоследовательности в хвост
 
    printArray(list, SIZE);  //печать массива
 
    return 0;
 
}
1
Azay
0 / 0 / 1
Регистрация: 06.04.2013
Сообщений: 48
14.04.2013, 14:57  [ТС] 3
Спасибо большое, это именно то что нужно!))
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.04.2013, 14:57

Определить, какие k подряд идущих элементов массива имеют максимальную сумму
Дан целочисленный массив, размер которого не превышает 1000000, и число k,...

Удалить последнюю группу отрицательных смежных элементов массива
Помогите, пожалуйста! Мне нужно удалить последнюю группу отрицательных смежных...

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


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

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

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