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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 18.06.2012, 23:40   #1
VladGorin
 
Регистрация: 11.05.2012
Сообщений: 5
Восклицание Дана строка их нулей и единиц.Вывести самую длинную группу. Delphi

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


Код:
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;

type
TForm1 = class(TForm)
Button1: TButton;
Edit1: TEdit;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
  Form1: TForm1;
  s,MAX,str:string; 
  m:byte; // длина текущей последовательности

implementation

{$R *.dfm}


procedure TForm1.Button1Click(Sender: TObject);
var
  n, mas, i, m: integer;
begin
  str := s[1]; //определяем первый символ - он же начало последовательности;
  MAX := s[1]; //собственно, символы последовательности
  mas := length(s); // предположим, что последовательность ОДНА, то есть все символы одинаковые;
  m := 1;
  for i := 1 to length(s) - 1 do
  begin
    if s[i] = str then
      inc(m) //если символ тот же, что и остальные, увеличиваем длину цепочки
    else
    begin
      if m > mas then
        mas := m; //если длина цепочки больше, то заменяем значение
      MAX := s[i - 1]; //не забываем указать символ этой последовательности
      str := s[i]; //определяем символы новой последовательности
    end;
  end;
  for i := 1 to mas do
    ShowMessage(Max)
  //выводим самую большую цепочку
end;

end.


________
Код нужно оформлять по правилам:
тегом [CODE]..[/СODE] (это кнопочка с решёточкой #)
Не забывайте об этом!
Модератор.

Последний раз редактировалось Serge_Bliznykov; 19.06.2012 в 01:47.
VladGorin вне форума Ответить с цитированием
Старый 19.06.2012, 01:51   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

у Вас ошибок много... (например, изначально надо считать, что длина максимальной последовательности равна 1 (единице):
mas := 1;

цикл перебора for надо начинать не с 1-го символа (вы же его уже учли), а со 2-го... крутить нужно до length(s) ну и т.д.
ну и дальше ещё куча всего..


вот, может такой код Вам подойдёт:
Код:
{
Дан массив из N целых чисел. Его значения- только нули и единицы. Найти
номер элемента, с которого начинается самая длинная последовательность
одинаковых чисел.
}

var
  i,k:integer;
  m,j:integer;
    s:string;
begin
s:='00011101101111';
{readln(s);}
Writeln(s);
  k:=1;m:=1;j:=1;
  for i := 2 to Length(s) do begin
    if s[i]=s[i-1] then  inc(k);
    if (s[i]<>s[i-1]) or (i=length(s)) then
          begin
            if k>=m then
              begin
                m:=k;
                j:=i-k;
              end;
            k:=1;
            end;
  end;

  writeln('pos=',j:4);
  readln;
end.
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с файлами .Найти самую длинную и самую короткую строки. britannia C# (си шарп) 1 03.06.2011 13:45
Дана последовательность символов (строка). Группу символов, разделенную с одной или обеих сторон пробелам viper1941 Паскаль, Turbo Pascal, PascalABC.NET 1 14.04.2011 08:46
Обнулить самую длинную последовательность возрастающих чисел Zevsnet Паскаль, Turbo Pascal, PascalABC.NET 0 30.09.2010 10:20
Найти самое длинное слово и самую длинную фразу Arshavin10 Паскаль, Turbo Pascal, PascalABC.NET 1 02.06.2009 15:48
Найти самую длинную подпоследовательность состоящую только из нулей, С++ StudentPolitech Помощь студентам 7 28.11.2008 09:16