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

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

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

Умова задачі: Маємо рядок символів, який містить деякий текст. Розробити програму, яка визначає, чи є цей текст паліндромом, тобто читається справа наліво, так само як і зліва направо. ( например, «А роза упала на лапу Азора» є паліндромом).

Для вирішення цієї задачі, необхідно і достатню порівняти засобами середовища програмування символи вхідного тексту, в прямому та реверсивному порядку.

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

Код програми:

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

#include <vcl.h>

#include <string>

#pragma hdrstop

#include "Unit1.h"

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

#pragma package(smart_init)

#pragma resource "*.dfm"

TForm1 *Form1;

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

__fastcall TForm1::TForm1(TComponent* Owner)

: TForm(Owner)

{

}

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

void __fastcall TForm1::Button1Click(TObject *Sender)

{

String TextP;

char P[3]=" ";

int i,ir;

int len;

int NotP=0;

TextP=Edit1->Text;

len=Edit1->Text.Length();

for (i=1;i<=len;i++)

{

if (TextP[i]==P[1])

{

for (ir=i;ir<len;ir++)

{

TextP[ir]=TextP[ir+1];

}

len--;

i--;

}

}

for(i=1,ir=len;i<=len;i++,ir--)

{

if (TextP[i]!=TextP[ir]) {NotP=1; break;}

}

if (NotP==1) Label1->Caption="Текст не є поліндромом.";

else Label1->Caption="Текст поліндром";

}

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

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

Програма тестувалася за допомогою двох паліндромів :”а роза упала на лапу азора”, “я иду съ мечемъ судия” та звичайних речень які не є паліндромами. Тестування було успішно, програма виводить повідомлення чи є висловлення паліндромом чи ні.

2.2.Програмування з використанням механізму обробки виключних ситуацій

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

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

Забезпечити: Перевід числа з восьмеричної системи числення в шестирічну й п’ятнадцятирічну.

Для вирішення задачі, число переводилося через проміжне його значення в десятирічній системі числення, визначалася остача від ділення числа на дільник системи(6,15), й виводилося на екран в текстове поле.

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

Вигляд основного коду програми:

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

#include <vcl.h>

#include <math.h>

#pragma hdrstop

#include "Unit1.h"

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

#pragma package(smart_init)

#pragma resource "*.dfm"

TForm1 *Form1;

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

int Nglobal;

int click=0;

__fastcall TForm1::TForm1(TComponent* Owner)

: TForm(Owner)

{

}

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

void __fastcall TForm1::BN1Click(TObject *Sender)

{

Nglobal=Nglobal+1*pow(8,click);

click++;

Edit1->Text=Edit1->Text+"1";

Label2->Caption=IntToStr(Nglobal);

}

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

void __fastcall TForm1::BN2Click(TObject *Sender)

{

Nglobal=Nglobal+2*pow(8,click);

click++;

Edit1->Text=Edit1->Text+"2";

Label2->Caption=IntToStr(Nglobal);

}

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

void __fastcall TForm1::BN3Click(TObject *Sender)

{

Nglobal=Nglobal+3*pow(8,click);

click++;

Edit1->Text=Edit1->Text+"3";

Label2->Caption=IntToStr(Nglobal);

}

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

void __fastcall TForm1::BN4Click(TObject *Sender)

{

Nglobal=Nglobal+4*pow(8,click);

click++;

Edit1->Text=Edit1->Text+"4";

Label2->Caption=IntToStr(Nglobal);

}

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

void __fastcall TForm1::BN5Click(TObject *Sender)

{

Nglobal=Nglobal+5*pow(8,click);

click++;

Edit1->Text=Edit1->Text+"5";

Label2->Caption=IntToStr(Nglobal);

}

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

void __fastcall TForm1::BN6Click(TObject *Sender)

{

Nglobal=Nglobal+6*pow(8,click);

click++;

Edit1->Text=Edit1->Text+"6";

Label2->Caption=IntToStr(Nglobal);

}

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

void __fastcall TForm1::BN7Click(TObject *Sender)

{

Nglobal=Nglobal+7*pow(8,click);

click++;

Edit1->Text=Edit1->Text+"7";

Label2->Caption=IntToStr(Nglobal);

}

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

void __fastcall TForm1::BN0Click(TObject *Sender)

{

click++;

Edit1->Text=Edit1->Text+"0";

Label2->Caption=IntToStr(Nglobal);

}

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

void __fastcall TForm1::ClearClick(TObject *Sender)

{

click=0;

Nglobal=0;

Edit1->Clear();

Label2->Caption=IntToStr(Nglobal);

}

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

void __fastcall TForm1::sixClick(TObject *Sender)

{

if (Nglobal==0) ShowMessage("Нулевое значение не подходит для перевода");

else

{

int Temp;

try

{

int Exit=0;

int N=0,N1;

Edit1->Clear();

N1=Nglobal;

for (;Exit==0;)

{

if (N1>=6)

{N=N+N1%6;

Edit1->Text=Edit1->Text+IntToStr(N);

N1=N1/6;

N=0;

}

else

{

Edit1->Text=Edit1->Text+IntToStr(N1);

Exit=1;}

}

Temp=StrToInt(Edit1->Text);

}

catch(EConvertError &) {ShowMessage("Не указано ни одного значения");}

}

}

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

void __fastcall TForm1::fiftnClick(TObject *Sender)

{

if (Nglobal==0) ShowMessage("Нулевое значение не подходит для перевода");

else

{

try

{

int N1=0,N=0;

int Exit=0;

int len,i,i2;

char x;

Edit1->Clear();

N1=Nglobal;

for (;Exit==0;)

{

if (N1>=15)

{N=N+N1%15;

if (N<10)

Edit1->Text=Edit1->Text+IntToStr(N);

else

switch (N) {

case 10:{Edit1->Text=Edit1->Text+"A";break;}

case 11:{Edit1->Text=Edit1->Text+"B";break; }

case 12:{Edit1->Text=Edit1->Text+"C";break; }

case 13:{Edit1->Text=Edit1->Text+"D";break; }

case 14:{Edit1->Text=Edit1->Text+"E";break; }

}

N1=N1/15;

N=0;

}

else

{

if (N1<10)

Edit1->Text=Edit1->Text+IntToStr(N1);

else

switch (N1) {

case 10:{Edit1->Text=Edit1->Text+"A";break;}

case 11:{Edit1->Text=Edit1->Text+"B";break; }

case 12:{Edit1->Text=Edit1->Text+"C";break; }

case 13:{Edit1->Text=Edit1->Text+"D";break; }

case 14:{Edit1->Text=Edit1->Text+"E";break; }

}

Exit=1;}

}

}

catch(EConvertError &) {ShowMessage("Не указано ни одного значения");}

}

}

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