помогите пожалуйста
дан одномерный массив с размерностью 20. надо узнать если в нем последовательности из одинаковых цифр, сколько их и какие?
Задача на последовательность цифр в массиве
Модераторы: Hawk, Romeo, Absurd, DeeJayC, WinMain
- Romeo
- Сообщения: 3126
- Зарегистрирован: 02 мар 2004, 17:25
- Откуда: Крым, Севастополь
- Контактная информация:
Готов помогать, но не делать за тебя. Что именно не получается? Выкладывай свои попытки и жалуйся.
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
вот наработки
Код: Выделить всё
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. Конец цикла.
Алгоритм можно доработать, если требуется посчитать последовательности (для этого нужно ввести ещё одну переменную). Оставляю это в качестве самостоятельной работы.
- Используем следующие переменные: индекс текущего элемента, длина текущей последовательности.
- В начале индексу текущего элемента присваиваем 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" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.