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

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

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 30.05.2011, 10:06   #1
prelest'
Пользователь
 
Регистрация: 23.05.2011
Сообщений: 34
По умолчанию одномерный масив(серии)

задача: Дано целое число L (>0) и целочисленный массив размера N. Заменить каждую серию массива, длина которой больше L, на один элемент с нулевым значением (Назовем серией группу подряд идущих одинаковых элементов, а длиной серии количество этих элементов (длина серии может быть равна 1)).
Код:
Program Pr_3_Mas;
Var a:array [1..100] of Integer;
i,L,n,ser,g:integer;
Begin
 WRITELN ('Ввод размера массива');
  READLN (n);
 WRITELN ('Ввод числа для определения');
  READLN (L);
RANDOMIZE;
 for i:=1 to n do
  BEGIN
  a[i]:=1+Random(10);
  WRITE (a[i],' ');
  END;
  ser:=1;
 For i:=1 to n do
  BEGIN
   if a[i]=a[i+1] then
     ser:=ser+1
    ELSE
    ser:=1;
   If (ser > L)then
    BEGIN
     for  g:=i+1 downto (i+1)-(L-1) do
      a[g]:=0;
           n:=n-1;
     For g:=1 to n do
      If a[g]=0 then
       a[g]:=a[g+1];
    END;
  END;
  writeln;
  For i:=1 to n do
  WRITE (A[I],' ');
End.
помогите пожалуйста правильно ее сделать...не работает(

Последний раз редактировалось Stilet; 30.05.2011 в 10:31.
prelest' вне форума Ответить с цитированием
Старый 30.05.2011, 11:06   #2
prelest'
Пользователь
 
Регистрация: 23.05.2011
Сообщений: 34
По умолчанию

уважаемые программисты посмотрите пожалуйста, эта задача в отчете последняя
prelest' вне форума Ответить с цитированием
Старый 30.05.2011, 22:38   #3
prelest'
Пользователь
 
Регистрация: 23.05.2011
Сообщений: 34
По умолчанию

ну чего вы?помогите
prelest' вне форума Ответить с цитированием
Старый 31.05.2011, 06:11   #4
prelest'
Пользователь
 
Регистрация: 23.05.2011
Сообщений: 34
По умолчанию

SOS!!Help me
prelest' вне форума Ответить с цитированием
Старый 31.05.2011, 09:08   #5
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Код:
 If (ser > L)then
и далее (не смотрел дальше) должно быть в else (который выше, в цикле for), перед ser:=1;, а не за ним.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.

Последний раз редактировалось Alex11223; 31.05.2011 в 09:13.
Alex11223 вне форума Ответить с цитированием
Старый 31.05.2011, 20:44   #6
Абай
Пользователь
 
Регистрация: 31.05.2011
Сообщений: 19
По умолчанию

Привет всем, prelest' у меня такая же проблема с этой задачей, если вы решили отпишетесь пожалуйста.
Абай вне форума Ответить с цитированием
Старый 01.06.2011, 10:00   #7
prelest'
Пользователь
 
Регистрация: 23.05.2011
Сообщений: 34
По умолчанию

Код:
var a : array[1..100] of integer;
i,l,n,ser,g,k,nach,kon:integer;
BEGIN
writeln('vvod razmera massiva')     ;
readln(n);
randomize;
for i:=1 to n do
begin
a[i]:=1+random(10);
write (a[i],' ');
end;
writeln;
writeln('vvod chisla L')     ;
readln(L);
ser:=1; k:=0;
for i:=1 to n-1 do
 begin
 if a[i]=a[i+1] then  ser:=ser+1 else ser:=1;
 if ser>L then
     begin
     for g:=i downto i-l+1 do a[g]:=0;
     for g:=i+1 to n-1 do  a[g]:=a[g+1]; 
     a[n]:=0; k:=1+k;
     end;
   end;
  writeln; 
  for i:=1 to n-k do write(a[i],' ');
  writeln;
END.
вот правельное решение
prelest' вне форума Ответить с цитированием
Старый 01.06.2011, 10:42   #8
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
вот правельное решение
правильное, оно, конечно, правильное. но с косячками...
концевая последовательность полностью отбрасывается, если есть серии нужной длины ранее...

попробуйте задать такой массив:
2 2 3 4 4
L = 1
у Вас будет результат:
0 3

концевой нолик потерян...

p.s. код для задания подобного массива
Код:
{первый и второй элементы сделаем одинаковые}
a[1] := a[2];
{последний и предпоследний тоже одинаковые}
a[n]:=a[n-1];

ну и ещё. попробуйте задать последовательность из одной циферки (т.е. весь массив будет состоять из одной последовательности длиной N), например:
5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5
что будет в результате работы программы?...

Последний раз редактировалось Serge_Bliznykov; 01.06.2011 в 10:48.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 01.06.2011, 18:52   #9
Абай
Пользователь
 
Регистрация: 31.05.2011
Сообщений: 19
По умолчанию

СПАСИБО БОЛЬШОЕ!!!!!
Абай вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
одномерный масив vitik Паскаль, Turbo Pascal, PascalABC.NET 4 10.01.2011 13:28
Задача(одномерный масив) Finn4ik Помощь студентам 2 20.12.2010 22:45
строки(одномерный масив) sanya94 Общие вопросы C/C++ 2 13.12.2010 22:07
Одномерный масив . Geksogen Паскаль, Turbo Pascal, PascalABC.NET 7 12.09.2010 22:54
Одномерный масив never smile Общие вопросы C/C++ 3 16.03.2010 21:28