PDA

View Full Version : سوال: ضرب دو عدد با تعداد ارقام بالا



mohammadhafez
دوشنبه 06 خرداد 1392, 12:59 عصر
سلام دوستان
بی ادبی نباشه ولی ما هر وقت اومدیم سوال مطرح کردیم کسی جواب درسی به ما نداد بخدا جای دوری نمیره

سوالم این بود با سی شارپو با کلاس ها می خوام برنامه ای بنویسم که دو عدد 40 رقمی رو از ورودی بگیره و حاصلظربشونو بدست بیاره تا حالا هر چی سرچ کردم با C++‎ بود
راهنمایی کنید لطفا
مرسی
تشکر

ایمان مدائنی
دوشنبه 06 خرداد 1392, 13:45 عصر
سلام
لینک زیر رو ببین

لینک (http://www.madaeny.com/Article/718/)



مشکل اینه که اینجا کسی کد آماده قرار نمیده. روال کار به این صورته که شما شروع می کنید به نوشتن، بعد به اشکال بر می خورید بعد میاید کدتون رو اینجا قرار می دید دوستان هم در حد توان اشکال رو رفع می کنن و همه چی به خیر و خوشی تموم میشه و تیتراژ پایانی و این روند همینطور تکرار می شه تا جایی که شما حرفه ای بشید و در صورت تمایل به بقیه کمک کنید. به قول میرزای برنامه نویس: الیوم (و پیش از این) درخواست کد آماده به ای نحو کان حرام و در حکم محاربه با مدیر تالار می باشد.
لذا شما اول قوانین سایت رو مطالعه کنید بعد شروع به کد نویسی کنید بعد مشکل پیش اومده رو اینجا مطرح کنید.

دوستمون درست میگه چون کاربر تازه وارد بودید کمکتون کردیم
در موارد بعدی لطفا شما شروع کنید ما هم کمکتون میکنیم
اینجور پست ها پاک میشوند
موفق باشید

mohammadhafez
دوشنبه 06 خرداد 1392, 14:18 عصر
سلام
لینک زیر رو ببین

لینک (http://www.madaeny.com/Article/718/)


دوستمون درست میگه چون کاربر تازه وارد بودید کمکتون کردیم
در موارد بعدی لطفا شما شروع کنید ما هم کمکتون میکنیم
اینجور پست ها پاک میشوند
موفق باشید

آقا دست درد نکنه مرسی فقط یه سوال اگه بخوام این کدی که نوشتی رو تو کنسول و با اجرای cmd ببینم باید چیکار کنم؟

khokhan
دوشنبه 06 خرداد 1392, 14:24 عصر
آقا دست درد نکنه مرسی فقط یه سوال اگه بخوام این کدی که نوشتی رو تو کنسول و با اجرای cmd ببینم باید چیکار کنم؟
http://www.codeproject.com/Articles/2728/C-BigInteger-Class

http://msdn.microsoft.com/en-us/library/system.numerics.biginteger.aspx

http://www.codeproject.com/Articles/60108/BigInteger-Library


این هم نمونه برای ضرب دو عدد 65 رقمی در محیط کنسول به وسیله کلاس BigInteger

mohammadhafez
سه شنبه 07 خرداد 1392, 11:29 صبح
سلام دوستان من توی این کدی که به شکل win form هس مشکل دارم می خوام کد رو توی

static void main() قرار بدم یعنی می خوام اجراشو تو کنسول ببینم ولی نمیدونم چطوری باید بزارمش

کد اصلی اینه که میخوام بزارم تو بدنه مین


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;
using System.Numerics;

namespace Multiplication40
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

private void textBox1_TextChanged(object sender, EventArgs e)
{
lblCount1.Text = textBox1.Text.Length.ToString();
}

private void textBox2_TextChanged(object sender, EventArgs e)
{
label2.Text = textBox2.Text.Length.ToString();
}

private void button1_Click(object sender, EventArgs e)
{
BigInteger big1=new BigInteger(Convert.ToDouble(textBox1.Text));
BigInteger big2=new BigInteger(Convert.ToDouble(textBox2.Text));
lblResult.Text = Multiple.multiple(big1,big2).ToString();
}

private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
if (!char.IsDigit(e.KeyChar) && e.KeyChar != (char)Keys.Back)
e.Handled = true;
}

private void textBox2_KeyPress(object sender, KeyPressEventArgs e)
{
if (!char.IsDigit(e.KeyChar) && e.KeyChar != (char)Keys.Back)
e.Handled = true;
}
}
}


راهنمایی کنین لطفا
مرسی

tooraj_azizi_1035
سه شنبه 07 خرداد 1392, 12:30 عصر
using System;
using System.Globalization;
using System.Numerics;

