#pragma once
#include <locale.h>
#include <string.h>
#include <math.h>
#include <windows.h>
#include <iostream>
namespace WinForm {
using namespace System;
using namespace System::ComponentModel;
using namespace System::Collections;
using namespace System::Windows::Forms;
using namespace System::Data;
using namespace System::Drawing;
using namespace System::Runtime::InteropServices;
/// <summary>
/// Сводка для MyForm
/// </summary>
public ref class MyForm : public System::Windows::Forms::Form
{
public:
MyForm(void)
{
InitializeComponent();
//
//TODO: добавьте код конструктора
//
}
int nach;
int konech;
//. char chislo[255];
char* chislo;
private: System::Windows::Forms::Label^ label1;
private: System::Windows::Forms::Label^ label2;
private: System::Windows::Forms::Label^ label3;
private: System::Windows::Forms::Label^ label4;
public:
private: System::Windows::Forms::Button^ button1;
int znach(char chislo)
{
if (chislo <= '9' && chislo >= '0')
return chislo - '0';
else if (chislo <= 'Z' && chislo >= 'A')
return chislo - 'A' + 10;
else if (chislo <= 'z' && chislo >= 'a')
return chislo - 'a' + 10;
else return -1;
}
int vdec(char* chislo, int nach) //перевод в десятичную сс
{
int razlog = 0;
int stepen = 1;
for (int i = strlen(chislo) - 1; i >= 0; i--)
{
razlog += znach(chislo[i]) * stepen;
stepen *= nach;
}
return razlog;
}
void perevod(char* chislo, int nach, int konech) //перевод из десятичной сс
{
int razlog = vdec(chislo, nach);
int q = 0;
int i = 0;
do
{
q = razlog % konech; //остаток от деления
razlog = (razlog - q) / konech; //число которое делим дальше
if (q > 9) //переводим остаток от деления в число
chislo[i] = q + 'A' - 10; //если остаток больше 9,то остаток-буква
else
chislo[i] = q + '0'; //если остаток меньше 9,то остаток число
i++;
} while (razlog != 0);
chislo[i] = '\0';
int a = 1;
a = strlen(chislo) - 1;
for (i = 0; i <= int((a) / 2); i++)
{
char s = chislo[i];
chislo[i] = chislo[a - i];
chislo[a - i] = s;
}
}
int proverka(char* chislo, int nach)
{
int a = strlen(chislo);
for (int i = 0; i < a; i++)
if ((znach(chislo[i]) >= nach) || (znach(chislo[i]) < 0)) //проверка, число было меньше сс начальной и больше нуля
return 1;
return 0;
}
protected:
/// <summary>
/// Освободить все используемые ресурсы.
/// </summary>
~MyForm()
{
if (components)
{
delete components;
}
}
private: System::Windows::Forms::TextBox^ textBox1;
protected:
private: System::Windows::Forms::TextBox^ textBox2;
private: System::Windows::Forms::TextBox^ textBox3;
private: System::Windows::Forms::TextBox^ textBox4;
private:
/// <summary>
/// Требуется переменная конструктора.
/// </summary>
System::ComponentModel::Container^ components;
#pragma region Windows Form Designer generated code
/// <summary>
/// Обязательный метод для поддержки конструктора - не изменяйте
/// содержимое данного метода при помощи редактора кода.
/// </summary>
void InitializeComponent(void)
{
this->textBox1 = (gcnew System::Windows::Forms::TextBox());
this->textBox2 = (gcnew System::Windows::Forms::TextBox());
this->textBox3 = (gcnew System::Windows::Forms::TextBox());
this->textBox4 = (gcnew System::Windows::Forms::TextBox());
this->label1 = (gcnew System::Windows::Forms::Label());
this->button1 = (gcnew System::Windows::Forms::Button());
this->label2 = (gcnew System::Windows::Forms::Label());
this->label3 = (gcnew System::Windows::Forms::Label());
this->label4 = (gcnew System::Windows::Forms::Label());
this->SuspendLayout();
//
// textBox1
//
this->textBox1->Location = System::Drawing::Point(20, 69);
this->textBox1->Margin = System::Windows::Forms::Padding(4, 4, 4, 4);
this->textBox1->Name = L"textBox1";
this->textBox1->Size = System::Drawing::Size(147, 22);
this->textBox1->TabIndex = 0;
//
// textBox2
//
this->textBox2->Location = System::Drawing::Point(197, 69);
this->textBox2->Margin = System::Windows::Forms::Padding(4, 4, 4, 4);
this->textBox2->Name = L"textBox2";
this->textBox2->Size = System::Drawing::Size(68, 22);
this->textBox2->TabIndex = 1;
//
// textBox3
//
this->textBox3->Location = System::Drawing::Point(293, 69);
this->textBox3->Margin = System::Windows::Forms::Padding(4, 4, 4, 4);
this->textBox3->Name = L"textBox3";
this->textBox3->Size = System::Drawing::Size(63, 22);
this->textBox3->TabIndex = 2;
//
// textBox4
//
this->textBox4->Location = System::Drawing::Point(23, 127);
this->textBox4->Margin = System::Windows::Forms::Padding(4, 4, 4, 4);
this->textBox4->Name = L"textBox4";
this->textBox4->Size = System::Drawing::Size(144, 22);
this->textBox4->TabIndex = 3;
//
// label1
//
this->label1->AutoSize = true;
this->label1->Location = System::Drawing::Point(19, 32);
this->label1->Margin = System::Windows::Forms::Padding(4, 0, 4, 0);
this->label1->Name = L"label1";
this->label1->Size = System::Drawing::Size(106, 17);
this->label1->TabIndex = 4;
this->label1->Text = L"Введите число";
this->label1->Click += gcnew System::EventHandler(this, &MyForm::label1_Click);
//
// button1
//
this->button1->Location = System::Drawing::Point(51, 234);
this->button1->Margin = System::Windows::Forms::Padding(4, 4, 4, 4);
this->button1->Name = L"button1";
this->button1->Size = System::Drawing::Size(100, 28);
this->button1->TabIndex = 5;
this->button1->Text = L"Перевести";
this->button1->UseVisualStyleBackColor = true;
this->button1->Click += gcnew System::EventHandler(this, &MyForm::button1_Click);
//
// label2
//
this->label2->AutoSize = true;
this->label2->Location = System::Drawing::Point(164, 32);
this->label2->Margin = System::Windows::Forms::Padding(4, 0, 4, 0);
this->label2->Name = L"label2";
this->label2->Size = System::Drawing::Size(99, 17);
this->label2->TabIndex = 6;
this->label2->Text = L"Начальная сс";
//
// label3
//
this->label3->AutoSize = true;
this->label3->Location = System::Drawing::Point(273, 32);
this->label3->Margin = System::Windows::Forms::Padding(4, 0, 4, 0);
this->label3->Name = L"label3";
this->label3->Size = System::Drawing::Size(91, 17);
this->label3->TabIndex = 7;
this->label3->Text = L"Конечная сс";
this->label3->Click += gcnew System::EventHandler(this, &MyForm::label3_Click);
//
// label4
//
this->label4->AutoSize = true;
this->label4->Location = System::Drawing::Point(24, 103);
this->label4->Margin = System::Windows::Forms::Padding(4, 0, 4, 0);
this->label4->Name = L"label4";
this->label4->Size = System::Drawing::Size(48, 17);
this->label4->TabIndex = 8;
this->label4->Text = L"Ответ";
//
// MyForm
//
this->AutoScaleDimensions = System::Drawing::SizeF(8, 16);
this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font;
this->ClientSize = System::Drawing::Size(377, 279);
this->Controls->Add(this->label4);
this->Controls->Add(this->label3);
this->Controls->Add(this->label2);
this->Controls->Add(this->button1);
this->Controls->Add(this->label1);
this->Controls->Add(this->textBox4);
this->Controls->Add(this->textBox3);
this->Controls->Add(this->textBox2);
this->Controls->Add(this->textBox1);
this->Margin = System::Windows::Forms::Padding(4, 4, 4, 4);
this->Name = L"MyForm";
this->Text = L"MyForm";
this->Load += gcnew System::EventHandler(this, &MyForm::MyForm_Load);
this->ResumeLayout(false);
this->PerformLayout();
}
#pragma endregion
private: System::Void MyForm_Load(System::Object^ sender, System::EventArgs^ e) {
}
char* and_SysStringToChar(System::String^ chislo)
{
return (char*)(void*)Marshal::StringToHGlobalAnsi(chislo);
}
private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) {
nach = Convert::ToInt16(textBox2->Text);
chislo = and_SysStringToChar(textBox1->Text);
proverka(chislo, nach);
konech = Convert::ToInt16(textBox3->Text);
perevod(chislo, nach, konech);
chislo = and_SysStringToChar(textBox4->Text); //вызов
textBox4->Text =
System::Convert::ToString(chislo);
}
private: System::Void label1_Click(System::Object^ sender, System::EventArgs^ e) {
}
private: System::Void label3_Click(System::Object^ sender, System::EventArgs^ e) {
}
};
}