نمایش نتایج 1 تا 12 از 12

نام تاپیک: الگوریتم برگشت عددهای حاصل از ضرب

  1. #1
    کاربر دائمی آواتار loo30fer
    تاریخ عضویت
    اسفند 1387
    محل زندگی
    یزد
    پست
    347

    Question الگوریتم برگشت عددهای حاصل از ضرب

    با سلام خدمت دوستان
    من دنبال الگوریتمی میگردم که 3 عدد حاصل از جمع رو بدست بیارم
    بری مثال من 3 عدد داشتم که اولی 4 و دومی 22 و سومی 151 حالا حاصل جمع اینها شده 177
    و حالا من تنها چیزی که دارم عدد 177 هست میخواستم بدونم چطور و با چه الگوریتم یا تابع دلفی میتونم 3 عدد حاصل از این رو بدست بیارم من یک نمونه رو همینجوری درست کردم میخوام مثلا به این شکل انجام بشه
    نمونه تبدیل اعداد :
    4 * 2 =              8 
    22 * 2 = 44
    151 * 2 = 302
    8 + 44 + 302 = 354
    نمونه برگشت حاصل جمع اعداد :
    354 / 40 / 2 = 4
    354 / 8 / 2 = 22
    354 / 1.172 / 2 = 151
    حتما میگین مثلا این 40 از کجا اومد که من بر اون و دو تقسیمش کردم و جواب 4 که حاصل اولی بدست اومد:
    من اومدم اعدادی رو که در تبدیل اعداد بر عدد اصلی ضرب شدن رو باهم ضرب و برای خودم یک مبنا تعیین کردم که عدد 5
    مثلا 2 * 2 = 4 * 2 = 8 * 5 = 40 و در آخر باز تقسیم بر 2

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

  2. #2

    نقل قول: الگوریتم برگشت عددهای حاصل از ضرب

    سلام ؛ ببینید جهت حل این مساله باید یک پیش زمینه ای از ریاضیات گسسته و از بحث ترکیبیات داشته باشید ،
    که من بطور مختصر بهتون توضیح میدم :

    معادله X1+X2+X3=N یک معادله سیاله نامیده میشود ، Xi ها جوابهای طبیعی این معادله اند .
    خوب حالا مساله اینجاست که چطور میشه واسه یک N (بزرگتر یا مساوی 3) ، Xi ها را یافت ؟! (دقت کنید که
    Xi های بیشتر مساوی 1 و کمتر مساوی N-2 خواهند بود .)
    خوب ، ببینید ، روال کار ساده است ؛ ما باید از Range مورد نظر شروع کرده و واسه یک X1 و واسه یک X2 ، تمام حالات از X3
    که جمع شون برابر با N میشه رو پیدا کنیم ، به همین دلیل این مساله خیلی ساده با 3 تا حلقه تو در تو (Nested Loops) قابل حل خواهد بود .
    من کد ++C اش رو هم نوشتم تا مساله بیشتر روشن بشه :


    #include <iostream>
    #include <conio>
    int main(){
    int n,f=1;
    cout<<"Enter result :\n";
    cin>>n;
    cout<<"-----------------\n";
    for(int i=1;i<=n-2;i++){
    for(int j=1;j<=n-2;j++){
    for(int k=1;k<=n-2;k++){
    if(i+j+k==n){

    cout<<f<<"."<<" "<<i<<" "<<j<<" "<<k<<endl;
    f++;}
    }
    }
    }
    getch();
    }

    خروجی برای ورودی برابر 6 :
    همانطور که می بینید 10 حالت برای جوابها وجود دارد .
    که البته میشه اثبات کرد که تعداد جوابها برای عدد مفروض N
    برابر است با :
    Name:  pic2.png
Views: 34
Size:  1.0 کیلوبایت

    خروجی مورد نظر :

    Name:  pic.png