public class Example
{
public static void Main()
{
long number1 = 1234567890;
long number2 = 9876543210;
try
{
long product;
product = checked(number1 * number2);
}
catch (OverflowException)
{
BigInteger product;
product = BigInteger.Multiply(number1, number2);
Console.WriteLine(product.ToString());
}
Console.ReadKey();
}

dousti_design
سه شنبه 07 خرداد 1392, 12:40 عصر
ضرب دو عدد n رقمی بدون استفاده از کلاس BingInteger و با آرایه (http://barnamenevis.org/showthread.php?353444-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D8%B6%D8%B1%D8%A8-%D8%AF%D9%88-%D8%B9%D8%AF%D8%AF-%D8%A8%D8%B2%D8%B1%DA%AF-%D8%A8%D8%A7-%D8%A7%D9%84%DA%AF%D9%88%D8%B1%DB%8C%D8%AA%D9%85-%D8%A8%D8%A7%D8%B2%DA%AF%D8%B4%D8%AA%DB%8C)

mohammadhafez
سه شنبه 07 خرداد 1392, 12:51 عصر
using System;
using System.Globalization;
using System.Numerics;

public class Example
{
public static void Main()
{
long number1 = 1234567890;
long number2 = 9876543210;
try
{
long product;
product = checked(number1 * number2);
}
catch (OverflowException)
{
BigInteger product;
product = BigInteger.Multiply(number1, number2);
Console.WriteLine(product.ToString());
}
Console.ReadKey();
}



ممنون از راهنماییتون ولی دو عدد رو در هم ضرب نمیکنه فقط یه مقدار میگیره بعدشم press any key to continue

mohammadhafez
سه شنبه 07 خرداد 1392, 13:45 عصر
ممنون از راهنماییتون ولی دو عدد رو در هم ضرب نمیکنه فقط یه مقدار میگیره بعدشم press any key to continue

یعنی اگه کسی بی سوادم باشه کمک بخواد به چنجا میفرسنش اخرش برای یه دفعه هم که شده نمیگن اینو یاد بگیر نمونه های دیگه رو خودت بنویس الان وضع حال ماست صدتا کد دارم ولی یکیش اون چیزی نیس که ما می خواستیم یاد بگیریم

بازم مرسی

Direlap
سه شنبه 07 خرداد 1392, 15:02 عصر
یعنی اگه کسی بی سوادم باشه کمک بخواد به چنجا میفرسنش اخرش برای یه دفعه هم که شده نمیگن اینو یاد بگیر نمونه های دیگه رو خودت بنویس الان وضع حال ماست صدتا کد دارم ولی یکیش اون چیزی نیس که ما می خواستیم یاد بگیریم

بازم مرسی

دوست عزیز ناراحت نشید ولی شما خیلی راحت طلب هستید. مگه نگفتید تو محیط کنسول میخوایید ؟ اینم از کنسول که دوست خوبمون براتون گذاشتن و تبدیلش کردن.

حالا اگه کار نمیکنه یکم وقت بزارید روش ببینید مشکلش کجاست.

mohammadhafez
سه شنبه 07 خرداد 1392, 15:25 عصر
دوست عزیز ناراحت نشید ولی شما خیلی راحت طلب هستید. مگه نگفتید تو محیط کنسول میخوایید ؟ اینم از کنسول که دوست خوبمون براتون گذاشتن و تبدیلش کردن.

حالا اگه کار نمیکنه یکم وقت بزارید روش ببینید مشکلش کجاست.

من ناراحت نشدم رفیق مشکل اینه که من تازه شروع کردم هنو با بعضی متدها و ... اشنایی پیدانکردم راحت طلب بی ادبی نباشه مال کسایی که بلدن کد اماده می خوان

Direlap
سه شنبه 07 خرداد 1392, 16:53 عصر
ممنون از راهنماییتون ولی دو عدد رو در هم ضرب نمیکنه فقط یه مقدار میگیره بعدشم press any key to continue

کدی که دوستمون دادن بدون ایراده و عدد نمیگیره. خودش دو تا نمونه عدد داده.

من تستش کردم بدون مشکل اجرا شد و چیزی هم نگفت.

کجای اجرای این قطعه کد مشکل دارید ؟

mohammadhafez
سه شنبه 07 خرداد 1392, 17:08 عصر
کدی که دوستمون دادن بدون ایراده و عدد نمیگیره. خودش دو تا نمونه عدد داده.

من تستش کردم بدون مشکل اجرا شد و چیزی هم نگفت.

کجای اجرای این قطعه کد مشکل دارید ؟

دمت گرم رفیق منم اجراش کردم عدد میگیره و خارج میشی مشکل اینجاس که دو عدد ضرب نمیکنه میخوام دو عدد 40 رقمی بگیره حاصلظربشو دربیاره دیوانه شدم از صبح این ویژوالو از بس که باش کدارو چک کردم

ایمان مدائنی
سه شنبه 07 خرداد 1392, 18:11 عصر
برات نوشتم و ضمیمه کردم
موفق باشی

rahdar
سه شنبه 07 خرداد 1392, 20:12 عصر
این هم روش من کار باهاش ساده است
ضرب به روش پویاست
دو عدد رو به صورت رشته میگیره و و حاصل ضرب رو به صورت رشته برمیگردونه
کنترل خطا نداره و فقط هم مثبت در مثبت


string Multiply(string num1, string num2)
{
string ans = "";
int n1 = num1.Length, n2 = num2.Length;
int n = n1 + n2;
int i, j, tmp;
int[] data = new int[n];
for (i = 0; i < n1; i++)
for (j = 0; j < n2; j++)
{
data[i + j] += int.Parse(num1[n1 - i - 1].ToString()) * int.Parse(num2[n2 - j - 1].ToString());

}
for (i = 0; i < n - 1; i++)
{
tmp = data[i];
data[i] = tmp % 10;
data[i + 1] += tmp / 10;
}

for (i = n-1; i >= 0; i--)
ans += data[i].ToString();


while (ans[0] == '0')
{
ans = ans.Substring(1, ans.Length - 1);
}

return ans.Trim();
}