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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 01.12.2010, 21:14   #1
Dop
Пользователь
 
Регистрация: 15.07.2009
Сообщений: 19
По умолчанию Задача с произвольной строкой символов

Здравствуйте, помогите пожалуйста решить задачу по информатике,на паскале, с 1 справился а вот вторая, никак не додумаюсь:
Дана произвольная строка символов.Определить в какой половине строки находится слово с наименьшим количеством символов. Выдать сообщение ("в 1 половине", или "во второй половине", или "по центру").Предполагается, что самое длинное слово-одно.
Dop вне форума Ответить с цитированием
Старый 01.12.2010, 21:16   #2
Mad_Cat
Made In USSR!
Старожил
 
Аватар для Mad_Cat
 
Регистрация: 01.09.2010
Сообщений: 3,657
По умолчанию

Цитата:
в какой половине строки находится слово с наименьшим количеством символов
как то не вяжется с
Цитата:
Предполагается, что самое длинное слово-одно
"...В жизни я встречал друзей и врагов.В жизни много всего перевидал.Солнце тело мое жгло, ветер волосы трепал,но я смысла жизни так и не узнал..."
(c) Юрий Клинских aka "Хой"
Mad_Cat вне форума Ответить с цитированием
Старый 01.12.2010, 21:28   #3
Dop
Пользователь
 
Регистрация: 15.07.2009
Сообщений: 19
По умолчанию

Цитата:
Сообщение от Mad_Cat Посмотреть сообщение
как то не вяжется с
ну вот такое вот,непонятное условие задачи
Dop вне форума Ответить с цитированием
Старый 01.12.2010, 21:34   #4
Mad_Cat
Made In USSR!
Старожил
 
Аватар для Mad_Cat
 
Регистрация: 01.09.2010
Сообщений: 3,657
По умолчанию

Код:
uses
  crt;
const
  dividers=[' ',',','.',';',':','-','=','+'];{дописать нужные}
var
  s,temp,min:string;
  i,k:integer;
begin
  clrscr;
  writeln('Введите строку...');
  readln(s);
  temp:='';
  min:=s;k=1;
s:=s+' ';
  {пробегаем всю строку посимвольно}
  for i:=1 to length(s) do
  begin
    if not (s[i] in dividers) then
      temp:=temp+s[i];
    if (s[i] in dividers) or (i=length(s)) then
      if temp<>'' then
      begin
        if Length(temp)<Length(min) then
         begin min:=temp; k:=i-length(min);end;
        temp:='';
      end;
  end;
  writeln('Самое короткое: ',min)
if k>length(s) div 2 then writeln('во второй половине') else
if k<length(s) div 2 then writeln('в первой половине') else
writeln('по центру');
end.
"...В жизни я встречал друзей и врагов.В жизни много всего перевидал.Солнце тело мое жгло, ветер волосы трепал,но я смысла жизни так и не узнал..."
(c) Юрий Клинских aka "Хой"
Mad_Cat вне форума Ответить с цитированием
Старый 02.12.2010, 00:20   #5
Dop
Пользователь
 
Регистрация: 15.07.2009
Сообщений: 19
По умолчанию

Цитата:
Сообщение от Mad_Cat Посмотреть сообщение
Код:
const
  dividers=[' ',',','.',';',':','-','=','+'];{дописать нужные}
Мы такого не проходили, начнёт гнать что-нить училка
Dop вне форума Ответить с цитированием
Старый 02.12.2010, 08:52   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Мы такого не проходили, начнёт гнать что-нить училка
Что хисту не хватит почитать по паскалю описание про множества, а потом обьяснить ей?
Тогда вот тебе дробилка строки на слова:
http://www.programmersforum.ru/showt...369#post398369
Далее по циклу пройдись и узнай у какого слова (элемента массива) длина менее всех. А потом если
Код:
(кол-во слов div 2)<номера Этого слова THEN слово в первой половине предложения
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 20.12.2010, 22:40   #7
Dop
Пользователь
 
Регистрация: 15.07.2009
Сообщений: 19
По умолчанию

вот написал но помогите доделать
Код:
program program2;

var stroka:string;
minlengthNEW, minlength, position, slovolength:integer;
i:integer;

begin
readln(stroka);
minlength:=length(stroka);

for i:=1 to length(stroka) do begin

    if (stroka[i] = ' ') or (i = length(stroka)) then begin            
            if minlengthNEW<=minlength then begin
            minlength := minlengthNEW;
            if (i = length(stroka)) then begin
            slovolength := minlengthNEW+1;
            position:=i-minlengthNEW-1;
            end
            else begin
            slovolength := minlengthNEW-1;
            position:=i-minlengthNEW-1;
            end;
            end;
    minlengthNEW:=0
    end
    else begin
        minlengthNEW := minlengthNEW+ 1;
    end

end;

if position+(slovolength/2) > length(stroka)/2 then begin
writeln('Справа');
end
else if position+(slovolength/2) < length(stroka)/2 then begin
writeln('Слева');
end
else begin
writeln('по центру');
end;

writeln(position, slovolength);

end.
Dop вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Задача по Pascal c произвольной последовательностью. Тема: циклы. Slap Помощь студентам 8 04.09.2010 18:39
Работа с массивом символов (строкой) deathz0r Помощь студентам 2 04.06.2010 22:22
Язык С. Редактирование вводимых символов. работа с строкой radion_80 Помощь студентам 1 18.12.2009 01:30
Язык С. Редактирование вводимых символов. работа с строкой (не пойму) radion_80 Помощь студентам 3 04.12.2009 10:38
Задача со строкой Noxil Паскаль, Turbo Pascal, PascalABC.NET 9 22.11.2008 22:54