PDA

View Full Version : سوال: چند سوال در مورد جمع دو عدد n رقمی در زبان C



farzad.sharifi
پنج شنبه 16 خرداد 1387, 18:12 عصر
دوست عزیز A.S Roma و pars engineer و سایر دوستان خواهشمندم بنده را راهنمائی فرمایید.

farzad.sharifi
پنج شنبه 16 خرداد 1387, 18:25 عصر
با توجه به اینکه الگوریتم برنامه را دوست خوبمpars engineer در اختیار بنده قرار داد باید دو عدد رو بصورت رشته بگیریم و سه آرایه تعریف کنیم خانه های آرایه را صفر می کنیم . در آرایه اول عدد اول رو قرار میدهیم و در آرایه دوم عدد دوم را سپس طول هر کدام رابا دستور lenght بدست می آوریم ( لطفا در مورد دستور lenghtتوضیح دهید) بعد از آن در یک حلقه که هر بار یکبار از آن کسر میشود اعداد را از اندیس آخر آرايه( همان طولي كه بدست آمد، البته ممكن است طول عدد اول با عدد دوم متفاوت باشد كه در اين صورت براي مثال اگر طول اولي برابر 30 باشد و طول دومي برابر 25 باشد معادل عددي كد اسكي خانه 30 ام آرايه اول را مثلا اگر49 باشد برابر 1 قرار دهيد و با معادل عددي كد اسكي خانه 25 ام آرايه دوم كه مثلا اگر 55 برابر 7 مي شود جمع كنيد و در آرايه ي سوم بريزيد ) با هم جمع كنيد و حاصل را در آرايه ي سوم بريزيد و در آخر نيز آرايه ي سوم را به عنوان حاصل نشان دهيد.
لطفا در مورد این حلقه بیشتر توضیح دهید

farzad.sharifi
پنج شنبه 16 خرداد 1387, 18:36 عصر
دوست عزیز AS Roma اگر ممکن است در مورد الگوریتم سورسی که در تاپیک قبل برای بنده نوشته بودید (در مورد جمع دو عدد n رقمی) توضیح دهید. با تشکر

pars.engineer
پنج شنبه 16 خرداد 1387, 19:25 عصر
ببينيد دوست عزيز اين خلاف مقررات سايت است كه پروژه هاي دانشجويي مطرح گردند، و مديران سايت تاپيك ها را سريعا حذف مي كنند و حتي اين هم كه ما صريحا خود كد را براي شما بگذاريم بر خلاف مقررات است و حتي ممكن است عضويت ما هم حذف گردد.
ولي اگر راهنمايي بخواهيد ما و حتي خود مديران سايت با كمال ميل راهنمايي خواهيم كرد.
در مورد تابع Lenght : اين تابع طول رشته را بر مي گرداند.
كار حلقه نيز اين است كه يكي يكي اعداد را با هم جمع كند مثل يك عمل جمع ساده كه روي كاغذ انجام مي دهيم.( در ضمن يك نگاهي هم به تصوير ضميمه بيندازيد)
موفق باشيد.
http://barnamenevis.org/forum/attachment.php?attachmentid=18660&stc=1&d=1212679507

farzad.sharifi
پنج شنبه 16 خرداد 1387, 19:52 عصر
مرسی آقا
واقعیتش اینه که من آشنایی آنچنانی با زبان c ندارم فقط با زبان VB تسلط دارم .در ضمن اگر سورس برنامه رو ببینم متوجه کار هر خط برنامه میشم اینطور نیست که من فقط مطالب کپی کنم چون برای پروژه باید دفاعیه بدیم بخاطر همین من سعی میکنم برنامه رو اگه تونستم بفهمم تا حرفی برای گفتن داشته باشم و هم زبان c یاد بگیرم. از جنابعالی بسیار متشکرم

farzad.sharifi
جمعه 17 خرداد 1387, 09:10 صبح
ببينيد دوست عزيز اين خلاف مقررات سايت است كه پروژه هاي دانشجويي مطرح گردند، و مديران سايت تاپيك ها را سريعا حذف مي كنند و حتي اين هم كه ما صريحا خود كد را براي شما بگذاريم بر خلاف مقررات است و حتي ممكن است عضويت ما هم حذف گردد.
ولي اگر راهنمايي بخواهيد ما و حتي خود مديران سايت با كمال ميل راهنمايي خواهيم كرد.
در مورد تابع Lenght : اين تابع طول رشته را بر مي گرداند.
كار حلقه نيز اين است كه يكي يكي اعداد را با هم جمع كند مثل يك عمل جمع ساده كه روي كاغذ انجام مي دهيم.( در ضمن يك نگاهي هم به تصوير ضميمه بيندازيد)
موفق باشيد.


چرا سه آرایه ای که تعریف می کنیم باید در ابتدا همه خونهاشو صفر کنیم؟(اگه ممکنه دستورشو بنویسید)
ممکنه اون قسمتو که یه حلقه باید یذاریم که از طول آرایه بزرگتر شروع بشه و هر بار یکبار از اون کسر میشه رو بنویسید . در ضمن چطور باید بنویسیم تا کد اسکی هر خونه رو به عدد تبدیل کنم؟ ممنون میشم راهنمائی کنید.

farzad.sharifi
جمعه 17 خرداد 1387, 12:40 عصر
هنوز نمی تونم کد برنامه رو بنویسم . اگه ممکنه کمک کنید

pars.engineer
جمعه 17 خرداد 1387, 16:05 عصر
چون وقتي كامپايلر از سيستم عامل حافظه دريافت مي كند آن مقدار از حافظه توسط يك سري از كاركتر ها به صورت تصادفي پر شده اند و اين امر ممكن است موجب بروز مشكل گردد، به اين دليل تمامي اعضاي آرايه را برابر صفر قرار مي دهيم:


قطعه كد حلقه for را هم گذاشتم:





for(int i=len-1;i>=0;--i)



{



if( (num1[i]-48) + (num2[i]-48) <10)



result[i+1]=(num1[i]-48)+(num2[i]-48);



else



{



result[i+1]=(num1[i]-48)+(num2[i]-48)-10;



num1[i-1]=num1[i-1]+1;



}



}



نكته: هرجا ديديد كه از مقدار موجود عدد 48 كم شده است براي بدست آوردن مقدار عددي كد اسكي موجود است.
در ضمن مقدار len برابر طول عدد بزرگتر است كه به صورت زير بدست آمده است:




len=(strlen(num1)>=strlen(num2) ? strlen(num1): strlen (num2));




موفق باشيد.