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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 01.04.2011, 12:57   #1
OPEJI
Пользователь
 
Регистрация: 01.04.2011
Сообщений: 13
По умолчанию Посчитать количество слов

Задание:
Ввести текст. Найти все предложения, в которых слова имеют одинаковую длину.

Примечание: нельзя использовать строки и массив...
OPEJI вне форума Ответить с цитированием
Старый 01.04.2011, 12:59   #2
OPEJI
Пользователь
 
Регистрация: 01.04.2011
Сообщений: 13
По умолчанию Посчитать количество слов

Задание:
Ввести текст. Найти количество слов в которых все буквы одинаковы.

Примечание: нельзя использовать строки и массив...
OPEJI вне форума Ответить с цитированием
Старый 01.04.2011, 14:14   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Примечание: нельзя использовать строки и массив...
вот "хитроумные" преподаватели (ну или авторы задачников) не перестают меня поражать!!

Расскажите, как это требование сочетается с
Цитата:
Ввести текст
?!!
Это означает, что текст НИКУДА не сохраняется?!! или имеется в виду, что нужно организовать динамическую структуру в памяти (например, связнный список, и хранить вводимые символы в нём?!! я фигею, дорогая редакция...

сорри за лишнюю эмоциональность! не мог сдержаться...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 01.04.2011, 14:32   #4
BoozZzilla
Форумчанин
 
Аватар для BoozZzilla
 
Регистрация: 26.01.2009
Сообщений: 125
По умолчанию а сейчас уникальный номер

жонглирование без рук
BoozZzilla вне форума Ответить с цитированием
Старый 01.04.2011, 14:33   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

ИМХО задача слишком сложна для школы...
Но все же решить ее можно.

вот что я имел ввиду:
Код:
var c:char k,n,words,i:integer;
begin k:=0;
 repeat c:=readkey;
  k:=0;  Words:=1;
   if (c<>#13)and(c<>' ') do n:=n+ord(с);
   if k=0 then k:=n
   else     if (n=k) then inc(words);   n:=0;
   if (c<>#13)and(c<>' ') do n:=n+ord(с);
   if (n=k) then inc(words);   n:=0;
 until c=#13;
 write(words);readln;
  { TODO -oUser -cConsole Main : Insert code here }
end.
Возможно конечно не особо надежно, но какая задача - такой и ответ.

Т.Е. создавать хеш-сумму слов и сравнивать их а не сами слова.
I'm learning to live...

Последний раз редактировалось Stilet; 01.04.2011 в 14:52.
Stilet вне форума Ответить с цитированием
Старый 19.05.2011, 17:58   #6
OPEJI
Пользователь
 
Регистрация: 01.04.2011
Сообщений: 13
По умолчанию

Вот решение первой задачи
Код:
uses crt;
var a,l:char;
n,dlina,dlinas:integer;
z,b:boolean;
begin
 Write('Введите текст:');
 n:=0;//количество необходимых предложений
 dlina:=0;//длина слова
 b:=true;
 a:=readkey;
 write(a);
 l:=a;
  while a<>#13 do //пока не нажат Enter
   begin
    if (l=' ') and (l=a) then //защита от дурака (от кучи пробелов)
     begin
      repeat
       a:=readkey;
       write(a)
      until (a<>' ');//пока А не станет не равно пробелу
     end;
    if b and (a<>'.') then
      begin
       if (a<>' ') then
        dlina:=dlina+1;
       if ((a=' ') and (l<>'.')) then //слово кончилось
        begin
         if not z then //если в первый раз
          begin
          z:=true;//понеслась
          dlinas:=dlina;
          dlina:=0;//сбрасываем для следующего слова
          end
         else //если не первое слово
          begin
           if (dlina=dlinas) then //проверяем слова
            begin
            dlinas:=dlina;//длина данного слова
            dlina:=0;//сбрасываем для следующего слова
            end
           else //если слово не ок
            b:=false;//слово нам не подходит
          end;
        end;
      end;
      if ((a='.') or (a='!') or (a='?')) and (l<>a) then //если конец предложения
      begin
      if (l<>' ') then//проверяем последнее слово
       begin
        if (dlina=dlinas) then //проверяем слова
         begin
          dlinas:=dlina;//длина данного слова
          dlina:=0;//сбрасываем для следующего слова
         end
        else //если слово не ок
         b:=false;//слово нам не подходит
       end;
       if b then
        n:=n+1//считаем количество "нужных" предложений
       else
        b:=true;//сбрасываем парметр b для следующих предложений
       {сбрасываем значения}
       z:=false;
       dlinas:=0;
       dlina:=0;
      end;
     l:=a;//сохраняем текущий символ
     a:=readkey;
     write(a);
   end;
   writeln('Количество предложений: ',n);//выводим
end.
OPEJI вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
посчитать количество нулей в массиве melie91 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 2 22.02.2011 13:49
Подсчитать количество слов и количество букв MDSIQ Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 1 13.11.2010 16:57
Дана строка, состоящая из нескольких слов. Найти количество слов, которые содержат хотя бы одну букву "А" Mashaa Помощь студентам 13 09.12.2009 13:28
Посчитать количество символов в файле Sabyr Помощь студентам 1 31.05.2009 18:50
Составить в алфавитном порядке список всех слов, встречающихся в тексте, и количество этих слов. KAPAHDAW Паскаль, Turbo Pascal, PascalABC.NET 2 17.02.2009 01:19