Написать программу подсчета числа слов в строке, содержащей пробелы.
7.3.1. Создание оконного приложения
Для ввода строк и работы с ними использовать компоненту ComboBox. Ввод строки заканчивать нажатием клавиши Enter, для выхода использовать кнопку «Close». Панель диалога с результатами программы может иметь вид, представленный на рис. 7.1.
В тексте программы приведем только функции-обработчики:
//---------------------------------------------------------------------------
void __fastcall TForm1:: FormActivate (TObject *Sender)
{
Form1->ComboBox1->SetFocus(); // Передача фокуса ComboBox 1
}
//---------------------------------------------------------------------------
void __fastcall TForm1:: ComboBox1KeyDown (TObject *Sender, WORD &Key,TShiftState Shift)
{
if (Key == 13) {
ComboBox1->Items->Add(ComboBox1->Text);
// Строка из окна редактирования заносится в ComboBox 1
ComboBox1->Text=""; // Очистка окна
}
}
//------------ Обработка нажатия кнопки мыши --------------------
void __fastcall TForm1:: ComboBox1Click (TObject *Sender)
{
int n, i, nst;
nst = ComboBox1->ItemIndex; // Определение номера строки
String st = ComboBox1->Items->Strings[nst]; // Запись выбранной строки st
if (st[1]!= ' ') n = 1; // Здесь и ниже ' ' – пробел
else n = 0;
|
|
for(i=1; i<st.Length(); i++) // Просмотр символов строки st
if(st[i] == ' ' && st[i+1]!= ' ') n++;
Edit1->Text = IntToStr(n); // Вывод числа слов в Edit 1
}
Рис. 7.1
7.3.2. Создание консольного приложения
Для ввода строки, содержащей пробелы используем функцию gets (см. лаб.раб. №1).
Текст функции main () может иметь следующий вид:
...
#include <string.h>
void main()
{
int n, i, nst, len;
char st[81];
puts(" Input string ");
gets(st);
if (st[0]!= ' ') n = 1; // Здесь и ниже ' ' – пробел
else n = 0;
len = strlen(st);
for(i=1; i<=len; i++) // Просмотр символов строки
if(st[i] == ' ' && st[i+1]!= ' ') n++;
printf("\n Words = %d", n); // Вывод количества слов
puts("\nPress any key... ");
getch();
}
Результат выполнения представленной программы будет иметь следующий вид: