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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 27.06.2008, 13:51   #1
ViNcHeStEr
Delphi
Форумчанин
 
Регистрация: 12.06.2008
Сообщений: 137
По умолчанию Работа со строками.

Задание: Строка Т состоит из слов, разделенных запятыми. Определить максимальную длину слов, содержащих менее пяти символов.

Вот что я сделал, но не могу понять почему не работает...
Код:
program stroka;

{$APPTYPE CONSOLE}

uses
SysUtils;
Var
text:string;
score,number,i:byte;
sym:char;
BEGIN
Write('Vvedite stroku razdelyaya slova zapyatimi: ');
Readln(text);
for i:=1 to length(text) do begin
if (sym=',') or (sym=' ') then
if score>4 then score:=0;
if score<=4 then
if score>number then
number:=score;
score:=0;
if (sym<>',') and (sym<>' ') then score:=score+1;
end;
Write('Maximalnaya dlina slov sodergaschih menee pyati simvolov ',number);
Readln;
END.

Последний раз редактировалось Stilet; 01.07.2008 в 08:39.
ViNcHeStEr вне форума Ответить с цитированием
Старый 27.06.2008, 14:45   #2
KsandrXXX
 
Регистрация: 29.02.2008
Сообщений: 7
По умолчанию

Код:
program stroka;

{$APPTYPE CONSOLE}

uses
  SysUtils;
  

Var
text:string;
score,i,j,k,sym:integer;
number: array[1..4] of integer;


BEGIN
Write('Vvedite stroku razdelyaya slova zapyatimi: ');
Readln(text);
i:=1;
j:=0;
k:=1;

 while i < length(text)  do
 begin
     if ( text[i] = ',') or  ( text[i] = ' ') then
     begin
     number[k]:=j;
     inc(k);
     j:=0;
     end
         else
             begin
             inc(j);
             end;
    inc(i);
 end;

sym:= number[1];
for I := 2 to length(number) do
begin
    if (sym < number[i]) and(number[i]<5) then
    begin
    sym:=number[i];
    end;
end;
  


Write('Maximalnaya dlina slov sodergaschih menee pyati simvolov ',sym);
Readln;
END.
KsandrXXX вне форума Ответить с цитированием
Старый 28.06.2008, 07:47   #3
ViNcHeStEr
Delphi
Форумчанин
 
Регистрация: 12.06.2008
Сообщений: 137
По умолчанию

Работает, но не совсем правильно...
Если ввести все слова превышающие 4 символа, то выдаёт ни 0 а какое-то число больше 4.
ViNcHeStEr вне форума Ответить с цитированием
Старый 28.06.2008, 08:44   #4
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Не надо в программе собирать все в кучу. Нужно создать законченный массив слов, а затем искать нужный максимум, иначе программа в процессе формирования очередного элемента массива, может выдать неверную информацию.
Кроме того зачем приплели пробелы, про которые в условии ничего нет.
И, наконец, нужно программе подсказать, что делать, если условие не выполняется, чтоб она не выдавала, что ей вздумается.
Код:
uses crt;
var s,s1:string;
    d:array[1..100] of string;
    i,k,max:integer;
begin
clrscr;
write('Stroka:');readln(s);
k:=1;
for i:=1 to length(s) do//формируем массив
   begin
     if s[i]=',' then k:=k+1
     else d[k]:=d[k]+s[i];
    end;
max:=0;  //ищем нужный максимум
for i:=1 to k do
if (length(d[i])>max)and(length(d[i])<5) then
       begin
         max:=length(d[i]);
       end;
if max=0 then writeln('Takih slov net!') //если такого нет
else writeln('Samoe dlinnoe slovo <5 simvolov=',max);
readln
end.
puporev вне форума Ответить с цитированием
Старый 28.06.2008, 09:10   #5
bag
Пользователь
 
Регистрация: 20.06.2008
Сообщений: 95
По умолчанию

И зачем вы все используете промежуточные массивы? Можно все сделать за один проход и без массивов:
Код:
uses crt;
var
  s:string;
  l,lmax,i:integer;
begin
  clrscr;
  write('Stroka:'); readln(s);
  s:=s+',';
  l:=0;
  lmax:=0;
  for i:=1 to length(s) do
  begin
    if (s[i]=',')or(s[i]=' ') then
    begin
      if (l>lmax)and(l<5) then lmax:=l;
      l:=0;
    end
    else
      inc(l);
  end;
  writeln('Max. dlina= ',lmax);
  readkey;
end.
Не забывайте оставлять отзывы (кнопочка в левом нижнем углу сообщения)

Последний раз редактировалось bag; 28.06.2008 в 09:14.
bag вне форума Ответить с цитированием
Старый 28.06.2008, 09:35   #6
bag
Пользователь
 
Регистрация: 20.06.2008
Сообщений: 95
По умолчанию

Вроде работает
Не забывайте оставлять отзывы (кнопочка в левом нижнем углу сообщения)

Последний раз редактировалось bag; 28.06.2008 в 09:41.
bag вне форума Ответить с цитированием
Старый 29.06.2008, 08:14   #7
ViNcHeStEr
Delphi
Форумчанин
 
Регистрация: 12.06.2008
Сообщений: 137
По умолчанию

Всем БОЛЬШОЕ спасибо!
ViNcHeStEr вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа со строками GoAnd Общие вопросы по Java, Java SE, Kotlin 9 22.09.2010 03:36
С, работа со строками Надюха Помощь студентам 2 29.05.2008 13:07
РАБОТА СО СТРОКАМИ kluwa Общие вопросы C/C++ 7 20.12.2007 18:30