Страница 1 из 1

Перевод числа в семеричную систему счисления

Добавлено: 07 май 2010, 14:16
PastoriXx
Здравствуйте, задача такая: "Перевести введенное число в семеричную с/с и выяснить входит ли второе введенное число в семеричное представление первого".
Программа написана в Visual Studio C#

Код: Выделить всё

namespace С_1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
 
        private void button1_Click(object sender, EventArgs e)
        {//поменять тип с инта на соответствующий
 
 
            int N = (int)numericUpDown1.Value;
            int X = (int)numericUpDown2.Value;
            int j = 2;
            double[] m = new double[j];
            double Z;
            string n,x;
            
            Z = N;
            m[0] = N / 7;
 
            if (Z >= 7)
            {
                for (int i = 1; i < j; i++)
                {
                    m[i] = Z % 7;
                    Z = m[i];
                    if (Z < 7) break;
                        j++;
                }
                Z = j = 0;
                for (int i = m.Length; i > 0; i--)
                {
                    Z += m[j] * System.Math.Exp((i - 1) * System.Math.Log(10));
                    if (m[j] == 0) break;
                    j++;
                }
            }
            label6.Text ="" + Z;
 
            int k = 0;
            n = Convert.ToString(Z);
            x = Convert.ToString(X);
 
            k = n.IndexOf(x);
                if (k!=-1)
                    label4.Text = "да";
                else label4.Text = "нет";
 
        }
    }
}

Код работает только до 48. Дальше перевод в 7ю систему неправильный. Подскажите как это исправить.

Re: Перевод числа в семеричную систему счисления

Добавлено: 13 май 2010, 09:22
Хыиуду
Раздел алгоритмы. Алгоритм там есть, осталось только перевести с Паскаля на Си.
Числа в разных системах счисления лучше представлять в виде строк. Тогда вторая часть задачи решается применением одной стандартной пункции (strpos вроде)

Re: Перевод числа в семеричную систему счисления

Добавлено: 14 май 2010, 13:00
PastoriXx

Код: Выделить всё

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace Семестровая_задача_1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {

            int N = (int)numericUpDown1.Value;
            int X = (int)numericUpDown2.Value;
            
            string[] m = new string[8];
            string z,Z,K;
            int i = 7,x,n;

            n = N * N;
            do
            {
                x = n % 7;
                n = n / 7;

                if (x < 7)
                    z = Convert.ToString(x);
                else
                    z = - 10 + Convert.ToString(x);
                
                m[i] = z;
                i--;
            } while (n > 0);

            Z = "";
            
            for(int j  = 0;j<=7;j++)
            {
               Z +=m[j];
            }
            int k = 0;
            label6.Text = Z;
            K = Convert.ToString(X);
            k = Z.IndexOf(K);

            if (k != -1)
                label4.Text = "да";
            else label4.Text = "нет";

        }
    }
}
Прога работает