Задача на последовательность цифр в массиве

Модераторы: Hawk, Romeo, Absurd, DeeJayC, WinMain

Ответить
iesha
Сообщения: 2
Зарегистрирован: 17 ноя 2014, 14:59

помогите пожалуйста

дан одномерный массив с размерностью 20. надо узнать если в нем последовательности из одинаковых цифр, сколько их и какие?
Аватара пользователя
Romeo
Сообщения: 3126
Зарегистрирован: 02 мар 2004, 17:25
Откуда: Крым, Севастополь
Контактная информация:

Готов помогать, но не делать за тебя. Что именно не получается? Выкладывай свои попытки и жалуйся.
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
iesha
Сообщения: 2
Зарегистрирован: 17 ноя 2014, 14:59

вот наработки

Код: Выделить всё

int random (int N)
{return rand() %N;}
int main(int argc, char *argv[]) {
const int N=20;
int arr1[N], i, j;
for (i=0; i<N; i++){
arr1[i]=random(9)+1;
printf ("%d", arr1[i]);

}
for (i=0; j<N-3; i++) { 
if (arr1[i]==arr1[i+1] && arr1[i+1]==arr1[i+2])
printf ("%d\n", arr1[i]);
else printf("Odinakovix cifr net\n");
}

system("pause");

return 0; 
}
Аватара пользователя
Romeo
Сообщения: 3126
Зарегистрирован: 02 мар 2004, 17:25
Откуда: Крым, Севастополь
Контактная информация:

Здесь ты просто ищешь тройки расположенных подряд цифр. Задание несколько иначе выглядит. Нужно найти последовательности произвольной длины. Предлагаю следующий подход:

- Используем следующие переменные: индекс текущего элемента, длина текущей последовательности.
- В начале индексу текущего элемента присваиваем 1, длине текущей последовательности 1.

1. Бежим по массиву (индекс текущего элемента инкрементируется)
2. Если текущий элемент и значение предыдущего равны, то увеличаем длину текущей последовательности на 1.
3. Если текущий элемент и значение предыдущего НЕ равны и длина текущей последовательности больше 1, тогда:
3.1. Значит мы нашли конец реальной последовательности, так что пишем пользователю: Найдена последовательности из символов (указываем значение предыдушего символа) длиной (указываем значение переменной, хранящей текущую длину).
3.2. Сбрасываем значение переменной, хранящей текущую длину последовательности в 1.
4. Конец цикла.

Алгоритм можно доработать, если требуется посчитать последовательности (для этого нужно ввести ещё одну переменную). Оставляю это в качестве самостоятельной работы.
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
Ответить