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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 17.01.2013, 18:13   #1
FDCastro
Пользователь
 
Регистрация: 17.01.2013
Сообщений: 25
По умолчанию Работа с рядками - Turbo Pascal!!))

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

Вот сдесь считает слова
Код:
uses crt;
var s: string;
    i,k: byte;
begin
write('s='); readln(s);
for i:=1 to length(s)-1 do
    if (s[i]=' ') and (s[i+1]<>' ') then inc(k);
writeln('Kolichestvo slov ',k+1);
readln;
end.
Но как дописать код, чтобы не выводило на экран к-во слов, а проверяло на непарность и пикало?)))
Спасибо

Последний раз редактировалось FDCastro; 18.01.2013 в 14:15.
FDCastro вне форума Ответить с цитированием
Старый 17.01.2013, 21:23   #2
Wizard#2277
Пользователь
 
Регистрация: 08.01.2013
Сообщений: 24
По умолчанию

Вместо вывода слов надо прописать проверку типа if k/2 <> 0 then beep();...

Последний раз редактировалось Wizard#2277; 17.01.2013 в 21:25.
Wizard#2277 вне форума Ответить с цитированием
Старый 17.01.2013, 21:39   #3
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Цитата:
if k/2 <> 0
Наверно лучше будет:
Код:
if k mod 2=1 ...
и почему
Цитата:
Мужики, работа с рядками
? Я знаю, что на данном форуме имеются как минимум три программиста-девушки, которые могут утереть нос многим мужикам . Поэтому это разделение по половому признаку надо как-то прекращать...
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика

Последний раз редактировалось Utkin; 17.01.2013 в 21:43.
Utkin вне форума Ответить с цитированием
Старый 17.01.2013, 21:48   #4
Izobara
Форумчанин
 
Аватар для Izobara
 
Регистрация: 26.12.2012
Сообщений: 227
По умолчанию

Цитата:
Сообщение от Utkin Посмотреть сообщение
Наверно лучше будет:
Код:
if k mod 2=1 ...
При непарном количестве слов пробелов будет n-1, то есть парное.

Код:
uses wincrt;
var
 ch:char;
 i:integer;
  begin
   While not eoln do
    begin
	 read(ch);
	 if ch=' ' then inc(i);
	end;
           Writeln(i+1);
	if i mod 2 = 0 then sound(880);
  end.
"I believe I can fly" - C++, "What do you want from me" - Delphi, "Yesterday" - Pascal, "Let it be" - C#... Программисты-музыканты-полиглоты поймут

Последний раз редактировалось Izobara; 17.01.2013 в 21:57.
Izobara вне форума Ответить с цитированием
Старый 18.01.2013, 14:03   #5
FDCastro
Пользователь
 
Регистрация: 17.01.2013
Сообщений: 25
По умолчанию

Цитата:
Сообщение от Izobara Посмотреть сообщение
При непарном количестве слов пробелов будет n-1, то есть парное.

Код:
uses wincrt;
var
 ch:char;
 i:integer;
  begin
   While not eoln do
    begin
	 read(ch);
	 if ch=' ' then inc(i);
	end;
           Writeln(i+1);
	if i mod 2 = 0 then sound(880);
  end.
Странно, но звуковой сигнал не подается... Может из-за того, что я меняю wincrt на crt (потому что мой ТП wincrt что-то не понимает) Пишет кол-во слов, но звука нет((

Последний раз редактировалось FDCastro; 18.01.2013 в 15:03.
FDCastro вне форума Ответить с цитированием
Старый 18.01.2013, 17:40   #6
Izobara
Форумчанин
 
Аватар для Izobara
 
Регистрация: 26.12.2012
Сообщений: 227
По умолчанию

Попробуй sound заменить на
Beep(330,2);
Турбо может не дружить с дровами винды.
"I believe I can fly" - C++, "What do you want from me" - Delphi, "Yesterday" - Pascal, "Let it be" - C#... Программисты-музыканты-полиглоты поймут
Izobara вне форума Ответить с цитированием
Старый 18.01.2013, 21:01   #7
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,434
По умолчанию

Вот так правильнее будет:
Код:
program words;

uses crt;

var
  s:string;
  i,j,c:Integer;
  sLen:Integer;
begin
  WriteLn('s=');
  ReadLn(s);
  sLen:=Length(s)-1;
  for i:=0 to sLen do
  begin
    j:=i+1;
    if j <= sLen then
    begin
      if (s[i] <> ' ') and (s[j] = ' ') then
      begin
        Inc(c);
      end;
    end else
    begin
     if (i = sLen) and (s[i] <> ' ') then
     Inc(c);
    end;
  end;
  WriteLn('c=',c);
  if ((c mod 2) <> 0) then WriteLn('LOL!');
  WriteLn('Press eny key to exit...');
  ReadLn;
end.
Пробел никогда не значит окончание слова. Я введу "Маша петя<тут 3-5 пробелов>вася" и у вас выдаст неверный результат. В моём варианте это не прокатывает.
Человек_Борща вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Turbo Pascal. Работа с файлами Linar523 Помощь студентам 0 13.06.2012 17:09
работа с файлами на turbo pascal. Катюша)) Паскаль, Turbo Pascal, PascalABC.NET 1 19.12.2011 00:01
Работа с рядками kuy Паскаль, Turbo Pascal, PascalABC.NET 3 05.11.2011 09:30
Задача по действиям над символьными рядками(Pascal) lermax Помощь студентам 0 19.04.2011 20:20
Работа со строками. Turbo Pascal JayDe Помощь студентам 14 25.03.2009 20:20