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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 13.01.2009, 21:59   #1
Оксиморон
 
Аватар для Оксиморон
 
Регистрация: 13.01.2009
Сообщений: 6
По умолчанию написать программу на дельфи, в которой используется MDI-окна (текстовые)

Дан текст. Написать программу подсчитывающую количество слов в тексте, и количество цифр (текст как вы понимаете абсолютно любой)
Оксиморон вне форума Ответить с цитированием
Старый 13.01.2009, 22:55   #2
Sasha_Smirnov
Особый статус
Участник клуба
 
Аватар для Sasha_Smirnov
 
Регистрация: 24.11.2008
Сообщений: 1,535
По умолчанию

Жаль, что окна MDI, а не документ Word!
(А то тело программы заняло бы 2 строчки.)

Но во встроенном поиске слов Word есть коллизия (разрешение которой здорово было бы увидеть в Дэлфи): в любом тексте могут быть слова типа "топ-менеджер", "топ-10", "студент-химик", "2-метилбутан", "µ-мезон"... и (пожалуй, наиболее проблемные!) даже такие, как "P.S." и ".NET".

И, кстати! Не будем забывать, что цифры есть как арабские, так и...

Последний раз редактировалось Sasha_Smirnov; 14.01.2009 в 01:21. Причина: мысли по-поводу римских цифр и слов-«уродов».
Sasha_Smirnov вне форума Ответить с цитированием
Старый 14.01.2009, 01:04   #3
capta1n
Форумчанин
 
Аватар для capta1n
 
Регистрация: 06.12.2008
Сообщений: 613
По умолчанию

на паскале реализовал:

Код:
program ex1;
const
 nom = ['0'..'9'];
 znak = ['.','?','!',',','"',';',':','-'];
var
 s : string;
 n,count : byte;
 i,l : byte;
begin

  writeln ('Vvedite stroky: ');
  readln(s);

  n:=0;
  for i:=1 to length(s) do
  begin
    if s[i] in znak then
    begin
      delete (s,i,1);
      insert (' ',s,i)
    end;
    if s[i] in nom then n:=n+1
  end;

  s:=s+' ';
    count:=0;
    repeat
      l:=pos(' ',s);
      if l>1 then count:=count+1;
      delete (s,1,l)
    until s='';

  writeln ('Cifr= ',n);
  writeln ('Slov= ',count);

  readln

end.

Последний раз редактировалось capta1n; 14.01.2009 в 01:28.
capta1n вне форума Ответить с цитированием
Старый 14.01.2009, 01:26   #4
Sasha_Smirnov
Особый статус
Участник клуба
 
Аватар для Sasha_Smirnov
 
Регистрация: 24.11.2008
Сообщений: 1,535
По умолчанию

<Уважаемый Капитан Пронин, внук Майора Пронина, а Вы не забыли ли предварительно избавить строку от повторяющихся пробелов (ведь они обычно есть!)?>

Вопрос снят, я осознал, что
Код:
delete (s,1,l)
и
Код:
delete (s,l,1)
далеко не то же самое!

Всё же, если решать задачу тупо в лоб (а не как учебную), то я бы не включал дефис ("-") в число разделителей слов. Хотя, конечно, всё относительно.

Последний раз редактировалось Sasha_Smirnov; 14.01.2009 в 02:24.
Sasha_Smirnov вне форума Ответить с цитированием
Старый 14.01.2009, 01:30   #5
capta1n
Форумчанин
 
Аватар для capta1n
 
Регистрация: 06.12.2008
Сообщений: 613
По умолчанию

Уважаемый Sasha_Smirnov, а вы проверьте программу У меня все работает, и все что не нужно убирает ))))
capta1n вне форума Ответить с цитированием
Старый 14.01.2009, 01:31   #6
capta1n
Форумчанин
 
Аватар для capta1n
 
Регистрация: 06.12.2008
Сообщений: 613
По умолчанию

единственное, что последовательность цифр моя программа считает за слово - в принципе это логично, но если так не надо - я могу исправить, ибо получится, что любое слово, содержащее цифру, будет уже не словом
capta1n вне форума Ответить с цитированием
Старый 14.01.2009, 03:32   #7
capta1n
Форумчанин
 
Аватар для capta1n
 
Регистрация: 06.12.2008
Сообщений: 613
По умолчанию

дело в том, что в принципе я имел в виду не дефис а тире ) вы правы, что дефис не разделитель слова, а его часть, но я имел в виду тире - тогда в множество мне надо включать не '-' а с пробелами ' - ' вот так, но тогда нужно дополнительное условие проверки на содержание
capta1n вне форума Ответить с цитированием
Старый 14.01.2009, 18:53   #8
Оксиморон
 
Аватар для Оксиморон
 
Регистрация: 13.01.2009
Сообщений: 6
По умолчанию

Огромное всем спасибо) Не знаю что бы без вас делал. Просто на уровень "3" сам умею немного, а это уже на "4"(студент я)
Оксиморон вне форума Ответить с цитированием
Старый 14.01.2009, 19:25   #9
capta1n
Форумчанин
 
Аватар для capta1n
 
Регистрация: 06.12.2008
Сообщений: 613
По умолчанию

чувак, оставь отзыв плиз - ты мне благодарен за задачу - я тебе за отзыв за мою работу
capta1n вне форума Ответить с цитированием
Старый 14.01.2009, 23:12   #10
Оксиморон
 
Аватар для Оксиморон
 
Регистрация: 13.01.2009
Сообщений: 6
По умолчанию

А как это?) Кстати... А на дельфи это сильно отличаться будет от паскаля?
Оксиморон вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
MDI Окна RIO Общие вопросы .NET 8 06.05.2008 16:06
как написать формулу, чать которой при растягивании не менялось... c_zurab Microsoft Office Excel 2 26.03.2008 11:47
Текстовые файлы посчитать сколько символов используется в поле leest Помощь студентам 8 19.02.2008 20:59
Помогите написать программу (дельфи) Delpher Помощь студентам 2 09.12.2007 19:34
Как сделать чтобы дочерние окна в MDI-приложениях были вне главного окна??? dimonchuk Общие вопросы Delphi 1 11.08.2007 12:13