Views: 34
Size:  16.4 کیلوبایت

    موفق باشید ./






  3. #3
    کاربر دائمی آواتار loo30fer
    تاریخ عضویت
    اسفند 1387
    محل زندگی
    یزد
    پست
    347

    نقل قول: الگوریتم برگشت عددهای حاصل از ضرب

    ممنون از توضیحاتتون و راستش منم ریاضیاتم خوب نیست و اگه امکان داره کد دلفیش رو قرار بدین چون من با ++C کار نکردم و چیزی ازش نمیفهمم با تشکر

  4. #4
    کاربر دائمی آواتار FastCode
    تاریخ عضویت
    تیر 1388
    محل زندگی
    /dev/null
    پست
    3,486

    نقل قول: الگوریتم برگشت عددهای حاصل از ضرب

    مساله رو کامل نگرفتم.

    شاید این درست باشه
    int input = *****;
    int i;
    int[] list = /*a big list, i think it is sizeof(int) * root(3, input) */
    int list_pointer=0;
    for(int n = 1;n != root(3, input);n++)
    {
    i = 3;
    int copy = input;
    int Sqr_n = sqrt(n);
    for(int m = 1;m != Sqr_n;m++)
    {
    for(int p = 1;p != Sqr_n;p++)
    {
    if(i == 1)
    {
    if(copy != 0)
    {
    list[list_pointer++] = copy;
    list[list_pointer++] = 1;
    }
    else
    {
    list_pointer -= i << 1;
    }
    }
    else
    {
    int A = m * p;
    if(A < copy)
    {
    copy -= A;
    list[list_pointer++] = m;
    list[list_pointer++] = p;
    if(--i == 0) break;
    }
    }
    }
    }
    }

    اگر اون حالتی باشه که فکر نمیکنم باشه, تقریباً ۲۰۰ خط میشه.دعا کن نباشه.
    آخرین ویرایش به وسیله FastCode : سه شنبه 19 بهمن 1389 در 18:59 عصر دلیل: الگوریتم اشتباه

  5. #5
    کاربر دائمی آواتار loo30fer
    تاریخ عضویت
    اسفند 1387
    محل زندگی
    یزد
    پست
    347

    نقل قول: الگوریتم برگشت عددهای حاصل از ضرب

    مساله رو کامل نگرفتم.
    من الگوریتمی رو میخوام که مثلا عدد 2 و 12 و 43 رو که دارم رو بتونم به یک عدد تبدیل کنم و قابلیت برگشت پذیری داشته باشه یکم واضح تر میگم مثلا همین عدد هام رو بر اساس الگوریتمی جمع میزنم که مثلا میشه 93 حالا من موندم و این عدد 93 حالا میخوام بتونم این عدد رو برگشت بدم به همون عدد های 2 و 12 و 43
    فکر کنم کد شما هم برای ++C باشه اگه امکان داره کد دلفیش رو قرار بدین و اگه شما الگوریتمی براش دارین و پولی من مشکلی ندارم خریدارم

  6. #6
    کاربر دائمی آواتار FastCode
    تاریخ عضویت
    تیر 1388
    محل زندگی
    /dev/null
    پست
    3,486

    نقل قول: الگوریتم برگشت عددهای حاصل از ضرب

    نقل قول نوشته شده توسط loo30fer مشاهده تاپیک
    من الگوریتمی رو میخوام که مثلا عدد 2 و 12 و 43 رو که دارم رو بتونم به یک عدد تبدیل کنم و قابلیت برگشت پذیری داشته باشه یکم واضح تر میگم مثلا همین عدد هام رو بر اساس الگوریتمی جمع میزنم که مثلا میشه 93 حالا من موندم و این عدد 93 حالا میخوام بتونم این عدد رو برگشت بدم به همون عدد های 2 و 12 و 43
    فکر کنم کد شما هم برای ++C باشه اگه امکان داره کد دلفیش رو قرار بدین و اگه شما الگوریتمی براش دارین و پولی من مشکلی ندارم خریدارم
    من دلفی بلد نیستم.
    این کاری که شما میخواهید بکنید فکر میکنم همون کاریه که openssl میکنه.

  7. #7

    نقل قول: الگوریتم برگشت عددهای حاصل از ضرب

    دوست عزیز ، روش کار رو که من گفتم ، حالا زبان که مهم نیست !
    در ضمن کدی که من ذکر کردم ، نرمال ترین روش پیاده سازی این مساله هست .

    موفق باشید ./






  8. #8
    کاربر دائمی آواتار loo30fer
    تاریخ عضویت
    اسفند 1387
    محل زندگی
    یزد
    پست
    347

    نقل قول: الگوریتم برگشت عددهای حاصل از ضرب

    بازم شرمنده دوست عزیز آخه من خیلی وقته با ریاضی سروکار نداشتم برای همین خوب متوجه نحوه کار نمیشم , بعضی وقتها از هوش خودم لذت میبرم و بعضی وقتها مثل الان از هوشم ...
    پس اگه امکان داره یک نمونه کمپایل شدش رو قرار بدین که من 3 تا عدد رو بدم و یک عدد رو بگیرم و وقتی عددم رو میدم اون 3 تا عدد رو بگیرم ببخشید که اینقدر پرویی میکنم بخدا اگه کاری از دستم بر میومد و بر بیاد انجام میدم تا لطفتون رو جبران کنم

  9. #9
    کاربر دائمی آواتار FastCode
    تاریخ عضویت
    تیر 1388
    محل زندگی
    /dev/null
    پست
    3,486

    نقل قول: الگوریتم برگشت عددهای حاصل از ضرب

    نقل قول نوشته شده توسط loo30fer مشاهده تاپیک
    بازم شرمنده دوست عزیز آخه من خیلی وقته با ریاضی سروکار نداشتم برای همین خوب متوجه نحوه کار نمیشم , بعضی وقتها از هوش خودم لذت میبرم و بعضی وقتها مثل الان از هوشم ...
    پس اگه امکان داره یک نمونه کمپایل شدش رو قرار بدین که من 3 تا عدد رو بدم و یک عدد رو بگیرم و وقتی عددم رو میدم اون 3 تا عدد رو بگیرم ببخشید که اینقدر پرویی میکنم بخدا اگه کاری از دستم بر میومد و بر بیاد انجام میدم تا لطفتون رو جبران کنم
    شرمنده.
    این کار غیر ممکنه.
    http://en.wikipedia.org/wiki/Hash_function
    http://en.wikipedia.org/wiki/Cryptog..._hash_function

  10. #10

    نقل قول: الگوریتم برگشت عددهای حاصل از ضرب

    من خیلی وقته با ریاضی سروکار نداشتم برای همین خوب متوجه نحوه کار نمیشم
    دوست عزیز ، اول از همه بگم که همیشه باید سعی کنید در راستای قوانین سایت حرکت کنید !
    ثانیا ، توضیحی که من ذکر کردم آنچنان نیاز به دانش پیشرفته ریاضی ندارد ، بقولی انتگرال که نمیخوایم حل کنیم !!!
    ثالثا ، اینطور که برمیاد شما قدرت درک الگوریتمی تان مناسب نیست ، چراکه یک برنامه نویس نرمال ، باید بتونه یک الگوریتم رو
    در زبان مربوطه اش به کد تبدیل کنه !
    رابعا ، درخواست کد/پروژه طبق قوانین سایت اکیدا" ممنوع است ، پس لطفا" درخواست کد نکنید !
    خامسا ، هیچ وقت به چیزهای آماده عادت نکنید ؛ آدم اگه رو یه مساله یه هفته هم وقت بذاره خیلی باارزش تره تا اینکه بیاد کدش رو
    به هرطریقی در عرض چند دقیقه پیدا کنه !!!

    امیدوارم به نکات ذکر شده ، توجه کافی نموده باشید .

    موفق باشید ./






  11. #11
    کاربر دائمی آواتار loo30fer
    تاریخ عضویت
    اسفند 1387
    محل زندگی
    یزد
    پست
    347

    نقل قول: الگوریتم برگشت عددهای حاصل از ضرب

    دوست عزیز ، اول از همه بگم که همیشه باید سعی کنید در راستای قوانین سایت حرکت کنید !
    جناب Salar Ashgi من که نه قصد نقض قوانین این سایت رو دارم و نه داشتم
    درخواست کد/پروژه طبق قوانین سایت اکیدا" ممنوع است ، پس لطفا" درخواست کد نکنید !
    ببخشید این رو میگم ولی من قوانین رو که خوندم همچین چیزی رو نیافتم پس قسمت کد و آپلود برای زیباییه ؟
    هیچ وقت به چیزهای آماده عادت نکنید ؛ آدم اگه رو یه مساله یه هفته هم وقت بذاره خیلی باارزش تره تا اینکه بیاد کدش رو
    به هرطریقی در عرض چند دقیقه پیدا کنه !!!
    بله با حرف شما کاملا موافقم به خاطر عجلم به خودم اجازه ندادم به خودم زحمت بدم و یکم وقت بذارم
    فقط اگه بگین اینی رو که من میخواستم که 3 عدد رو تبدیل کنم به یک عدد و دوباره بتونم اون عدد رو تبدیل کنم به همون 3 عدد امکان پذیر هست یا نه ؟

  12. #12

    نقل قول: الگوریتم برگشت عددهای حاصل از ضرب

    من که نه قصد نقض قوانین این سایت رو دارم و نه داشتم
    شما تو پست های قبلی تون صراحتا" درخواست کد کرده بودید و این یعنی نقض قوانین !
    من قوانین رو که خوندم همچین چیزی رو نیافتم پس قسمت کد و آپلود برای زیباییه ؟
    شما مثل اینکه موضوع رو متوجه نشدید ، اگه منظورتون دکمه هستش ، که اصلا ربطی به بحث
    ما نداره ، این گزینه یک Tag-Editor ای است جهت قرار دادن کدهای کاربران . بحث ما این هست که :

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


    با این اوصاف فعالیت شما در حالت فعلی ناقض قوانین است ، پس اگر میخواهید به نتیجه برسید باید از چنین فعالیت هایی خودداری نمائید !

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






قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •