Форум программистов, компьютерный форум, киберфорум
Наши страницы

C для начинающих

Войти
Регистрация
Восстановить пароль
 
Azay
0 / 0 / 0
Регистрация: 06.04.2013
Сообщений: 48
#1

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

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

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

Динамический массив: группу элементов с заданными свойствами переписать в «хвост» массива - C (СИ)
Надо переделать стандартный массив в динамический. Помогите пожалуйста. /*В одномерном массиве A=(a1, а2, ..., аn) группу элементов, ...

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

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

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

Найти максимальную сумму подряд идущих N элементов массива - C (СИ)
Необходимо вывести максимальную сумму подряд идущих элементов массива. Вводятся такие данные: 1) количество элементов массива N, 2)...

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

2
bgm123
40 / 40 / 16
Регистрация: 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 / 0
Регистрация: 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
Привет! Вот еще темы с ответами:

Определить длину самой длинной последовательности подряд идущих элементов массива, равных нулю - C (СИ)
Помогите найти ошибку в коде. При вводе значений элементов массива, ну например (012300120001) - 12 значений, я ожидал что будет выведен...

Вставить перед каждой серией (группой подряд идущих одинаковых элементов) минимальный элемент массива - C (СИ)
Дан массив состоящий из n элементов. Назовем серией группу подряд идущих, одинаковых элементов, а длинной серии-количество этих элементов...

Из одного массива переписать в другой массив подряд первые пять различных четных элементов - C (СИ)
Выбрать алгоритм и программу для решения выбранного варианта задания. Исходный массив может быть введен с клавиатуры или инициализирован...

Найти максимальное число идущих подряд равных элементов последовательности - C (СИ)
Дана последовательность натуральных чисел, завершающаяся числом 0. Определите, какое наибольшее число подряд идущих элементов этой...


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

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

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