L
L
Leo_SAN2020-09-27 22:02:46
.NET
Leo_SAN, 2020-09-27 22:02:46

When translating from one number system, true pops up, how to fix 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

Answer the question

In order to leave comments, you need to log in

1 answer(s)
N
none7, 2020-09-28
@none7

textBox4->Text = System::Convert::ToString(chislo);// which of these methods should be called here? It's strange that it compiles at all.

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question