PDA

View Full Version : باقیمانده تقسیم عدد N رقمی عدد سه یا چهار رقمی



behnam_vb
یک شنبه 18 بهمن 1388, 16:20 عصر
من دنبال یه برنامه میگردم که یه عدد N رقمی رو در یه عدد سه یا چهار رقمی تقسیم کنه و باقیمانده شو به من بده عدد N رقمی من خیلی بزرگ هستش حدود 12000 تا رقم داره لطفا کمکم کنید فوری:خجالت:

saeid.memfis
یک شنبه 18 بهمن 1388, 18:19 عصر
سلام
فقط می دونم باید از آرایه ها استفاده کنی...ولی کامل بلد نیستم

Sharif Lotfi
یک شنبه 18 بهمن 1388, 20:42 عصر
من دنبال یه برنامه میگردم که یه عدد N رقمی رو در یه عدد سه یا چهار رقمی تقسیم کنه و باقیمانده شو به من بده عدد N رقمی من خیلی بزرگ هستش حدود 12000 تا رقم داره لطفا کمکم کنید فوری:خجالت:

دوست عزيز يه مقدار واضح تر اگه بگي فكر مي كنم راه حلي به جز تقسيم رياضي هم بشه پيدا كرد

behnam_vb
دوشنبه 19 بهمن 1388, 09:55 صبح
من یه عدد دارم که 12000 تا رقم داره یعنی 12000 رقمیه و میخوام باقیمانده تقسیم این عدد رو تو یه عدد دیگه بدست بیارم از این واضح تر بلد نیستم دیگه بگم :افسرده::افسرده::خجالت::افسر ه:

غلامرضا شریفی
دوشنبه 19 بهمن 1388, 12:27 عصر
من یه عدد دارم که 12000 تا رقم داره
ميشه لطف كنيد بفرماييد اين عدد 12000 رقمي را چطور بدست آوردي و چه كارايي دارد
پيشاپيش ببخشيد جوابي ندارم

behnam_vb
دوشنبه 19 بهمن 1388, 12:30 عصر
من یه وبسایتی نوشتم که مربوط میشه به مباحث قرانی که تو اون من این اعداد رو تولید میکنم و تو تست بعضی مطالب بسیار حیاتی این تقسیم وجواب باقیماندهی اون البته اینم بگم که 12000 رقم حالت متوسط هستش و ممکنه تا 28000 یا 30000 رقم هم پیش بره...:اشتباه:

behnam_vb
دوشنبه 19 بهمن 1388, 12:32 عصر
دوست عزیز یه مقدار واضح تر اگه بگی فکر می کنم راه حلی به جز تقسیم ریاضی هم بشه پیدا کرد



چه قدر واضح من که کامل توضیح دادم از این واضح تر فکر نکنم بشه

Sharif Lotfi
دوشنبه 19 بهمن 1388, 17:55 عصر
دوست عزيز سوالتونو متوجه ام . منظورم اينه اگه بدونيم چه الگوريتمي رو داريد دنبال مي كنيد بجاي بدست آوردن اين عدد خيلي عجيب از روشهاي داده هاي بيتي و xml و غيره شايد بشه كمك گرفت
البته همش پيشگوييه . بايد ديد دقيقا قراره چي رو بخونيم و چي رو بدست بياريم

behnam_vb
دوشنبه 19 بهمن 1388, 18:06 عصر
ای بابا آقا این عدد باید بدست بیاد چون رو اون عدد تحقیق میشه هم رو عدد هم رو باقیمانده تقسیمش به عدد دیگه اصلا سعی نکنیم صورت مسئله رو پاک کنیم سعی کنیم به راه حل و برنامه اش برسیم تو دانشگاه هم اینو پروژه میگن استادا من یادم میاد زمان دانشجویی اینارو پروژه میگفتن

