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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 10.01.2008, 18:07   #1
Леди Уинтер
 
Регистрация: 07.01.2008
Сообщений: 8
Восклицание строки в Делфи

Помогите с задачей!Программа есть,но работает с ошибкой.Проверьте пожалуйста!
Условие:
Выполнить индивидуальное задание следующим образом:

1. Текст ввести с помощью компонента Memo.
2. Вывести слова исходного текста в алфавитном порядке

Дан текст на русском языке. Определить сколько раз встречается в нем самое короткое слово.
Код:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Memo1: TMemo;
    Button1: TButton;
    LabeledEdit1: TLabeledEdit;
    LabeledEdit2: TLabeledEdit;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
i,j,n,k:integer;
s:string;
begin
k:=0;
n:=length(copy(Memo1.lines[0],1,pos(' ',Memo1.lines[0])-1));
s:=copy(Memo1.lines[0],1,pos(' ',Memo1.lines[0])-1);
for i:=0 to memo1.Lines.Count-1 do begin
//if memo1.Lines[i][length(memo1.Lines[i])]<>' ' then
memo1.Lines[i]:=memo1.Lines[i]+' ';
 for j:= 0 to length(Memo1.lines[i]) do begin
    if (Memo1.lines[i][j]=' ')or(Memo1.lines[i][j]='.')or(Memo1.lines[i][j]=',') then begin
     if (n>length(copy(Memo1.lines[i],k+1,j-k-1)))and
        (length(copy(Memo1.lines[i],k+1,j-k-1))>0)then begin
      n:=length(copy(Memo1.lines[i],k+1,j-k-1));
      s:=copy(Memo1.lines[i],k+1,j-k-1);
     end;
      k:=j
    end;
 end;
end;
k:=0;
for i:=0 to memo1.Lines.Count-1 do begin
 for j:= 0 to length(Memo1.lines[i]) do begin
   if copy(Memo1.lines[i],j,length(s))=s then begin

    if (copy(Memo1.lines[i],j-1,1)=' ') or (copy(Memo1.lines[i],j,length(s))=s) and
    ((copy(Memo1.lines[i],j+length(s),1)=' ')
     or(copy(Memo1.lines[i],j+length(s),1)='.')or(copy(Memo1.lines[i],j+length(s),1)=','))then
       k:=k+1

 end;
  end;
end;

LabeledEdit1.Text:=s;
LabeledEdit2.Text:=inttostr(k);
end;

end.
Она работает правильно,только когда текст вводится в строчку,а в столбце уже делает ошибку!

Цитата:
Код вставляем в тег [CОDE][/СОDЕ] или пользуемся кнопкой # (расширенный режим). Модератор.

Последний раз редактировалось AlDelta; 10.01.2008 в 18:51. Причина: [CODE]
Леди Уинтер вне форума Ответить с цитированием
Старый 10.01.2008, 18:49   #2
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

1.Я не понимаю, чего вы мучаетесь, если вам эту задачу уже решили?
2.Вы пишите неправду, что ваш код работает, хотя бы потому, что это
Цитата:
LabeledEdit1.Text:=s;
LabeledEdit2.Text:=inttostr(k);
просто видимо опечатка, но программа этого не понимает.
Даже если исправить опечатку, выдается только первое слово и к=1.
3.Если вы хотите решить по своему, Паскалевскими методами, то зачем вы мучаете этот бедный Memo?
Вводите текст в редактор как обычно, не нажимая Enter, новая линия начнется автоматически, но это будет единая строка.
Далее напишите s:=Memo1.Text; и работайте как с обычной строкой. Алгоритмы вы вроде знаете.
puporev вне форума Ответить с цитированием
Старый 10.01.2008, 19:16   #3
Леди Уинтер
 
Регистрация: 07.01.2008
Сообщений: 8
По умолчанию помогите бедной девушке!

Напишите исправленный код!!!Очень прошу!Заранее благодарю!
Леди Уинтер вне форума Ответить с цитированием
Старый 10.01.2008, 20:07   #4
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Цитата:
помогите бедной девушке!
[OFF]Читаю подобные причитания и удивляюсь.
Ну, прямо одни Паниковские кругом... Осталось к этой фразе еще добавлять: "...меня мальчики не любят..."[/OFF]
mihali4 вне форума Ответить с цитированием
Старый 10.01.2008, 21:34   #5
Леди Уинтер
 
Регистрация: 07.01.2008
Сообщений: 8
По умолчанию

Мальчики как раз любят! А вот с информатикой проблемы!Надеюсь на вашу помощь!
Леди Уинтер вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
С Делфи На Си++ MAKEDON Свободное общение 3 22.07.2008 14:39
Из с++ в Делфи Andre1723 Общие вопросы Delphi 4 02.06.2008 17:50
USB и Делфи StartMis Общие вопросы Delphi 2 01.06.2008 14:22
считать из файла две строки, вывести на экран символы первой строки, которые отсутствуют во второй gotex Помощь студентам 4 08.05.2008 02:27
как вывести строку поочередно сначала первая буква первой строки потом первая буква второй строки и т.д. vitalik007 Помощь студентам 1 25.09.2007 20:45