Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.01.2012, 09:32   #1
ZzMaximka
 
Регистрация: 12.01.2012
Сообщений: 4
Печаль Задача на одномерный массив

Всем доброго времени суток!
Помогите с решением задачки, пожалуйста!
Дан целочисленный массив размера N. Преобразовать массив, увеличив его первую серию наибольшей длины на один элемент. Серия - это группа подряд идущих одинаковых элементов, длина серии — количество этих элементов (длина серии может быть равна 1).
ZzMaximka вне форума Ответить с цитированием
Старый 12.01.2012, 21:28   #2
Faridik
Форумчанин
 
Аватар для Faridik
 
Регистрация: 08.08.2008
Сообщений: 117
По умолчанию

Ну если длина серии может быть равна 1,то так выходит что первая серияя это и есть первый элемент?
Faridik вне форума Ответить с цитированием
Старый 13.01.2012, 06:47   #3
Zer0
Форумчанин
 
Аватар для Zer0
 
Регистрация: 13.12.2007
Сообщений: 788
По умолчанию

Faridik, читайте условие внимательнее:
Цитата:
увеличив его первую серию наибольшей длины на один элемент
Если подряд нет одинаковых элементов, то да, первая серия - это первый элемент. В других случаях - нет
благодарность - сюда (не забываем писать от кого)
Zer0 вне форума Ответить с цитированием
Старый 13.01.2012, 08:05   #4
roperd
Пользователь
 
Регистрация: 14.07.2011
Сообщений: 44
По умолчанию

Вот пример программы, задачу вроде бы понял, хотя с такими ещё не сталкивался, не понятно только, как проверить, какая из серий имеет наибольшую длину, но вот есть некая наработка на паскале:
Код:
uses
Crt;
Const
N = 10; {диапазон значений элементов хранящихся в массиве (произвольное число)}
var
a: array [1..N] of byte;
i,j,k,l,m: byte;
begin
ClrScr;
WriteLn;
l := 0;
for I := 1 to N do
ReadLn(a[i]);
for j :=1 to n do
If (a[j] = a[j + 1]) then
{Проверка равенства текущего элемента следующему, есть недостаток, выбрасывается первый элемент}
l := l + 1;
{счётчик подряд идущих одинаковых элементов, т.е. узнаём длину серии}
If l > 0 then
{Проверяем условие существования серии}
begin
for k := 1 to N do
If (a[k] = a[k + 1]) then
{Снова проверяем условие, если предыдущий элемент массива равер следующему, значит увеличиваем, такие элементы на единицу}
a[k] := a[k] + 1;
WriteLn('Длина серии :'#0, l);
for m := 1 to n do
WriteLn('Преобразованные элементы массива :'#0, a[m]);
end
else
If (i = 0) then
{Проверяем условие отсутствия серий}
begin
a[1] := a[1] + 1;
{Если серия отсутствует, то за неё принимается первый элемент, соответственно увеличиваем его на единицу}
WriteLn(a[1]);
end;
ReadKey;
end.
roperd вне форума Ответить с цитированием
Старый 15.01.2012, 08:44   #5
ZzMaximka
 
Регистрация: 12.01.2012
Сообщений: 4
По умолчанию

Всем спасибо за ответы.
ZzMaximka вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
задача одномерный массив iri6k@123 Помощь студентам 2 07.12.2010 16:52
Задача на одномерный массив kot__93 Общие вопросы C/C++ 0 23.11.2010 22:15
Задача на одномерный массив AliVe Помощь студентам 1 19.11.2007 21:35