Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

лабораторная работа / лабораторные работы по LAZARUS / программированием алгоритмов с использованием строк № 4

.doc
Скачиваний:
54
Добавлен:
11.02.2014
Размер:
97.79 Кб
Скачать

МИНИСТЕРСТВО ОБЩЕГО И ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ РФ

САРАТОВСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ

БАЛАКОВСКИЙ ИНСТИТУТ ТЕХНИКИ, ТЕХНОЛОГИИ И УПРАВЛЕНИЯ

факультет: иженерно-строительный

кафедра: управление и информатика в технических системах

Лабораторная работа №4

по дисциплине: системное программное обеспечение

ПРОГРАММИРОВАНИЕ АЛГОРИТМОВ

С ИСПОЛЬЗОВАНИЕМ СТРОК

Выполнил ст. гр. УИТ-32

Принял:

2005 г.

Цель лабораторной работы: освоить применение компонентов ListBox и СomboBox и создать приложение, в котором используются строки.

Задание создать Windows-приложение для подсчета количества слов в произвольной строке. Слова в строке разделяются любым количеством пробелов. Ввод строки заканчивать нажатием клавиши Enter. Работа приложения должна завершаться нажатием кнопки Close.

Ввести в компонент ComboBox:

  1. Фамилия

  2. Имя

  3. Отчество

  4. Домашний адрес

  5. Дату рождения

Вывести выбранную строку и посчитать количество символов в ней.

Дополнительное задание: организовать процедуру замены строчных символов на заглавные в вводимых полях.

Программа:

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls, Buttons;

type

TForm1 = class(TForm)

ComboBox1: TComboBox;

Label1: TLabel;

Label2: TLabel;

BitBtn1: TBitBtn;

procedure ComboBox1KeyPress(Sender: TObject; var Key: Char);

procedure FormActivate(Sender: TObject);

procedure ComboBox1Click(Sender: TObject);

procedure BitBtn1Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

implementation

{$R *.dfm}

function UpperCaseRus(const S: string): string;

{Не работает с ё,Ё,` и другими доп. символами - в учебных целях}

var

Ch: Char;

L: Integer;

Source, Dest: PChar;

begin

L := Length(S);

SetLength(Result, L);

Source := Pointer(S);

Dest := Pointer(Result);

while L <> 0 do

begin

Ch := Source^;

if (Ch > 'Z')and not((Ch>='А')and(Ch<='Я')) then Dec(Ch, 32);

Dest^ := Ch;

Inc(Source);

Inc(Dest);

Dec(L);

end;

end;

procedure TForm1.ComboBox1KeyPress(Sender: TObject; var Key: Char);

begin

if key=#13 then // если нажата клавиша Enter то

begin // строка из поля редактирования заносится

ComboBox1.Items.Add(UpperCaseRus(ComboBox1.Text)); // в список выбора

ComboBox1.Text:=''; // очистка окна редактирования

end;

end;

procedure TForm1.FormActivate(Sender: TObject);

begin

ComboBox1.SetFocus;

end;

procedure TForm1.ComboBox1Click(Sender: TObject);

var

st : string;

n,i,nst,ind: integer;

begin

n:=0; // n содержит количество слов

ind:=0;

nst:=ComboBox1.ItemIndex; // определение номера выбранной строки

st:=ComboBox1.Items[nst]; // st присваивается выбранная строка

for i:=1 to Length(st) do // просмотр всех символов строки

case ind of

0 : if st[i]<>' ' then // если встретился символ

begin

ind:=1;

n:=n+1; // количество слов увеличивается на единицу

end;

1 : if st[i]=' ' then // если встретился пробел

ind:=0;

end;

Label2.Caption:='Число слов в выделенной строке: '+IntToStr(n); // вывод количества слов в Label3

end;

Refresh;

end;

end.

Рабочее окно программы: