واضح آرشیو وب فارسی:سایت ریسک: t=42506">برنامه اي براي يافتن فاكتوريل اعداد با هر سايز farid-a 23 آبان 1384, 22:06سلام. اولش يكي نوشتم فقط تا !12 جواب داد. ميشه راهنمائيم بكنيد؟ ممنون. saalek110 23 آبان 1384, 23:45من زياد برنامه نويسي بلد نيستم. ولي با چه زباني مي خواهي؟ چه جوري ميشه كه تا 12 بشه بقيه اش نشه. شايد نوع متغيرهاتو بد انتخاب كردي. يك ندا بده. . ***UNIQUE*** 24 آبان 1384, 06:58من نمیدونم شما برا چه زبانی میخواید اما این کد ++c این برنامه است (این کد تا فاکتوریل عدد 30 رو محاسبه میکنه شما میتونید برای اعداد بیشتر یا برای اینکه از کاربر ورودی بگیره این کد رو تغییر بدید) موفق باشید saalek110 24 آبان 1384, 10:14من دانلود كردم تا كار كنم روش. ممنون. saalek110 24 آبان 1384, 11:41#include <iostream> #include <conio.h> #include <iomanip> unsigned long factorial( unsigned long ); // function prototype int main() { // Loop 10 times. During each iteration, calculate // factorial( i ) and display result. for ( int i = 0; i <= 30; i++ ) cout << setw( 2 ) << i << "! = " << factorial( i ) << endl; getch(); return 0; // indicates successful termination } // end main // recursive definition of function factorial unsigned long factorial( unsigned long number ) { // base case if ( number <= 1 ) return 1; // recursive step else return number * factorial( number - 1 ); } // end function factorial من توضيح مي دهم ببينيد درست مي گم. قسمت قرمز ، ميگه كه در برنامه يك تابع تعريف شده. سئوال : ما هر چند تا تابع بسازيم ، بايد بالاي مين(برنامه اصلي) بگيم؟ قسمت آبي هم خود تابع است كه ورودي ميگيره و خروجي اش را با ريترن برميگردونه. ولي من نفهميدم ضربهاي متوالي چه طور انجام ميشه. حالا مهم نيست بعدن سر درميارم. سئوال من اينه كه من ديروز مي خواستم يك تابع مثل تابع شما بسازم بلد نبودم. و امروز اين برنامه به دستم رسيد . آيا در مقالات شما راجع به تابع كامل توضيح داده شده؟ منظورم چگونه تابع ساختنه. ***UNIQUE*** 24 آبان 1384, 14:18- شما هر تابعی که مینویسید باید پیش نمونه تابع رو بالا تعریف کنید(مگر اینکه قبل از اولین استفاده تابع خود تابع تعریف شده باشه یعنی مثلا" در اینجا , خود تابع (خطوط آبی رنگ) رو اون بالا بجای پیش نمونه تابع(خط قرمز رنگ) مینوشتم. دراین صورت دیگه احتیاجی به نوشتن پیش نمونه تابع (خط قرمز رنگ در اینجا) نبود. - این تابع به روش بازگشتی نوشته شده و مقالات من راجع به توابع هنوز تموم نشده (ببخشید که نوشتن مقالات کند پیش میره راستش بیشتر از این فرصت نمیکنم)در این مقاله یا مقاله بعدی حتما" توابع بازگشتی رو بررسی میکنیم موفق باشید saalek110 24 آبان 1384, 21:16منظوزتون را فهميدم. منظور تابعي است كه خودش را احضار مي كنه. در ويژوال بيسيك هم داشت. . ***UNIQUE*** 24 آبان 1384, 22:20خوشحالم سوالاتون حل شد موفق باشید GodMaster 30 فروردين 1387, 09:52اگه ميشه برنامه اصلاح شدش رو كه فاكتوريل 1000 رو چاپ كنه رو بزاريد خيلي ممنون the_king 30 فروردين 1387, 11:27اگه ميشه برنامه اصلاح شدش رو كه فاكتوريل 1000 رو چاپ كنه رو بزاريد خيلي ممنون یک نکته، فاکتوریل عدد 1000 یک عدد 2576 رقمی است با این مقدار (ناچار به شکستن سطر ها شدم تا ارقام جا بشوند) : 402,387,260,077,093,773,543,702,433,923,003,985,71 9,374,864, 210,714,632,543,799,910,429,938,512,398,629,020,59 2,044,208, 486,969,404,800,479,988,610,197,196,058,631,666,87 2,994,808, 558,901,323,829,669,944,590,997,424,504,087,073,75 9,918,823, 627,727,188,732,519,779,505,950,995,276,120,874,97 5,462,497, 043,601,418,278,094,646,496,291,056,393,887,437,88 6,487,337, 119,181,045,825,783,647,849,977,012,476,632,889,83 5,955,735, 432,513,185,323,958,463,075,557,409,114,262,417,47 4,349,347, 553,428,646,576,611,667,797,396,668,820,291,207,37 9,143,853, 719,588,249,808,126,867,838,374,559,731,746,136,08 5,379,534, 524,221,586,593,201,928,090,878,297,308,431,392,84 4,403,281, 231,558,611,036,976,801,357,304,216,168,747,609,67 5,871,348, 312,025,478,589,320,767,169,132,448,426,236,131,41 2,508,780, 208,000,261,683,151,027,341,827,977,704,784,635,86 8,170,164, 365,024,153,691,398,281,264,810,213,092,761,244,89 6,359,928, 705,114,964,975,419,909,342,221,566,832,572,080,82 1,333,186, 116,811,553,615,836,546,984,046,708,975,602,900,95 0,537,616, 475,847,728,421,889,679,646,244,945,160,765,353,40 8,198,901, 385,442,487,984,959,953,319,101,723,355,556,602,13 9,450,399, 736,280,750,137,837,615,307,127,761,926,849,034,35 2,625,200, 015,888,535,147,331,611,702,103,968,175,921,510,90 7,788,019, 393,178,114,194,545,257,223,865,541,461,062,892,18 7,960,223, 838,971,476,088,506,276,862,967,146,674,697,562,91 1,234,082, 439,208,160,153,780,889,893,964,518,263,243,671,61 6,762,179, 168,909,779,911,903,754,031,274,622,289,988,005,19 5,444,414, 282,012,187,361,745,992,642,956,581,746,628,302,95 5,570,299, 024,324,153,181,617,210,465,832,036,786,906,117,26 0,158,783, 520,751,516,284,225,540,265,170,483,304,226,143,97 4,286,933, 061,690,897,968,482,590,125,458,327,168,226,458,06 6,526,769, 958,652,682,272,807,075,781,391,858,178,889,652,20 8,164,348, 344,825,993,266,043,367,660,176,999,612,831,860,78 8,386,150, 279,465,955,131,156,552,036,093,988,180,612,138,55 8,600,301, 435,694,527,224,206,344,631,797,460,594,682,573,10 3,790,084, 024,432,438,465,657,245,014,402,821,885,252,470,93 5,190,620, 929,023,136,493,273,497,565,513,958,720,559,654,22 8,749,774, 011,413,346,962,715,422,845,862,377,387,538,230,48 3,865,688, 976,461,927,383,814,900,140,767,310,446,640,259,89 9,490,222, 221,765,904,339,901,886,018,566,526,485,061,799,70 2,356,193, 897,017,860,040,811,889,729,918,311,021,171,229,84 5,901,641, 921,068,884,387,121,855,646,124,960,798,722,908,51 9,296,819, 372,388,642,614,839,657,382,291,123,125,024,186,64 9,353,143, 970,137,428,531,926,649,875,337,218,940,694,281,43 4,118,520, 158,014,123,344,828,015,051,399,694,290,153,483,07 7,644,569, 099,073,152,433,278,288,269,864,602,789,864,321,13 9,083,506, 217,095,002,597,389,863,554,277,196,742,822,248,75 7,586,765, 752,344,220,207,573,630,569,498,825,087,968,928,16 2,753,848, 863,396,909,959,826,280,956,121,450,994,871,701,24 4,516,461, 260,379,029,309,120,889,086,942,028,510,640,182,15 4,399,457, 156,805,941,872,748,998,094,254,742,173,582,401,06 3,677,404, 595,741,785,160,829,230,135,358,081,840,096,996,37 2,524,230, 560,855,903,700,624,271,243,416,909,004,153,690,10 5,933,983, 835,777,939,410,970,027,753,472,000,000,000,000,00 0,000,000, 000,000,000,000,000,000,000,000,000,000,000,000,00 0,000,000, 000,000,000,000,000,000,000,000,000,000,000,000,00 0,000,000, 000,000,000,000,000,000,000,000,000,000,000,000,00 0,000,000, 000,000,000,000,000,000,000,000,000,000,000,000,00 0,000,000, 000,000,000,000,000,000,000,000,000,000,000,000,00 0,000,000, 000 برای نگهداری چنین عددی به متغیر های 8800 بیتی یا به عبارتی 1100 بایتی نیاز دارید، مقایسه کنید با متغیر های 80 بیتی (10 بایتی) که در کمک پردازنده های ریاضی بکار می روند. saalek110 30 فروردين 1387, 18:11همان طور که استاد عزیز فرمودند متغیری به این بزرگی نداریم. یک راه حل شبیه سازی چنین متغیر بزرگی است. به پستهای زیر توجه کنید به نقل از : سلام من میخوام فاکتوریل را با آرایه ها پیاده سازی کنم که اعداد بزرگ هم حساب کنه(در c++) با سلام. ببينيد اين طوري ميشه: يك آرايه از جنس اينتيجر بگيريد. به اندازه كافي بزرگ. بعد عدد اينپوت را بگيريد و در همه خانه ها ضرب كنيد. اگر دو رقمي شد نتيجه ضرب،، رقم دهگان را با خانه بعدي آرايه جمع بزنيد. با عملگر باقيمانده و تقسيم بر ده ميشه اين كار را كرد. در كل هر خانه آرايه چون اينتيجر است مي تواند اعداد تا چند هزار را قبول كند ولي شما فرض بگيريد كه فقط اعداد يك رقمي را مي تواند قبول كند. در آخر هم ، همه خانه هاي آرايه را پشت سر هم چاپ كنيد تا عدد نهايي چاپ شود. من هيچ كدي براي امتحان ننوشتم. ولي ممكنه اين ايده عملي باشه. pa_darya 02 ارديبهشت 1387, 10:32اين برنامه واسه !N #include <iostream.h> int main() { int i,n,a; long int p; cout<<"structur is p=n! . enter n : "<<endl; cin>>n; p=1; i=1; if(n==0) cout<<" 0! is 1 "; else { while (i<=n) { p=p*i; i++; } cout<<n<<"! is "<<p; } return 0;
این صفحه را در گوگل محبوب کنید
[ارسال شده از: سایت ریسک]
[مشاهده در: www.ri3k.eu]
[تعداد بازديد از اين مطلب: 2149]