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

Преобразовать массив, увеличив первую серию наибольшей длины на один элемент

26.06.2016, 14:01. Просмотров 296. Ответов 4
Метки нет (Все метки)

Дан массив, состоящий из n элементов. Назовем серией группу подряд идущих одинаковых элементов, а длиной серии — количество этих элементов (длина серии может быть равна 1). Преобразовать массив, увеличив первую серию наибольшей длины на один элемент.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.06.2016, 14:01
Ответы с готовыми решениями:

Преобразовать массив, увеличив его первую серию наибольшей длины на один элемент
Привет ребят! Есть рабочая программа на паскале: // Дан целочисленный массив...

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

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

Преобразовать одномерный массив, увеличив каждую его серию на 1 элемент
Подскажите,пожалуйста, как написать эту программу. Дан целочисленный массив...

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

4
Dimon_KV
16 / 12 / 12
Регистрация: 11.06.2015
Сообщений: 49
26.06.2016, 14:59 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
#include <stdio.h>
#define N 15
 
int main() {
    int oldArr[N] = {3,3,3,5,5,4,4,3,5,8,2,2,2,1,0};
    int newArr[N + 1];
    int i, len = 1, maxLen = 1, pos = N - 1, n = N - 1;
    /*ищем длину и расположение наибольшей серии*/
    while (n > 0) {
        if (oldArr[n] == oldArr[n - 1]) {
            len++;
            if (len >= maxLen) {
                maxLen = len;
                pos = n - 1;
            }
        }
        else len = 1;
        n--;
    }
    /*заполняем новый массив и выводим его на экран*/
    for (i = 0, n = 0; i < N; i++, n++) {
        newArr[n] = oldArr[i];
        if (i == pos) {
            newArr[++n] = oldArr[pos];
        }
    }
    for (i = 0; i < N + 1; i++)
        printf("%d ", newArr[i]);
    return 0;
}
В случае чего в вариант с динамическими массивами легко можно переделать
1
Mud
1 / 1 / 0
Регистрация: 24.06.2016
Сообщений: 143
26.06.2016, 18:29  [ТС] 3
Dimon_KV, а почему серию 2 2 2 он не увеличил на 1 ?
0
Dimon_KV
16 / 12 / 12
Регистрация: 11.06.2015
Сообщений: 49
26.06.2016, 20:05 4
Так в вашем условии сказано же - первая серия наибольшей длины.

Кстати, после 19-й строки надо вставить:
C
1
if (maxLen == 1) pos = 0;
Это на случай, если нет одинаковых элементов, идущих подряд
0
Mud
1 / 1 / 0
Регистрация: 24.06.2016
Сообщений: 143
27.06.2016, 00:16  [ТС] 5
Dimon_KV, Спасибо большое
0
27.06.2016, 00:16
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.06.2016, 00:16

Заменить каждую серию массива, длина которой меньше L, на один элемент с нулевым значением
Здравствуйте! Помогите в решении следующей задачи, пожаалуйста Дано целое...

В заданном массиве найти первую серию отрицательных элементов
В заданном массиве найти первую серию отрицательных элементов и заменить...

Найдите серию положительных элементов заданной длины K
Дан массив A(M). Найдите серию положительных элементов заданной длины K, (серий...


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

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

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