Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Письмак_ЗВІТ_з_практики.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
2.49 Mб
Скачать

1.1. Програмування з використанням рядків, файлів

      1. Постановка задачі та алгоритм вирішення.

У всіх завданнях вихідні дані вводити за допомогою компонента TEdit в компонент TListBox або за допомогою властивості Text у властивість Items компонента TComboBox. Скалярний результат виводити c допомогою компонента TLabel. Введення рядка закінчувати натисканням клавіші Enter. Для виходу з програми використовувати кнопку Close. Для розрахунків вводити кілька різних рядків.

Умова задачі: Дано рядок, що складається з груп нулів та одиниць. Кожна група відокремлюється від іншої одним або декількома пропусками. Знайти кількість груп з п'ятьма символами.

      1. Лістинг програми

//---------------------------------------------------------------------------

#include <vcl.h>

#pragma hdrstop

#include "Unit1.h"

//---------------------------------------------------------------------------

#pragma package(smart_init)

#pragma resource "*.dfm"

TForm1 *Form1;

//---------------------------------------------------------------------------

__fastcall TForm1::TForm1(TComponent* Owner)

: TForm(Owner)

{

}

//---------------------------------------------------------------------------

void __fastcall TForm1::FormActivate(TObject *Sender)

{

Form1->ComboBox1->SetFocus();

}

//---------------------------------------------------------------------------

void __fastcall TForm1::ComboBox1KeyDown(TObject *Sender, WORD &Key,

TShiftState Shift)

{

if (Key==13)

{

ComboBox1->Items->Add(ComboBox1->Text); // Строка из окна редактирования заносится в ComboBox1

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++;

Form1->Label3->Caption=IntToStr(n); // Вывод числа слов в Label3

}

//---------------------------------------------------------------------------

void __fastcall TForm1::BitBtn1Click(TObject *Sender)

{

Close();

}

//---------------------------------------------------------------------------

      1. Результати тестування програми

Рис.1. Головна форма програми

Рис.2. Програма в роботі

    1. ПРОГРАМУВАННЯ З ВИКОРИСТАННЯМ МЕХАНІЗМУ ОБРОБКИ ВИКЛЮЧНИХ СИТУАЦІЙ

      1. Постановка задачі та алгоритм вирішення.

Створити додаток Windows, що використовує механізм обробки виняткових ситуацій, що дозволяє виконувати переклад дійсного числа з однієї системи числення в іншу. Для позначення використовувати цифри 0 ... 9 і букви латинського алфавіту (великі та малі).

Умова задачі: Переклад числа з четверичной системи числення у п'ятирічну..

      1. Лістинг програми

#include <vcl.h>

#include<math.h>

#include<stdlib.h>

#pragma hdrstop

#include "Unit1.h"

//---------------------------------------------------------------------------

#pragma package(smart_init)

#pragma resource "*.dfm"

TForm1 *Form1;

//---------------------------------------------------------------------------

__fastcall TForm1::TForm1(TComponent* Owner)

: TForm(Owner)

{

}

//---------------------------------------------------------------------------

double logaritm(int X, int Y)

{

double lgX, lgY, logXY;

lgX = log(X);

lgY = log(Y);

logXY = lgX/lgY;

return logXY;

}

//---------------------------------------------------------------------------

int dvoy(int X, int Y)

{

return 0;

}

//---------------------------------------------------------------------------

void __fastcall TForm1::Button1Click(TObject *Sender)

{

int a; // основание

int b; // число

b = StrToInt(Edit1->Text);

a = StrToInt(Edit2->Text);

if (ComboBox1->ItemIndex == 0)

{

Edit3->Text = logaritm(b, a);

Edit4->Text = log10(b);

}

if (ComboBox1->ItemIndex == 1)

{

ShowMessage("ERROR!!!");

}

}

//---------------------------------------------------------------------------

void __fastcall TForm1::Edit2Change(TObject *Sender)

{char *endptr;

int j=3;

AnsiString C,CComp="ABCDEFGabcdefg0123456789";

if (Edit2->Text!="")

{try

{ if (Edit1->Text!="") Edit3->Color=clFuchsia;

if((Edit2->Text[1]=='-')&&(Edit2->Text.Length()==1)) return;

C=Edit2->Text[Edit2->Text.Length()];

try

{j=j/CComp.AnsiPos(C);}

__except(EXCEPTION_EXECUTE_HANDLER)

{Application->MessageBox("Вы ввели недопустимый символ!",

"Ошибка",MB_OK);

throw EAssertionFailed("");}

value=strtol(Edit2->Text.c_str(),&endptr,17);

if((Edit2->Text.Length()>11)&&(value==MaxInt))

throw EIntOverflow("");

}

catch (EAssertionFailed &)

{if (Edit2->Text!='-') ShowMessage("Возможны лишь цифры от 0 до 9 "+ );

Edit2->Text=Edit2->Text.Delete(Edit2->Text.Length(),1);

Edit2->SelStart=Edit2->Text.Length();

}

catch (EIntOverflow &)

{ShowMessage("Слишком большое число!");

Edit2->Text=Edit2->Text.Delete(Edit2->Text.Length(),1);

Edit2->SelStart=Edit2->Text.Length();}

catch (...)

}