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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 25.01.2015, 01:56   #1
CoolEnemy
 
Регистрация: 06.10.2013
Сообщений: 9
По умолчанию Текст телеграммы (Delphi VCL)

Ребят, есть задача: Введите текст телеграммы и стоимость одного слова. Определить стоимость телеграммы. При вводе текста запятые обозначаются словом ЗПТ, точки - словом Т.
Вот код намудровал, но что-то не хочет ничего, помогите в чем проблема?

Код:
var
  Form1: TForm1;
 
implementation
 
{$R *.dfm}
 
procedure TForm1.Button1Click(Sender: TObject);
var
a,b:string;
c:integer;
kvo:integer;
begin
kvo:=0;
a:=a+' ';
  a:=Edit1.Text;
  c:=strtoint(Edit2.Text);
while Pos(' ',a)>0 do
  begin
    b:=Copy(a,1,Pos(' ',a)-1);
    Delete(a,1,Pos(' ',a));
    if (b<>'ЗПТ') and (b<>'T')
    then inc(kvo);
    Edit3.Text:=b;
  end;
Edit4.Text:=inttostr(kvo*c);
end;
 
end.
CoolEnemy вне форума Ответить с цитированием
Старый 25.01.2015, 02:29   #2
Lamia
Пользователь
 
Регистрация: 24.08.2014
Сообщений: 15
По умолчанию

StrComp это сравнение строк

Последний раз редактировалось Lamia; 25.01.2015 в 02:34.
Lamia вне форума Ответить с цитированием
Старый 25.01.2015, 02:35   #3
CoolEnemy
 
Регистрация: 06.10.2013
Сообщений: 9
По умолчанию

Цитата:
Сообщение от Lamia Посмотреть сообщение
StrComp это сравнение строк
немного не понял?
CoolEnemy вне форума Ответить с цитированием
Старый 25.01.2015, 02:42   #4
Lamia
Пользователь
 
Регистрация: 24.08.2014
Сообщений: 15
По умолчанию

Цитата:
Сообщение от CoolEnemy Посмотреть сообщение
немного не понял?
b<>'ЗПТ' скорее всего из-за этого. Надо strComp(PAnsiChar(b),'ЗПТ') <> 0
Lamia вне форума Ответить с цитированием
Старый 25.01.2015, 02:44   #5
CoolEnemy
 
Регистрация: 06.10.2013
Сообщений: 9
По умолчанию

Цитата:
Сообщение от Lamia Посмотреть сообщение
b<>'ЗПТ' скорее всего из-за этого. Надо strComp(PAnsiChar(b),'ЗПТ') <> 0
неа, не работает
так?
Код:
var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
a,b:string;
c:integer;
kvo:integer;
begin
kvo:=0;
a:=a+' ';
  a:=Edit1.Text;
  c:=strtoint(Edit2.Text);
while Pos(' ',a)>0 do
  begin
    b:=Copy(a,1,Pos(' ',a)-1);
    Delete(a,1,Pos(' ',a));
    if ( strComp(PAnsiChar(b),'ЗПТ') <> 0) and (b<>'T')
    then inc(kvo);
    Edit3.Text:=b;
  end;
Edit4.Text:=inttostr(kvo*c);
end;

Последний раз редактировалось CoolEnemy; 25.01.2015 в 02:47.
CoolEnemy вне форума Ответить с цитированием
Старый 25.01.2015, 02:57   #6
Lamia
Пользователь
 
Регистрация: 24.08.2014
Сообщений: 15
По умолчанию

Код:
a:=a+' ';
  a:=Edit1.Text;
скорее всего Вы хотели добавить в конце строки пробел, чтобы опираться на него в поисках.
Код:
a:=Edit1.Text;
a:=a+' ';
не в курсе, как выглядит телеграмма, но, судя по Вашим строкам, ЗПТ и Т не входят в стоимость ее , а стоимость определяется количеством слов. Если это так, то осталось заменить эти 2 строки.

Последний раз редактировалось Lamia; 25.01.2015 в 03:04.
Lamia вне форума Ответить с цитированием
Старый 25.01.2015, 03:06   #7
WinCoder
Заблокирован
 
Регистрация: 24.11.2014
Сообщений: 721
По умолчанию

CoolEnemy

Код:
var
  TS: TStringList;
begin
  TS := TStringlist.Create;
  TS.Delimiter := ' ';
  TS.DelimitedText := 'раз два три';
  ShowMessage(TS[0]);
  ShowMessage(TS[1]);
  ShowMessage(IntToStr(TS.Count));
Смысл ясен? Теперь по логике. Ты пытаешься выкинуть из сообщения словесные определения знаков препинания, что в корне не верно, так как знаки препинания тоже стоят денег. Смысл задачи в применении функции ReplaceStr для подмены знаков препинания соответствующими словами. Знаки препинания не разделены между словом пробелом, а значит при замене символов на слова нужно поставить пробел
Код:
ReplaceStr('.', ' ТЧК')
После этого загоняем текст в StringList, и верно определяем количество слов, и соответственно цену телеграммы.
WinCoder вне форума Ответить с цитированием
Старый 25.01.2015, 03:08   #8
CoolEnemy
 
Регистрация: 06.10.2013
Сообщений: 9
По умолчанию

WinCoder, получается мой код вообще не правильный?

Цитата:
Сообщение от WinCoder Посмотреть сообщение
CoolEnemy

Код:
var
  TS: TStringList;
begin
  TS := TStringlist.Create;
  TS.Delimiter := ' ';
  TS.DelimitedText := 'раз два три';
  ShowMessage(TS[0]);
  ShowMessage(TS[1]);
  ShowMessage(IntToStr(TS.Count));
Смысл ясен? Теперь по логике. Ты пытаешься выкинуть из сообщения словесные определения знаков препинания, что в корне не верно, так как знаки препинания тоже стоят денег. Смысл задачи в применении функции ReplaceStr для подмены знаков препинания соответствующими словами. Знаки препинания не разделены между словом пробелом, а значит при замене символов на слова нужно поставить пробел
Код:
ReplaceStr('.', ' ТЧК')
После этого загоняем текст в StringList, и верно определяем количество слов, и соответственно цену телеграммы.
честно признаюсь, вообще не понял...

Последний раз редактировалось Stilet; 25.01.2015 в 10:25.
CoolEnemy вне форума Ответить с цитированием
Старый 25.01.2015, 03:21   #9
WinCoder
Заблокирован
 
Регистрация: 24.11.2014
Сообщений: 721
По умолчанию

Цитата:
получается мой код вообще не правильный?
Если ты не понял смысла задачи, код может быть правильным? Включи мозг секунд на 10, и подумай.
Цитата:
честно признаюсь, вообще не понял
Значит не судьба. Объяснил как мог, по другому не умею, ибо не учитель.
WinCoder вне форума Ответить с цитированием
Старый 25.01.2015, 03:22   #10
CoolEnemy
 
Регистрация: 06.10.2013
Сообщений: 9
По умолчанию

Цитата:
Сообщение от WinCoder Посмотреть сообщение
Если ты не понял смысла задачи, код может быть правильным? Включи мозг секунд на 10, и подумай.
Значит не судьба. Объяснил как мог, по другому не умею, ибо не учитель.
а с кодом помочь не можешь?
CoolEnemy вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Задачки Delphi (VCL) CoolEnemy Помощь студентам 6 25.01.2015 01:47
Задачи на Delphi Console+VCL diasouls Помощь студентам 0 23.11.2012 17:25
База данных в среде VCL Forms в Delphi nucweapon Помощь студентам 0 19.02.2012 17:49
Delphi for PHP - не работает половика VCL компонент chandrasecar PHP 2 06.07.2009 13:51