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

Найти количество участков постоянства последовательности

23.10.2011, 23:08. Просмотров 1760. Ответов 7
Метки нет (Все метки)

Всем доброго времени суток.
Помогите, пожалуйста решить одну задачку на C.
В общем сама задача - Найти количество участков постоянства последовательности...
т.е.
например нам дан ряд чисел 3,3,5,1,1,1,5,2,2,2 , тут 3 участка постоянства последовательности , "3,3";"1,1,1";"2,2,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
#include <cstdlib>
#include <iostream>
 
using namespace std;
 
int main()
{   int i,n,k,p=0,j;
    printf("Enter n ");
    scanf("%d",&n);
    int arr[n];
    for(i = 0;i<n;i++)
         
    {
          printf("Enter element ");
          scanf("%d",&arr[i]);
          if (arr[i] == arr[i-1] && arr[i] != arr[i+1])
          p=p+1;
          
              
    }
    printf("Result - %d\n",p);
    
    system("PAUSE");
    return EXIT_SUCCESS;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.10.2011, 23:08
Ответы с готовыми решениями:

Найти количество участков постоянства
В программу вводится произвольные числа, их количество не имеет значения....

Найти количество промежутков постоянства среди чисел, введенных с клавиатуры
Друзья,совсем с недавних пор изучаю Си, и хотел попросить помощи в решении...

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

Дан массив размера N. Найти количество участков, на которых его элементы монотонно убывают.
Вот что делаю я,но я не знаю что дальше делать,помогите #define N 7...

Сумма повторяющихся участков последовательности
Нужно найти максимальную сумму повторяющихся участков последовательности. ЯЗЫК...

7
alex_x_x
бжни
2455 / 1661 / 134
Регистрация: 14.05.2009
Сообщений: 7,162
23.10.2011, 23:13 2
Цитата Сообщение от shtefeek Посмотреть сообщение
arr[i] == arr[i-1]
когда i=0, то вы читаете -1 элемент
Цитата Сообщение от shtefeek Посмотреть сообщение
arr[i] != arr[i+1]
и одновременно с тем читаете элемент которого еще нет
1
kolorotur
Эксперт .NET
10483 / 8670 / 2157
Регистрация: 17.09.2011
Сообщений: 14,887
Завершенные тесты: 1
23.10.2011, 23:16 3
Ошибка вот в этой строчке:
C
1
if (arr[i] == arr[i-1] && arr[i] != arr[i+1])
1. У вас будет выход за пределы массива
2. Количество последовательностей не увеличится, если одна из них расположена в конце массива.
1
shtefeek
5 / 5 / 0
Регистрация: 30.10.2010
Сообщений: 22
23.10.2011, 23:17  [ТС] 4
а как же тогда быть? извините за тупые вопросы, только недавно начал изучать Си
0
kolorotur
Эксперт .NET
10483 / 8670 / 2157
Регистрация: 17.09.2011
Сообщений: 14,887
Завершенные тесты: 1
23.10.2011, 23:27 5
Можно так:
C
1
2
3
4
5
for (int i = 1; i < n; i++)
    if (arr[i] == arr[i - 1]) {
        ++p;
        while (++i < n && arr[i] == arr[i - 1]);
    }
1
alex_x_x
бжни
2455 / 1661 / 134
Регистрация: 14.05.2009
Сообщений: 7,162
23.10.2011, 23:29 6
kolorotur опередил
0
shtefeek
5 / 5 / 0
Регистрация: 30.10.2010
Сообщений: 22
23.10.2011, 23:49  [ТС] 7
Спасибо, большое

Добавлено через 13 минут
C
1
while (++i < n && arr[i] == arr[i - 1]);
не могли бы вы пояснить значение этой строки?
0
alex_x_x
бжни
2455 / 1661 / 134
Регистрация: 14.05.2009
Сообщений: 7,162
23.10.2011, 23:59 8
Цитата Сообщение от shtefeek Посмотреть сообщение
++i < n
проверяем, что следующий элемент < n

Цитата Сообщение от shtefeek Посмотреть сообщение
arr[i] == arr[i - 1]
сравниваем элемент с индексом нового значения i с индексом предыдущего
продолжаем пока не натыкаемся на элемент != предыдущему

короче пропускаем все повторяющиеся элементы
1
23.10.2011, 23:59
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.10.2011, 23:59

Найти количество 0 в последовательности и произведение последовательности
Даны натуральные числа A1,A2…. Признак конца последовательности 333. Найти...

Найти количество четных чисел в первой последовательности и количество нечетных во второй
Даны две последовательности целых чисел: а1, а2…an, и b1, b2, … bn. Найти...

Определить количество участков, на которых элементы массива монотонно убывают
Дан массив размера N. Определить количество участков, на которых его элементы...


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

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

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