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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 17.07.2012, 12:09   #1
rustam1994
Пользователь
 
Регистрация: 17.07.2012
Сообщений: 11
Сообщение сколько слов являются перевертышами

дано предложение заканчивающаяся точкой.из слов предложения вычеркивается буква А.определить сколько слов в новом предложении являются перевертышами
rustam1994 вне форума Ответить с цитированием
Старый 17.07.2012, 12:25   #2
TilerDerton
Пользователь
 
Регистрация: 12.02.2009
Сообщений: 34
По умолчанию

Перевертыши до вычеркивания или после?
Вообще, в разрезе Delphi, я бы использовал "Pos", "Copy".
Предложение = строка, при этом пробелы разделяют слова. Если есть запятые, из бы я удалил вместе с "А", (Процедура "delete").
Если точка в конце предложения - обязательное условие, то можно просто работать до "length-1" строки.
TilerDerton вне форума Ответить с цитированием
Старый 17.07.2012, 12:48   #3
rustam1994
Пользователь
 
Регистрация: 17.07.2012
Сообщений: 11
По умолчанию

после вычеркивания написано же.в новом предложении сколько слов являются перевертышами
rustam1994 вне форума Ответить с цитированием
Старый 17.07.2012, 12:50   #4
DiemonStar
Старожил
 
Регистрация: 08.02.2012
Сообщений: 2,173
По умолчанию

А язык программирования какой? или телепатировать нужно?
Правильно поставленная задача - три четверти решения.
DiemonStar вне форума Ответить с цитированием
Старый 17.07.2012, 12:52   #5
rustam1994
Пользователь
 
Регистрация: 17.07.2012
Сообщений: 11
По умолчанию

извиняюсь....на Делфи

какие идеи

Последний раз редактировалось Stilet; 17.07.2012 в 20:41.
rustam1994 вне форума Ответить с цитированием
Старый 17.07.2012, 13:08   #6
Rififi
Старожил
 
Регистрация: 19.08.2009
Сообщений: 2,119
По умолчанию

какие идеи

конечно есть

1. разбить текст на массив слова
2. в цикле по массиву в каждом слове вырезать все вхождения буква 'а'
3. каждое преобразованное слово проверить на перевертыш, если да - увеличить счетчик
4. вывести значение счетчика на консоль или в memo
...
PROFIT!
Rififi вне форума Ответить с цитированием
Старый 17.07.2012, 13:13   #7
rustam1994
Пользователь
 
Регистрация: 17.07.2012
Сообщений: 11
По умолчанию

никто не подскажет куда мне надо вводить эту фигню...


{$R *.dfm}
//ввод только до первой точки
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if pos('.',Edit1.Text)>0 then key:=#0;
end;
rustam1994 вне форума Ответить с цитированием
Старый 17.07.2012, 13:28   #8
DiemonStar
Старожил
 
Регистрация: 08.02.2012
Сообщений: 2,173
По умолчанию

Цитата:
1. разбить текст на массив слова
2. в цикле по массиву в каждом слове вырезать все вхождения буква 'а'
3. каждое преобразованное слово проверить на перевертыш, если да - увеличить счетчик
4. вывести значение счетчика на консоль или в memo
а я бы чуть по-другому сделал:

Цитата:
1. в строке вырезать все вхождения буква 'а'
2. разбить текст на массив слов
3. каждое преобразованное слово проверить на перевертыш, если да - увеличить счетчик
4. вывести значение счетчика на консоль или в memo
в принципе, все действия довольно элементарны и проблем не составляют.

Цитата:
Код:
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if pos('.',Edit1.Text)>0 then key:=#0;
end;
и здесь я бы немножко изменил:
Код:
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
Edit1.Enabled := pos('.',Edit1.Text) <=0; 
end;
Правильно поставленная задача - три четверти решения.

Последний раз редактировалось DiemonStar; 17.07.2012 в 13:32.
DiemonStar вне форума Ответить с цитированием
Старый 17.07.2012, 13:32   #9
Rififi
Старожил
 
Регистрация: 19.08.2009
Сообщений: 2,119
По умолчанию

никто не подскажет куда мне надо вводить эту фигню...

Голубчик, это форум программистов а не sex-education.ru
Выражайте свои мысли яснее oO
Rififi вне форума Ответить с цитированием
Старый 17.07.2012, 13:52   #10
rustam1994
Пользователь
 
Регистрация: 17.07.2012
Сообщений: 11
По умолчанию

уже сделал

Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Button1: TButton;
    Edit2: TEdit;
    Edit3: TEdit;
    procedure Edit1KeyPress(Sender: TObject; var Key: Char);
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
 if pos('.',edit1.Text)>0 then key:=#0;
end;

procedure TForm1.Button1Click(Sender: TObject);
const rz=[' ',',','.'];//разделители пробел, запятая, точка, можно добавить
var s,s1,s2:string;
    i,j,k,n:integer;
begin
if (Edit1.Text='')or(pos('.',Edit1.Text)=0) then
 begin
  showmessage('Вы не ввели предложение или не поставили в конце точку');
  Edit1.Clear;
  exit;
 end;
s:=Edit1.Text; 
//удаление всех букв а, лaтинских и русских
for i:=length(s) downto 1 do
if s[i] in ['A','a','А','а'] then delete(s,i,1);
Edit2.Text:=s;
//поиск перевертышей
n:=length(s);
i:=1;
k:=0;
while i<=n do
if not(s[i] in rz)and((i=1)or (s[i-1] in rz)) then
 begin
  s1:='';
  j:=i;
  while(j<=n)and not(s[j] in rz) do
   begin
    s1:=s1+s[j];
    j:=j+1;
   end;
  s2:='';
  for j:=length(s1)downto 1 do
  s2:=s2+s1[j];
  if s2=s1 then k:=k+1;
  i:=i+length(s1);
 end
else i:=i+1;
Edit3.Text:=IntToStr(k);
end;
end.

end.



___________
Код нужно оформлять по правилам:
тегом [CODE]..[/СODE] (это кнопочка с решёточкой #)
Не забывайте об этом!
Модератор.

Последний раз редактировалось Serge_Bliznykov; 17.07.2012 в 16:35.
rustam1994 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Определите сколько слов заданного текста составлено из букв русского алфавита, а сколько из букв латинского алфавита. Слова, в кот potemos Паскаль, Turbo Pascal, PascalABC.NET 2 18.04.2012 13:14
Необходимо определить количество слов, которые являются "перевертышами" Алексей_1 Паскаль, Turbo Pascal, PascalABC.NET 1 17.05.2011 17:15
Необходимо определить количество слов, которые являются "перевертышами" Алексей_1 Паскаль, Turbo Pascal, PascalABC.NET 2 08.05.2011 22:40
Текст, сколько слов в тексте? BigBen Помощь студентам 1 13.01.2011 19:40