nima898
سه شنبه 20 بهمن 1388, 09:08 صبح
من یه برنامه برای ضرب اعداد چند هزار رقمی و فاکتوریل اعداد چهار رقمی بدون ممیز شناور (عدد صحیح با تمام ارقام)نوشتم نوشتن این برنامه واسم کاری نداره ولی الان فرصت ندارم تا کی میخوای؟

behnam_vb
سه شنبه 20 بهمن 1388, 10:03 صبح
اول اینکه من تشکر میکنم ازتون بخاطر اهمیتی که به این پست دادین متاسفانه بسیار شدید لازم دارم یعنی وبسایتم خوابیده کارش به خاطر این مطلب

nima898
چهارشنبه 21 بهمن 1388, 09:18 صبح
شما سورس هم میخواید یا فایل exe یا dll

به این تاپیک یه سری بزنید (ضرب و فاکتوریل)
http://barnamenevis.org/forum/showthread.php?t=204551

behnam_vb
چهارشنبه 21 بهمن 1388, 10:18 صبح
بله سورس یا حداقل الگوریتم نوشتنشو میخوام در ضمن من میخوام باقیمانده تقسیم رو بدست بیارم حتی اگه الگوریتمشم یکی توضیح بده من خودم مینویسم فقط الگوریتمشو نمیدونم

pirmard
پنج شنبه 22 بهمن 1388, 02:41 صبح
من دنبال یه برنامه میگردم که یه عدد N رقمی رو در یه عدد سه یا چهار رقمی تقسیم کنه و باقیمانده شو به من بده عدد N رقمی من خیلی بزرگ هستش حدود 12000 تا رقم داره لطفا کمکم کنید فوری:خجالت:

استفاده از آرایه ها !
به این روش که شما برای هر عدد یک آرایه در نظر میگیرین به اندازه طول اون عددتون . مثلا فرض کنید شما قراره a رو با b جمع کنید
a=123456
b=9999999

خوب دو تا آرایه دارین یکی به طول 6 و دیگری به طول 7. هر رقم از این اعداد رو در خونه های آرایه قرار میدین . حالا کافیه اعداد توی اون ارایه رو به ترتیب ارزششون(از خونه کم ارزش به سمت پر ارزش) با هم جمع کنین و ده بر یک ها رو به خونه کناری منقل کنین .
در مورد ظرب و تقسیم و ... هم به همین صورته دیگه . یعنی نکته اصلی اینه که شما عدد n رقمی خودتون رو به ی آرایه n خونه ای تبدیل کنین .

nima898
پنج شنبه 22 بهمن 1388, 08:17 صبح
استفاده از آرایه ها !

من برای ضرب از string استفاده کردم
آرایه سریعتره؟

pirmard
پنج شنبه 22 بهمن 1388, 23:50 عصر
من برای ضرب از string استفاده کردم
آرایه سریعتره؟

کلا فکر می کنم کار با آرایه ها نسبت به کار با رشته از این نظرها بهتر باشه :


به لحاظ دسترسی به هر کدام از اعداد، می توانید مستقیما اقدام کنید (یعنی هر ایندکس به آن خانه ی مربوطه اشاره می کند) در صورتی که در کار با رشته ها شما باید به کمک یک تابع (مثلا توبع لفت و رایت) به هر عنصر دسترسی پیدا کنید .(که یم فراخوانی تابع اضافه دارید) و این یعنی سرعت پایینتر
در کار با رشته ها، هر کرکتر (که معادل یک رقم برای شما است) ماهیت غیر عددی دارد و شما برای محاسبات بر روی آن باید آن را به عدد تبدیل کنید (کوئرشن) مثلا با تابع val() و یا اینکه عمرگرها آن را به صورت ضمنی با آن تابع تبدیل کنند که در هر صورت باز یعنی یک فراخوانی اضافه به ازای هر دسترسی به هر رقم که این هم به معنی سرعت پایینتر است
در کار با رشته ها شما به ازای هر خانه برای داده ی کرکتری فضا اختیار می کنید در صورتی که در کار با آرایه شما صراحتا می توانید نوع عددی کوچکی را برای آن آرایه انتخاب کنید که این یعنی حافظه کمتر

موارد دیگه ای ممکنه دلالت بر بهتر بودن روش آرایه ای بر روش رشته ای باشه که خوب من چیزی تو ذهنم نیست

behnam_vb
جمعه 23 بهمن 1388, 13:15 عصر
با سلام خدمت شما دوستان عزیز که طی این چند روز خیلی خیلی به من لطف کردین و هر کسی هر چه قدر که از دستش بر میومد کمکم کرد ولی خوب متاسفانه به جایی نرسیدیم

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





Function funDiv(ByVal strNumber As String, ByVal intnumber2 As Integer) As Integer
Dim strnum1, strnum2, strnum3, strnum4 As String
Try
If strNumber.Length < 13 Then
funDiv = strNumber Mod intnumber2
Else
strnum3 = strNumber
strnum1 = strNumber
While strnum1.Length > intnumber2.ToString.Length
strnum2 = Mid(strnum1, 1, 13)
strnum4 = Mid(strnum1, 14)
strnum3 = Val(strnum2) Mod intnumber2
strnum1 = strnum3 & strnum4

End While
funDiv = Val(strnum3)

End If
Catch ex As Exception
TextBox2.Text = ex.Message
funDiv = -1
End Try

Return funDiv
End Function



:لبخند::کف::بوس::قلب::گیج:

behnam_vb
جمعه 23 بهمن 1388, 13:22 عصر
البته با کمی تغییر در الگورتم برنامه میشه چهار عمل اصلی رو هم رو اون پیاده سازی کرد

منصور بزرگمهر
دوشنبه 30 فروردین 1389, 05:24 صبح
برادر من سئوالات بسیار ساده می پرسی. ما چگونه در عمل ضرب تقسیم ریاضی می کنیم، همان فرمول را برای هر تعداد رقم می توانی الگوریتم کنی، (چند تا حلقه دارد) و آنرا بدست آوری. یادم می آید جوانتر بودم، با یک روز وقت صرف آن آنرا را کامل نوشتم، مطمئن باش پیچیده نیست. یادم هست بعدها می خواستم، بصورت سخت افزار یک چیزی شبیه ماشین حساب طراحی کنم، (با دانستن زبان اسمبلی و یک ذره هم الکترونیک، و با چیدن ترانزیستورها می توان همین توابع را نوشت البته باینری، و بعد با هزاران کلک تبدیل به مبنای ده) حال اگر عدد مبانی ده ما هشت رقمی باشد، یک عدد بزرگ چندین صد رقمی در باینری می شود، (صفر یک یا ترانزیستور باز یا بسته)حالا باید چکار کرد، مثل شما ناراحت و بی جواب بود. با یک کمی فکر توانستم، نقشه این توابع را بکشم، (البته من سخت افزاراً آن را نساختم، چون بیشتر 8000 ترازیستور می خواست، و من فقط و فقط طراحی چهار عمل اصلی را با همان روش ضرب تقسیم عادی منتها حال اعداد باینری هستند نوشتم، و کار ساده ای بود در هر شکلی خواستم ایجاد کنم.

لطفاً برای هر کاری یک کمی فکر کنید. برنامه نویسی یعنی همین الگوریتم نوشتن. بجای اینکه پروژه شما بخوابد، شما خود بعد یک یا دور روز می توانستی آن را بنویسی، و یا در گوگل سرچ کن، هزاران dll برای اینکار وجود دارد. کار ساده ای این الگوریتم است.

reza4zar
یک شنبه 24 فروردین 1393, 14:22 عصر
در سی شارپ هم کدش اینه:
static int ModString(string x, int y)
{
if (x.Length == 0)
return 0;
string x2 = x.Substring(0,x.Length - 1); // first digits
int x3 = int.Parse(x.Substring(x.Length - 1)); // last digit
return (ModString(x2, y) * 10 + x3) % y;
}
با استفاده از یک متد برگشتی