@Leo_SAN

При переводе из одной системы счисления выскакивает true, как исправить c++ crl?

#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) {
	}
	};
}


5f70e1d09ae7e096417655.png
  • Вопрос задан
  • 123 просмотра
Пригласить эксперта
Ответы на вопрос 1
@none7
textBox4->Text = System::Convert::ToString(chislo);// тут какой из этих методов должен по Вашему вызываться? Странно, что оно вообще компилируется.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы