Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 30.11.2011, 13:00   #1
Lucky777
Пользователь
 
Регистрация: 30.11.2010
Сообщений: 48
По умолчанию автомат умножения двоичных чисел

не получается реализовать автомат умножения двочных чисел, привожу ниже мой код:
Код:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            string S1, S2, S3=" ";
            int sost=0;
            int[,] V = new int[3, 4] { { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 1, 0, 0, 0 } };
            int[,] P = new int[3, 4] { { 2, 2, 3, 0 }, { 1, 2, 3, 0 }, { 0, 2, 3, 0 } };
            S1 = Console.ReadLine();
            S2 = Console.ReadLine();
            int vih = 0;
            string Sum = "0000000000";
            while (vih == 0)
            {
                vih = V[int.Parse(S2[S2.Length - 1].ToString()), sost];
                sost = P[int.Parse(S2[S2.Length - 1].ToString()), sost];
                switch (sost)
                {
                case 1: S3=Summator(Sum, S1);
                break;
                case 2: Shift_Right(ref S2);
                break;
                case 3: Shift_Left(ref S1);
                break;
                }
            }
            Console.WriteLine(S3);
        }

       static void Shift_Right(ref string S)
        {
            S=S.Remove((S.Length - 1), 1);
        }
       static void Shift_Left(ref string S)
        {
            S=S+'0';
        }

       static string Summator(string a, string b)
       {
           string c = "";
           int[,] buf = new int[2, 2] { { 0, 1 }, { 1, 2 } };
           int[] masB = new int[10];
           int[,] mas = new int[3, 2] { { 0, 0 }, { 0, 1 }, { 1, 1 } };
           int[,] rezMas = new int[3, 2] { { 0, 1 }, { 1, 0 }, { 0, 1 } };
           int znach = 0;

           for (int i = 0; i < 10; i++)
           {
               int a1 = int.Parse(a[i].ToString());
               int b1 = int.Parse(b[i].ToString());
               masB[i] = buf[a1, b1];
           }

           for (int i = 9; i >= 0; i--)
           {
               c = rezMas[masB[i], znach].ToString() + c;
               znach = mas[masB[i], znach];
           }
           if (znach == 1)
               c = "1" + c;
           return c;
       }
    }
}
Помогите, если кто-то видит в чем ошибка! спасибо заранее всем!
Lucky777 вне форума Ответить с цитированием
Старый 01.12.2011, 09:01   #2
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Уточните задачу. Напишите условие. Но сразу подкину идейку - двоичных чисел не существует. Есть двоичное представление числа. Поэтому можно смело заводить int на умножаемые числа. И умножать обычным умножением. Тут необходимо будет акцентировать внимание на два метода - Преобразование двоичного представления числа из строки в int и Преобразование int в двоичное представление числа в строку. Поэтому я спрашиваю про условия задания - если никаких запретов нет, то можно поступить указанным способом.
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
деление двоичных чисел bronik4 Помощь студентам 1 21.06.2011 16:57
Сложение двоичных чисел!!! 2008kedr2008 Общие вопросы C/C++ 4 11.05.2011 14:57
задача на C#-выполнение операций сложения и умножения на двоичных числах maximas Помощь студентам 1 29.04.2011 17:12
сложение 10 двоичных чисел sssvetlaya Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 1 10.11.2009 09:32