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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 22.09.2013, 14:20   #1
bestnicer
Пользователь
 
Аватар для bestnicer
 
Регистрация: 29.05.2012
Сообщений: 59
Восклицание C# Арифметика с длинными числами

Помоги, пожалуйста, разобрать, как работает данная программка:
Код:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Numerics;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            int[] a;
            a = new int[4] {3,9,9,9};
            int[] b;
            b = new int[4] {2,9,9,0};
            int t = 0;
            int[] m;
            m = new int[Math.Max(a[0], b[0])+2];
            m[0] = Math.Max(a[0], b[0]);
            for (int i = 1; i <= m[0]; i++)
            {
                t = t + a[i] + b[i];
                m[i] = t % 10;
                t = t / 10;
            }
            if (t!=0)
            {
                m[0] += 1;
                m[m[0]] = t;
            }
            Console.WriteLine("сумма:");
            for (int i=m[0]; i>=1; i--)
            {
                Console.Write(m[i]);
            }
            Console.WriteLine("");
            int[] c;
            c = new int[a[0]+b[0]+1];
            t = 0;
            c[0] = a[0] + b[0]+1;
            for (int i = 1; i <= m[0]; i++)
            {
                c[i] = 0;
            }
            for (int i = 1; i <= a[0]; i++)
            {
                t = 0;
                for (int l = 1; l <= b[0]; l++)
                {
                    t = t + c[i + l - 1] + a[i] * b[l];
                    c[i + l - 1] = t % 10;
                    t = t / 10;
                }
                int j = b[0] + i;
                while (t != 0)
                {
                    c[j] = t % 10;
                    t = t / 10;
                    j++;
                }
            }
            int r=c[0]-1;
            for (int i = r; i >= 1; i--)
            {
                if (c[i] != 0)
                {
                    c[0] = i;
                    break;
                }

            }
            Console.WriteLine("Произведение:");
            for (int i = c[0]; i >= 1; i--)
                Console.Write(c[i]);
            Console.ReadKey(true);
        }
    }
}
bestnicer вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с длинными цифровыми значениями _-Юрий-_ Microsoft Office Excel 5 12.10.2011 16:08
Арифметика в ПК Negent Помощь студентам 12 28.08.2010 14:18
Арифметика в C iggor Помощь студентам 3 01.12.2009 12:40
Запись структуры TList в файл, проблема с длинными строками типа AnsiString Xardas Общие вопросы Delphi 2 24.05.2009 20:18