PDA

نسخه کامل مشاهده نسخه کامل : خواندن کتاب جعفر نژاد ++c



shekoofeh14
14-07-2013, 10:55
سلام دوستان! من میخوام از طریق ایمیل بادوستی کتاب جعفرنژاد رو بخونیم و تمرین هاشو حل کنیم و برای هم بفرستیم که اینطوری رفع اشکال هم بشه!

szh_1367
14-07-2013, 14:51
سلام

خب الان چه کمکی از دست بچه های سایت برمیاد ؟:n13:

shekoofeh14
14-07-2013, 21:22
خب توضیح دادم که! یجورایی یه گروه تشکیل میدیم که برنامه نویسیمونو تقویت کنیم! ازطریق ایمیل. فقط تمرین هاو پروژه ها رو حل میکنیم و برای مقایسه و رفع اشکال برای هم میفرستیم!

mehrdad_joon
20-07-2013, 22:15
فکر خوبیه...

shekoofeh14
21-07-2013, 09:20
از صفر میخوایم شروع کنیما!! من و دوستان تقریبا فصل 2 هستیم! اگه موافقید کتاب رو تهیه کنید و بخونید اولاش خیلی آسونه!

mehrdad_joon
23-07-2013, 16:55
بنده تمامي اين مسائل رو قبلا مطالعه كردم،البته نه از روي كتاب آقاي قومي نژاد.
ولي ذهن هميشه بايد فعال باشه و آماده ي يادگيريه چيزهاي جديد باشه..
ترجيحا سوالهايي رو كه مشكل در حل اون داريد رو اينجا بزاريد يا برام ميل كنيد تا باهم حل كنيم..
موفق باشيد.


Mehrdad Sh.

shekoofeh14
23-07-2013, 22:09
خیلی ممنون از پیشنهادتون! :n01: تمرین های که مشکله توی همین تاپیک بذارم؟؟ که بقیه هم استفاده کنن!

mehrdad_joon
26-07-2013, 16:35
خیلی ممنون از پیشنهادتون! :n01: تمرین های که مشکله توی همین تاپیک بذارم؟؟ که بقیه هم استفاده کنن!

فكره خوبيه...


Mehrdad Sh.

shekoofeh14
27-07-2013, 16:26
برنامه ای بنویسید که خروجی زیر را دقیقا به همین شکل تولید کند: (برای این سوال اون خط و بالای خط رو نمیدونم چطور تولید کنم!!)




[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]

mehrdad_joon
29-07-2013, 01:18
برنامه ای بنویسید که خروجی زیر را دقیقا به همین شکل تولید کند: (برای این سوال اون خط و بالای خط رو نمیدونم چطور تولید کنم!!)


[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]





الان خروجي چيه ؟؟


Mehrdad Sh.

TREASURES
31-07-2013, 04:56
سلام
برای تولید اون خط باید یه حلقه ی FOR بنویسیم و تو اون حلقه از چاپ ( _ )استفاده کنیم که اون خط تولید بشه....

resident2011
31-07-2013, 15:42
این برنامه همون برنامه جدول ضرب معمولیه که با استفاده از دوتا حلقه تو در تو میشه حلش کرد فقط گام حلقه دوم هربار در 10 ضرب میشه

shekoofeh14
01-08-2013, 10:42
برنامه ای بنویسید که خروجی زیر را دقیقا به همین شکل تولید کند:

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

shekoofeh14
01-08-2013, 11:04
برنامه ای بنویسید که مقدار e^x را محاسبه کند:
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]

(در این برنامه ورودی ها فقط x هست؟ یا n هم باید کاربر وارد کنه؟)
این کد درسته؟


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

mehrdad_joon
02-08-2013, 09:02
برنامه ای بنویسید که مقدار e^x را محاسبه کند:
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]

(در این برنامه ورودی ها فقط x هست؟ یا n هم باید کاربر وارد کنه؟)
این کد درسته؟


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

اين سري مك لوران هستش و هرچقدر n بيشتر باشه ،دقت در اندازه گيري بالاتر ميره..
ميشه از كاربر پرسيد كه با چه دقتي ميخواد محاسبه كنه،هرچند كه اين رو ننويسيد اشكال نداره ..



Mehrdad Sh.

shekoofeh14
02-08-2013, 12:16
برای اینکه دقتش بره بالا باید به خروجی setprecision اضافه بشه؟

shekoofeh14
02-08-2013, 12:20
اگر در قسمتی از کدها جور دیگه ای هم میشه مسئله رو حل کرد و روش بهتری بلدید لطفا بگید! ممنون:n16:

shekoofeh14
02-08-2013, 12:27
برنامه ای بنویسید که شماره دانشجویی و معدل تعداد n دانشجو را از ورودی خوانده، دانشجویی را که دومین معدل را از نظر بزرگی دارد، پیدا کند و به خروجی ببرد! (سوال یکم برام نامفهومه!)

mehrdad_joon
02-08-2013, 18:26
برای اینکه دقتش بره بالا باید به خروجی setprecision اضافه بشه؟

هرچقدر تعداد n بزرگتر باشه،دقت برنامه بالاتر ميره..


Mehrdad Sh.

mehrdad_joon
02-08-2013, 18:33
اگر در قسمتی از کدها جور دیگه ای هم میشه مسئله رو حل کرد و روش بهتری بلدید لطفا بگید! ممنون:n16:

این برنامه رو من خیلی وقت پیش نوشتم ،به صورت زیر:


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

فکر کنم بهینه تر بودنش قابل تشخیص باشه.

mehrdad_joon
02-08-2013, 18:40
برنامه ای بنویسید که شماره دانشجویی و معدل تعداد n دانشجو را از ورودی خوانده، دانشجویی را که دومین معدل را از نظر بزرگی دارد، پیدا کند و به خروجی ببرد! (سوال یکم برام نامفهومه!)

فرض كن ميخواي معدل ٢٠ تا دانشجو رو بگيري بعلاوه ي شماره ي دانشجويي.٢تا آرايه نياز داري كه اطلاعات رو واردشون كني.
حالا،فرض كن بهترين معدل بين دانشجوها ماله حسن آقا هست با نمره ي ١٧.٣٤ هست.
بعد از حسن آقا،صمد آقاي گل با نمره ي ١٧.٢٠ بهترين نمره رو بين دانشجو ها داره.
خروجي تو بايد اسم و شماره ي دانشجويي صمد آقا باشه..



Mehrdad Sh.

szh_1367
02-08-2013, 19:11
اگر در قسمتی از کدها جور دیگه ای هم میشه مسئله رو حل کرد و روش بهتری بلدید لطفا بگید! ممنون:n16:

ببین دوست من اگر واقعا میخواهی برنامه نویسی کنید باید چند نکته رو همیشه رعایت کنید این نکات قبل بهینه سازی ، الگوریتم ، زبان برنامه نویسی و . . . جای دارد

1. همیشه و همیشه برای برنامه هایت کامنت بزار هرچند که برنامه بسیار ساده و کوتاه باشد - حاضرم شرط ببنیدم اگر یکماه دیگه به برنامه خودت نگاه کنی متوجه نخواهید شد این برنامه چه کاری انجام میدهد وقتی در ابتدای کار یک کامنت کوچیک قرار میدهید مثلا برنامه محاسبه تابع ایکس - با همین یک خط ذهن شما به سرعت به سمت برنامه هایی میرود که برای محاسبه توابع نوشته اید حال اگر این کامنت ها بیشتر باشد تمرکز بیشتری بر روی برنامه خواهید داشت

2. همیشه و همیشه نام های مناسب برای متغییرهایت استفاده کن . من نمیدونم چرا اکثرا برای دوتا حلقه از متغییر i و j استفاده میکنند حتی در برنامه های که قرار است به مشتری تحویل داده شود

دو حالت زیر رو در نظر بگیر

حالت اول - i , j , k , n ,x

حالت دوم - row , column , f_number , L_number , result

به نظرت کدوم رو بهتر میتونی بخوانی و درک کنی قطعا حالت دوم بسیار در برنامه نویسی مناسب است - وقتی از حالت اول استفاده میکنید فقط و فقط شما هستید که برنامه رو متوجه میشوید اما اگر حالت دوم استفاده شود برنامه خوانایی دارد و همه به راحتی میتوانند ان را درک کنند

resident2011
03-08-2013, 23:54
برنامه ای بنویسید که شماره دانشجویی و معدل تعداد n دانشجو را از ورودی خوانده، دانشجویی را که دومین معدل را از نظر بزرگی دارد، پیدا کند و به خروجی ببرد! (سوال یکم برام نامفهومه!)
این مسئله رو میشه از راههای زیادی حل کرد ولی چون مسائل یک کتاب که بنده تا حالا نخوندم رو دارید حل می کنید باید با چیزهایی که تا الان خوندید حلش کنید منم ساده ترینش رو می گم ان شالله قسمتهایی رو که می گم خونده باشید.

شما فقط می خواید دوتا داده رو که مربوط به هم هستند رو دریافت و ذخیره کنید بهترین کار استفاده از یک آرایه دو بعدیه و چون تعداد داده مشخص و تعداد دانشجو نا مشخصه آریه ما به شکل زیره :

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

shekoofeh14
04-08-2013, 13:32
این تمرین های فصل دو هست که نتونستم حل کنم! و هنوز به آرایه ها نرسیده!
این برنامه فقط شماره دانشجویی و معدل n دانشجو رو میگیره! ولی بدون آرایه چطوری میشه معدلهارو با هم مقایسه کنه؟؟؟

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

mehrdad_joon
04-08-2013, 15:40
این تمرین های فصل دو هست که نتونستم حل کنم! و هنوز به آرایه ها نرسیده!
این برنامه فقط شماره دانشجویی و معدل n دانشجو رو میگیره! ولی بدون آرایه چطوری میشه معدلهارو با هم مقایسه کنه؟؟؟

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید


يكم پيچيده شد،ببين
شما الان ٨ تا متغير نياز داري.
يكي ماكسيمم مطلق رو نگه ميداره.
يكي ماكسيمم نسبي كه همون بزرگترين عدد بعد از ماكسيمم مطلق هست.
٤ تا متغير هم براي مشخصات ٢ تا دانشجوي مطلق و نسبي هم بايد در نظر بگيري.
٢ متغير هم براي گرفتن مشخصات دانجوي جديد..
متوجه شديد؟

shekoofeh14
04-08-2013, 19:07
باراهنمایی شما تونستم این برنامه بنویسم!!ولی اگه کاربر معدل رو صعودی وارد کنه برنامه با مشکل مواجه میشه! مثلا این اعداد 12، 14، 19
ولی حتی اگه به این شکل وارد کنه درست جواب میده 19، 12، 14. فکر کنم در کل ماکسیمم مطلق باید اول بیاد!!!

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

Algo.Bits
05-08-2013, 01:19
برنامه ای بنویسید که شماره دانشجویی و معدل تعداد n دانشجو را از ورودی خوانده، دانشجویی را که دومین معدل را از نظر بزرگی دارد، پیدا کند و به خروجی ببرد! (سوال یکم برام نامفهومه!)

شما اولین کاری که باید بکنید (که نکردین) اینه که مساله رو خوب بخونید، گفته
برنامه ای بنویسید که شماره دانشجویی و معدل تعداد n دانشجو را از ورودی خوانده(اصلا نگفته معدل تمام این n نفر ذخیره بشه بنابراین اصلا نیازی به آرایه نیست)
در ضمن گفته n نفر، بنابراین شما باید عدد n از کاربر بگیرین و به تعداد این عدد معدل و شماره دانشجویی از ورودی بخونید(یعنی حلقه شما باید n بار اجرا بشه) در صورتیکه شما یک حلقه while نوشتین که اگر کاربر N زد خارج بشه اگر Y دوباره معدل بگیره.
دومین کار اینه که باید قدم به قدم برنامه تون رو به همراه متغیر ها trace کنید، حالا چه رو کاغذ چه با debugger کامپایلرتون.

اما دلیل اینکه برنامه شما درست کار نمی کنه اینه که فرض کنید کاربر رو معدل های 12و14 و19 رو بترتیب وارد کنه در این حالت اگر الگوریتم شما درست باشه باید معدل 14 با شمار دانشجویی اون دانشجو چاپ بشه،
با توجه به اینکه شما max1=0 , max2=0 در نظر گرفتین شرط (if( avg > max2 حتما درست درمیاد شرط بعدی (if( avg > max1 هم حتما درست درمیاد بنابراین max1 میشه 12، خب حالا کاربر 14 رو وارد میکنه توجه کنید که در این حالت الان 12 میشه دومین معدل و برنامه شما اگر الان تموم بشه باید 12 رو به عنوان دومین معدل بتونه نمایش بده که نمیده چون شرط (if( avg > max2 مجددا درسته (چون هنوز max2==0 در ضمن عدد 12 هم در حافظه از بین میره) حالا کاربر 19 رو وارد میکنه و شرط (if( avg > max2 حتما درست درمیاد شرط بعدی (if( avg > max1 هم حتما درست درمیاد بنابراین قاعدتا خروجی برنامه شما عدد صفر میشه بجای 14 در صورتیکه عدد 14 هم در حافظه از بین میره.

کافیه یه بار دیگه فکر کنید و الگوریتم تون رو عوض کنید، مساله رو همیشه به شکل ساده تر حل کنید بعد بسطش بدین مثلا فرض کنید الان میخواین یه برنامه بنویسید که 3 تا عدد رو از ورودی بخونه و دومین عدد بزرگتر رو چاپ کنه.

پس فعلا این سه مطلب تو ذهنتون باشه اول خوب خوندن مساله دوم اگر براتون سخت بود یا درست جواب نداد به مساله کوچکتری تقسیمش کنید، سوم trace کردن.

shekoofeh14
05-08-2013, 11:24
اگر یه حالتی مثل ذخیره ایجاد نشه چطوری میتونه بین اعداد مقایسه انجام بده و توی سوالم گفته پیدا کنه(هیچ ترتیبی وجود نداره) ؟؟ به مسائل کوچیک تقسیمش کردم و تونستم برنامه ای بنویسم که فقط ماکسیمم مطلق رو پیدا کنه ولی دومین ماکسیمم نشد!!

Expert32
05-08-2013, 17:03
اینو خودت 3/4 بار ببینی با دقت میفهمی چی بچیه.
این فقط عدد میگیره و بزرگ و بزرگترین رو نشون میده و شماره دانشجویی نداره.
من نمیدونم این جعفر نژاد چی از جون این دانشجوها میخواد اه اه.

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

Algo.Bits
05-08-2013, 22:44
اگر یه حالتی مثل ذخیره ایجاد نشه چطوری میتونه بین اعداد مقایسه انجام بده و توی سوالم گفته پیدا کنه(هیچ ترتیبی وجود نداره) ؟؟ به مسائل کوچیک تقسیمش کردم و تونستم برنامه ای بنویسم که فقط ماکسیمم مطلق رو پیدا کنه ولی دومین ماکسیمم نشد!!

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

Algo.Bits
05-08-2013, 22:49
اینو خودت 3/4 بار ببینی با دقت میفهمی چی بچیه.
این فقط عدد میگیره و بزرگ و بزرگترین رو نشون میده و شماره دانشجویی نداره.
من نمیدونم این جعفر نژاد چی از جون این دانشجوها میخواد اه اه.

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

ولی اگر بفرض صورت مساله بجای معدل دانشجویان مقایسه اعداد حقیقی باشه و شامل منفی هم باشه برنامه شما درست کار نمیکنه. یعنی اگر بفرض به این برنامه 5- ، 22- و 24 بدیم 5- رو جواب نمیده.

shekoofeh14
06-08-2013, 11:01
فکرکنم درست شد! *نکتش این بود که اولین ورودی هم ماکسیمم مطلقه هم دومین ماکسیمم!

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

Expert32
06-08-2013, 16:29
ولی اگر بفرض صورت مساله بجای معدل دانشجویان مقایسه اعداد حقیقی باشه و شامل منفی هم باشه برنامه شما درست کار نمیکنه. یعنی اگر بفرض به این برنامه 5- ، 22- و 24 بدیم 5- رو جواب نمیده.
اصلا شما بگو اعداد نجومی بجای معدل, مهم نیست! یه الگوریتم سادست 2 تا دونه مقایسه ساده داخلشه! دیگه این کلا چی هست که بخواد رو مثبت درست باشه رو منفی غلط؟؟!
من 20 بار اعدادی که نوشتین رو تست کردم در حالات مختلف و هیچ مشکی وجود نداشت. تنها چیزی که هست و مهم نیست اینه که مقدار اولیه متغییر ها 0 هست که میشه براحتی تغییرش داد.
فایل باینری:
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]

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

shekoofeh14
06-08-2013, 21:31
ممنون از توصیه هاتون! اگه موافق باشیدسوال بعدی: برنامه ای بنویسید که یک عدد اعشاری مثل 643.21 را خوانده، وارون آن را بیابد. وارون این عدد 12.346 است. ( برنامه وارون عدد صحیح میتونم بنویسم ولی با اعشار نتونستم)

Algo.Bits
06-08-2013, 21:43
اصلا شما بگو اعداد نجومی بجای معدل, مهم نیست! یه الگوریتم سادست 2 تا دونه مقایسه ساده داخلشه! دیگه این کلا چی هست که بخواد رو مثبت درست باشه رو منفی غلط؟؟!
من 20 بار اعدادی که نوشتین رو تست کردم در حالات مختلف و هیچ مشکی وجود نداشت. تنها چیزی که هست و مهم نیست اینه که مقدار اولیه متغییر ها 0 هست که میشه براحتی تغییرش داد.
فایل باینری:
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]

شدیدا مخالفم. بهترین راه تو هر کاری نه فقط برنامه نویسی اینه که شما نمونه های مختلف رو ببینید و ایده بگیرید.
یه کتاب (آموزش هر علومی که تو جهان شناخته شده) به من نشون بدید که داخلش مثال و نمونه نباشه!
یه معلم روی کره زمین به من معرفی کنید که بدون هیچ مثال و نمونه جوابی درس بده بعدشم امتحان بگیره!
....

شما اصلا متوجه منظورم نشدین منظور من اصلا این نبود که مثال بده! مسلما هر کتاب برنامه نویسی باید کلی مثال درش باشه، اما منظور این بود که در حل تمرین و نوشتن برنامه اگر کسی به مشکل خورد بخصوص اگر کسی که میخواد از پایه و ابتدا الگوریتم و برنامه نویسی یادبگیره اگر بجای اینکه بهش راهنمایی کردکه خودش برنامه رو بنویسه بهش مستقیما جواب یا سورس کد داد به ضررشه اینجوری بجای اینکه خودش فکر کنه و کد بزنه و بهتر یاد بگیره صرفا به جواب یکنفر دیگه رسیده، توصیه من به ایشون برای این بود که سورس رو نگاه نکنه. برنامه شما هم سورس نداشت یه فایل exe بود که OS من اصلا exe اجرا نمیکنه به هر حال اگر تست کردین درسته حتما درسته دیگه چون خیلی چیز ساده ییه...

mehrdad_joon
07-08-2013, 11:25
ممنون از توصیه هاتون! اگه موافق باشیدسوال بعدی: برنامه ای بنویسید که یک عدد اعشاری مثل 643.21 را خوانده، وارون آن را بیابد. وارون این عدد 12.346 است. ( برنامه وارون عدد صحیح میتونم بنویسم ولی با اعشار نتونستم)

كجاش مشكل داري؟


Mehrdad Sh.

shekoofeh14
07-08-2013, 11:45
با اعشار بلد نیستم وارون چطور بدست میاد! باید برنامه طوری نوشته بشه که قبل و بعد اعشار را جداگانه تشخیص بده؟

mehrdad_joon
08-08-2013, 17:29
با اعشار بلد نیستم وارون چطور بدست میاد! باید برنامه طوری نوشته بشه که قبل و بعد اعشار را جداگانه تشخیص بده؟

آره.
براي بدست اوردن تعداد ارقام اعشار،اون عدد رو تا زماني كه اعشارش برابر صحيحش نشده در ده ضرب كن.
براي بدست آوردن تعداد ارقام صحيح ،عدد رو تا زماني كه مقدار صحيحش صفر نشده بر ده تقسيم كن.
براي ادامه راههاي متفاوتي وجود داره.
خودت روش فكر كن چون چيزي نيست كه نتوني ؛)


Mehrdad Sh.

shekoofeh14
12-08-2013, 11:26
دوستان متاسفانه نتونستم حلش کنم! بعداز اعشار و قبل از اعشارو مثل دوتا عدد جدا برخورد میکنه و وارونشون میکنه! ولی اعشار یعنی نقطش درست بین اعداد قرار نمیگیره! !

mehrdad_joon
12-08-2013, 12:47
دوستان متاسفانه نتونستم حلش کنم! بعداز اعشار و قبل از اعشارو مثل دوتا عدد جدا برخورد میکنه و وارونشون میکنه! ولی اعشار یعنی نقطش درست بین اعداد قرار نمیگیره! !

ميشه الگوريتم يا همون روش حل مسئله تون رو توضيح بديد؟


Mehrdad Sh.

sara_program
12-08-2013, 20:01
سلام
پیشنهاد اول من: کتاب جعفر نژاد نخونید
پیشنهاد دوم من: رفرنس بخونید

این هم راه حل

#include<stdio.h>
#include<conio.h>
#include<iostream.h>
#include<string.h>
#include<stdlib.h>
void main()
{
int man,exp;
char ch;
wrong:
cout<<"the floating value";
cin>>man>>ch>>exp;
if(ch!='.')
{
cout<<"wrong floating value\n";
goto wrong;
}
char str[5];
itoa(exp,str,10);
char str1[5];
itoa(man,str1,10);
cout<<"the reverse of given float is "<<strrev(str)<<ch<<strrev(str1);
getch();
}

برنامه را در word کپی کنید تا درست بشه.

sara_program
12-08-2013, 20:03
این هم یه برنامه دیگه

#include<stdio.h>
#include<conio.h>
main()
{
float num,num1;
long float reverse=0l;
clrscr();
printf("enter a number\n");
scanf("%d",&num);
num1=num;
while(num1=0)
{
reverse=reverse*10+num%10;
num/=10;
}
printf("image of %f=%lf \n",num1,reverse);
}

سوالی بود بپرسید. ضمنا به نظر من شما در حال حاضر الگوریتم نویسی را تقویت کنید نه کد نویسی

shekoofeh14
13-08-2013, 20:40
شیش واحد برنامه نویسی و ساختمان داده هم پاس کردم! و کتاب های دیگه خوندم ولی بنظرم خوب نبوده! (خیلی از کدهارو نمیدونستم چرا وچطوری نوشتن! توضیحاتشون سخته) و حالا تابستان میخوام از اول پایه ای بخونم و بنظرم سه فصلی که از کتاب آقای جعفر نژاد خوندم خیلی مفیدتر از اون دوترمی بود که برنامه نویسی خوندم!

sara_program
13-08-2013, 21:36
اگر قصدت اینه که بشینی و کد نویسی یاد بگیری. من رفرنسهای خیلی خوبی می تونم بهت پیشنهاد بدم. من اصلا کتاب جعفر نژاد را توصیه نمی کنم . کتابهای دیگه را بخون ببین دنیا روزگار دست کیه

حالا چرا c++ ? الان جاوا بیشتر بدردت می خوره. خیلی شبیه به C هستش ولی با مفهوم شی گرایی

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

اینم بهت بگم: اگه یاد بگیری الگوریتم عدد اول ، ماکسیمم، مینیمم، فاکتوریل و ... را بنویسی به هیچ عنوان بدردت نمی خوره

اصلا یاد گیری c با این چیزا نیست. منتها چون برنامه های راحتی هستند و زود یادشون می گیری کلی ذوق می کنی که برنامه نویسی یاد گرفتی. رفرنسی که بهت میدم علم مهندسی نرم افزار بهت

یاد می ده که بدون استفاده از کاغذ و قلم بتونی الگوریتمو توی ذهنت بیاری

shekoofeh14
13-08-2013, 23:24
ترجیح میدم فعلا c++ رو یاد بگیرم! تو این زمینه چی پیشنهاد میکنید؟ میخوام از ابتدا از برنامه های کوچیک شروع کنم و هیچ سوالی تو ذهنم نمونه که برای برنامه ها بزرگ گیج بشم! مثلا من نمیدنم چرا هدر #include<conio.h> ? یا فرق cout و printf? این ها سوالات ابتدایی هستند که تو کتاب ها ندیدم ولی تا حدودی با خوندن این کتاب جواب بعضی سوالامو پیدا کردم!

sara_program
14-08-2013, 10:18
این لینک فیلم آموزشی C++


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

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

حجم 68 مگ

================================================== =========================

یا لینک عالی زیر. کامل آموزش C++ را در قالب فایلهای فلش داره


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

================================================== ==========================

اگر با این کتاب احساس راحتی می کنید اصراری ندارم که بذاریدش کنار. آرزوی موفقیت براتون دارم

mehrdad_joon
14-08-2013, 15:04
سلام
پیشنهاد اول من: کتاب جعفر نژاد نخونید
پیشنهاد دوم من: رفرنس بخونید

این هم راه حل

#include<stdio.h>
#include<conio.h>
#include<iostream.h>
#include<string.h>
#include<stdlib.h>
void main()
{
int man,exp;
char ch;
wrong:
cout<<"the floating value";
cin>>man>>ch>>exp;
if(ch!='.')
{
cout<<"wrong floating value\n";
goto wrong;
}
char str[5];
itoa(exp,str,10);
char str1[5];
itoa(man,str1,10);
cout<<"the reverse of given float is "<<strrev(str)<<ch<<strrev(str1);
getch();
}

برنامه را در word کپی کنید تا درست بشه.

عزيز كد رو من هم ميتونستم بزارم،مهم اينه كه بتوني كمكش كني خودش بنويسه.
در ضمن ايشون هنوز آرايه رو مطالعه نكردن.


Mehrdad Sh.

sara_program
14-08-2013, 21:34
عزيز كد رو من هم ميتونستم بزارم،مهم اينه كه بتوني كمكش كني خودش بنويسه.
در ضمن ايشون هنوز آرايه رو مطالعه نكردن.


Mehrdad Sh.

من با فیلمهایی که گذاشتم سعی کردم خودش بخونه و یاد بگیره. بعدش من از کجا بدونم که آرایه خونده یا نه. من موافق این نیستم که همه گره های ذهنی توی کد نویسی را براشون باز کنم. اگر خودش بتونه باز کنه به نفعشه

ولی باشه به خاطر توصیه شما من شخصا تصمیم گرفتم درباره این سوال فایل آموزشی تهیه می کنم. من توی برنامه نویسی سخت گیر تر از شما هستم شاید شما درست می گین
برنامه نویسی C پر از ابهام و نکته و باگ هستش برای همین هم باید شخصا خونده بشه

به هر حال ممنون

shekoofeh14
19-08-2013, 11:47
من نمیدونم چه موقع از توابعی که مقداری برمیگردانند استفاده کنم و چه موقع توابعی که هیچ مقداری را برنمگردانند!! لطفا راهنماییم کنید!
مثلا این سوال ساده! برنامه ای بنویسید که دو مقدار را برحسب فوت و اینچ دریافت کرده معادل آنرا برحسب متر و سانتی متر بیان کند.حداقل از 3 تابع استفاده کنید،یکی برای ورودی یکی برای انجام محاسبات و دیگری برای خروجی.
اینجا نمیدونم مثلا خروجی چه تابعی میخواد

samasara
19-08-2013, 19:02
دوست عزیز اینجا هر بخش دارای تاپیک های می باشد که اگر سوال های خودتون رو داخل نزدیک ترین اون ها به سوالتون, بنویسید خیلی بهتر است ..

اما درباره با سوالتون باید گفت که تبدل مقادیر نه هم یک رابطه ی ریاضی هست : 1 اینچ تقریبا 2.5 سانتی متر هست و 1 فوت هم تقریبا اگر اشتباه نکنم 30.5 ساتی متر هست.

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

اما یک قانون نا نوشته ای هست که میگه دستور های خروجی و چاپ نیازی به مقدار تابع ندارند ..(در مواردی که نیاز به بررسی درستی انجام عملی خزوجی می باشد باید توابع خروجی مقداری رو برگردانید)

تابع دریاقت دیتا هم میتواند بدون خروجی در نظر گرفته شود و هم یا خروجی باز هم بستگی به برنامه نویس دارد

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

در هر صورت میتوان برنامه ای را با چندن راه نوشت ..

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

shekoofeh14
19-08-2013, 20:14
این تاپیک درباره ی تمرین های کتاب c++ تالیف آقای جعفر نژاد هستش! و سوالا های من همین مورد هست! و در باره سوال: میدونم فرمول تبدیل کردنش چیه! سوالم اینه چه موقع از توابعی مثل void استفاده میشه که هیچ مقداری رو برنمیگردانند!

Hapoofesgeli
19-08-2013, 21:04
این تاپیک درباره ی تمرین های کتاب c++ تالیف آقای جعفر نژاد هستش! و سوالا های من همین مورد هست! و در باره سوال: میدونم فرمول تبدیل کردنش چیه! سوالم اینه چه موقع از توابعی مثل void استفاده میشه که هیچ مقداری رو برنمیگردانند!

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

"mohammad"
20-08-2013, 11:57
سلام
منم هستم
اینم برنامه:
(فقط بجای خط ، خط تیره گذاشتم (اصلا بدون استفاده از گرافیک میشه تو ++c خط کشید؟ ، فک نکنم))
#include<iostream>
using namespace std;
void main()
{
float h;
cout << "x\tx*10\tx*100\tx*1000\n------------------------------\n" ;
for(int j=1;j<=3;j++)
{
h= (float) j/10;
for(int i=1;i<=4;i++)
{
h=h*10;
cout << h << "\t" ;
}
cout << "\n" ;
}
cin.get();
}

"mohammad"
20-08-2013, 12:02
برنامه ای بنویسید که خروجی زیر را دقیقا به همین شکل تولید کند: (برای این سوال اون خط و بالای خط رو نمیدونم چطور تولید کنم!!)



[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]






سلام
منم هستم
اینم برنامه:
(فقط بجای خط ، خط تیره گذاشتم (اصلا بدون استفاده از گرافیک میشه تو ++c خط کشید؟ ، فک نکنم))
#include<iostream>
using namespace std;
void main()
{
float h;
cout << "x\tx*10\tx*100\tx*1000\n------------------------------\n" ;
for(int j=1;j<=3;j++)
{
h= (float) j/10;
for(int i=1;i<=4;i++)
{
h=h*10;
cout << h << "\t" ;
}
cout << "\n" ;
}
cin.get();
}

"mohammad"
20-08-2013, 12:04
اینم برنامه:
(فقط بجای خط ، خط تیره گذاشتم (اصلا بدون استفاده از گرافیک میشه تو ++c خط کشید؟ ، فک نکنم))
#include<iostream>
using namespace std;
void main()
{
float h;
cout << "x\tx*10\tx*100\tx*1000\n------------------------------\n" ;
for(int j=1;j<=3;j++)
{
h= (float) j/10;
for(int i=1;i<=4;i++)
{
h=h*10;
cout << h << "\t" ;
}
cout << "\n" ;
}
cin.get();
}

shekoofeh14
20-08-2013, 12:55
سلام
منم هستم
اینم برنامه:
(فقط بجای خط ، خط تیره گذاشتم (اصلا بدون استفاده از گرافیک میشه تو ++c خط کشید؟ ، فک نکنم))
#include<iostream>
using namespace std;
void main()
{
float h;
cout << "x\tx*10\tx*100\tx*1000\n------------------------------\n" ;
for(int j=1;j<=3;j++)
{
h= (float) j/10;
for(int i=1;i<=4;i++)
{
h=h*10;
cout << h << "\t" ;
}
cout << "\n" ;
}
cin.get();
}



سلام! میشه به جای خط تیره ، آندرلاین بزارید_ مثل خط میشه. منم جوردیگه این برنامه نوشتم! صفحه2 پست 13.

"mohammad"
20-08-2013, 16:37
سلام! میشه به جای خط تیره ، آندرلاین بزارید_ مثل خط میشه. منم جوردیگه این برنامه نوشتم! صفحه2 پست 13.
روش جالبی بود ، آندرلاینم امتحان کردم
اگه همچنان با جعفر نژاد پیش میرید بگید الان کجا رسیدید منم خودمو برسونم

shekoofeh14
20-08-2013, 17:53
تا فصل 3. تقریبا هم تمرین هاشو حل کردم! تمرین هایی که اشکال داشتم اینجا با کمک دوستان حل کردیم!

sara_program
20-08-2013, 23:46
من نمیدونم چه موقع از توابعی که مقداری برمیگردانند استفاده کنم و چه موقع توابعی که هیچ مقداری را برنمگردانند!! لطفا راهنماییم کنید!
مثلا این سوال ساده! برنامه ای بنویسید که دو مقدار را برحسب فوت و اینچ دریافت کرده معادل آنرا برحسب متر و سانتی متر بیان کند.حداقل از 3 تابع استفاده کنید،یکی برای ورودی یکی برای انجام محاسبات و دیگری برای خروجی.
اینجا نمیدونم مثلا خروجی چه تابعی میخواد

ببین شکوفه جان:

مثال بزنی بهتره
1- ورودی: 2 فوت و 3 اینچ!
کامپیوتر فقط داره عدد میگیره باید بفهمه که فوت بهش دادی یا اینچ.
پس قطعا گزینه ای هست (مثلا منوی کشویی) که اندازه را میشه انتخاب کرد
پس شد سه تا تابع:
ورودی : 2 و 3
محاسبات: شناخت فوت و اینچ در ورودی
خروجی: تبدیل واحد و چاپ

sara_program
20-08-2013, 23:50
شکوفه جان. منبع لاتین کتاب جعفر نژاد چیه؟ همون رو اینجوری که میگم سرچ بزن:
manual solution for esme ketab

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

shekoofeh14
21-08-2013, 20:56
آخر کتاب چندتا منبع نوشته! مثل how to program دایتل اند دایتل.

sara_program
21-08-2013, 21:40
اینم حل المسائل


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

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

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

samasara
21-08-2013, 22:51
من نمی خواستم داخل این بحث شرکت کنم اما بهترین منبع برای یاد گیری c++ 2 تا کتاب هست یکی دایتل و دیگری++ structured programming with c هست . که یکی از دوستان حدود 2 سال پیش(که در حال طراحی گیم انجین هستند) به من توصیه کرد
اما اگر داری برای مسابقات acm اماده میشید بهتره همین اول کتاب Art of Programming Contest SE for uva شروع کنید چون بعدا دچار مشکلتو میکنه حد اقل که برای ما اینجوری بود.

"mohammad"
21-08-2013, 23:37
تو صفحه اصلی c سوالی پرسیدم (فرق endl با n\) که با جواب هایی که دوستان دادن زیاد قانع نشدم یکی از جواب ها رو هم زیاد نگرفتم چی به چیه ، کسایی که تو این تاپیک شرکت میکنن یه نگاهی به اون پست بندازن و لطفا جواب بدن.
اما یه سوال ریز:(وقتی cin.get() استفاده میکنم صفحه ی اجرا سریع بعد از اجرای "you entered :" << str بسته میشه در حالی که با getch() مشکلی پیش نمیاد)

#include<iostream>
#include<string>
#include <conio.h>
using namespace std;
void main()
{
string str;
cin >> str;
cout << "you entered :" << str;
_getch ???? cin.get();
}

sara_program
22-08-2013, 14:48
دوست گرامی بین getch با cin.get کلی فرق وجود داره
حتی بین getch با getche هم تفاوت وجود داره

پیشنهاد من به شما کتاب برنامه نویسی مدرسان شریفه. تمامی نکات را طبقه بندی کرده

"mohammad"
22-08-2013, 15:56
دوست گرامی بین getch با cin.get کلی فرق وجود داره
حتی بین getch با getche هم تفاوت وجود داره

پیشنهاد من به شما کتاب برنامه نویسی مدرسان شریفه. تمامی نکات را طبقه بندی کرده
اگه یه توضیحی در مورد getch و cin.get بدید ممنون میشم(getch و getche رو میدونم)

mehrdad_joon
24-08-2013, 13:03
تو صفحه اصلی c سوالی پرسیدم (فرق endl با n\) که با جواب هایی که دوستان دادن زیاد قانع نشدم یکی از جواب ها رو هم زیاد نگرفتم چی به چیه ، کسایی که تو این تاپیک شرکت میکنن یه نگاهی به اون پست بندازن و لطفا جواب بدن.
اما یه سوال ریز:(وقتی cin.get() استفاده میکنم صفحه ی اجرا سریع بعد از اجرای "you entered :" << str بسته میشه در حالی که با getch() مشکلی پیش نمیاد)

#include<iostream>
#include<string>
#include <conio.h>
using namespace std;
void main()
{
string str;
cin >> str;
cout << "you entered :" << str;
_getch ???? cin.get();
}


فرق endl با /nدر نحوه ي پياده سازي است./n چهار الي ١٠ برابر سريعتر كامپايل و اجرا ميشه.قبلا مفصل تر در تاپيك سوالات مبتديان توضيح دادم .
منابع زبان سي هم زياد هستند و هركسي يك منبعي رو ترجيه ميده.
كتاب آقاي جعفر نژاد تقريبا جم و جور شده ي سي رو با بياني تقريبا واضح! در كتابش توضيح داده.دايتل كاملتر و مفصلتر وارد مسائل شده.منابع كاملتري هم هستند ولي دايتل ترجمه ي آقاي زماني منبع خوبي براي شروع هست.
در ضمن،اين تاپيك مختص سوالات كتاب جعفر نژاد قومي درست شده،پس وارد حاشيه لطفا نشيد.

Mehrdad Sh.

Algo.Bits
27-08-2013, 01:02
من نمیدونم چه موقع از توابعی که مقداری برمیگردانند استفاده کنم و چه موقع توابعی که هیچ مقداری را برنمگردانند!! لطفا راهنماییم کنید!
مثلا این سوال ساده! برنامه ای بنویسید که دو مقدار را برحسب فوت و اینچ دریافت کرده معادل آنرا برحسب متر و سانتی متر بیان کند.حداقل از 3 تابع استفاده کنید،یکی برای ورودی یکی برای انجام محاسبات و دیگری برای خروجی.
اینجا نمیدونم مثلا خروجی چه تابعی میخواد
شما مبحثی که دارید می خونید الان یعنی توابع، اهمیتش دقیقا به اندازه جدول ضرب در ریاضی هست، درسته که جدول ضرب اولش سخته اما دونستنش هم خیلی ضروریه هم به طور روزمره استفاده میشه و هم پایه و اساس ریاضیه، شما اگر خوب تابع رو یاد بگیرید بعدا مفهوم کلاس و شی گرایی و نوشتن متد ها هم براتون راحتتر میشه و در واقع یاد میگیرید که چجوری ماژول بنویسید و برنامه تون رو به قطعات و کامپونت های کوچکتر و قابل استفاده در برنامه های آینده تبدیل کنید، بنابراین نهایت سعی رو باید در این مبحث بکنید. در عین حال اگر دانشجوی کامپیوتر هستید یادگیری توابع بازگشتی خیلی جاها می تونه در ابدعا کردن الگوریتمها بشما کمک کنه پس تا این فصل رو یاد نگرفتین فصل بعدی نرید.

ببینید بذارید اینجوری بگم شما دوتا چیز رو دارید با هم اشتباه میکنید اول مفهوم خروجی داشتن، دوم تعریف تابع ریاضی و تفاوت آن با تابع در برنامه نویسی سی.

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

و دوم اینکه شما نباید تابع به مفهوم تعریف ریاضی اش ،یعنی چیزی که یک سری ورودی میگیره و حتما حداقل یک خروجی دارد، با تابع در برنامه نویسی C اشتباه کنید در برنامه نویسی سی بعضی توابع خروجی ندارند که این با تعریف تابع در ریاضی در واقع نمی خونه و این مشکل از تعریف گذاری سی هست زبانهای دیگه در واقع اینطور نیستند، پس بذارید اینجوری تعریف کنم:

ما در واقع دوجور قطعه کد یا Subroutine داریم قطعه کد ها یا Subroutine ها یکسری وظایف خاص را برای ما انجام میدن و ما بر اساس نیازمون اونها را می نویسیم و فراخوانی میکنیم و خوبی این قطعات کد اینه که میتونیم بعدا اونها در برنامه های دیگه استفاده کنیم و از چند بار نوشتن قطعات کد خوداری کنیم (مثلا اگر شما یک قطعه کد نوشتین که یک عدد رو میگیره و فاکتوریل رو محاسبه و بر میگردونه می تونید این قطعه کد رو بعدا در یک برنامه که میخواد از عدد 1 تا عدد 5 فاکتوریل رو بگیره استفاده کنید)، فرق اصلی این دوجور قطعه کد در واقع در مقدار بر گرداندن یا بر نگرداندن و خروجی داشتن یا نداشتن اونهاست(خروجی رو هم که بالا توضیح دادم منظور چاپ کردن صرفا نیست)، در واقع اونی که یک سری کار رو انجام میده و حتما خروجی داره(یعنی مقداری را بر می گرداند) تابع (Function) هست و اونی که یک سری کار رو انجام میده اما مقداری رو بر نمیگرداند را بهش میگیم روال(Procedure) در واقع سئوال شما باید اینطور باشه که چه موقعه باید روال بنویسم و چه موقعه باید تابع بنویسم؟ جواب اینه که هر وقت شما نیاز به انجام محاسبه یا اعمال تغیرات روی یک داده رو دارید و باید این نتایج رو قطعه کد شما پس بده بصورت یک متغیر به متن اصلی برنامه اید تابع بنویسید، مثلا محاسبه قدر مطلق یا ()abs یا محاسبه توان توسط تابع ()pow ،هر وقت قطعه کد باید یکسری کار روتین و یا تکراری و پشت سر هم رو باید انجام بده بدون اینکه در قالب یک متغیر مقداری رو به متن اصلی برنامه بر گردونه، میشه روال ( یا همون تابع بدون خروجی void) مثل همین cin یا cout یا clrscr که صفحه رو پاک میکنه.

حالا می تونید یک برنامه بنویسید که با استفاده از تابع و روال n عدد از ورودی گرفته معدل اونها رو حساب کنه.

Algo.Bits
27-08-2013, 02:17
اما در مورد جزوه (مثلا کتاب) جعفر نژاد قمی، خوشبختانه چون دانشگاه ما دانشگاه بود این جزوه ایشون، کتاب درسی دانشگاه ما نبود! و من بعدا فهمیدم که در تمام دانشگاه های آزاد و غیر دولتی این جزوه متاسفانه شده کتاب مرجع، ایشون تا جاییکه که من شنیدم زحمت ترجمه کتاب رو دادند به دانشجویان بابلی شون من بر حسب اتفاق ده سال قبل یعنی سال 82 این کتاب رو خریدم که یک کتاب فارسی هم داشته باشم در کامل تعجب بعد از چند صفحه دیدم تمرینات کتاب این نویسنده(!) محترم در واقع مثالهای کتاب انگلیسی بود که من اون زمان میخوندم!!! اتفاقا یکی از دوستان من هم یک چاپ قدیمی تر از کتاب ایشون که ناشر جهاد دانشگاهی بود رو داشت من اون کتاب رو هم که مقایسه کردم دیدم حتی اون کتاب چاپ قدیمی تر هم بعضی از مثال هاش تبدیل به تمرینات کتاب جدید ایشون شدن، دلیلش هم ساده است براینکه این اثر ترجمه شده توسط دانشجویان ایشون بشه کتاب درسی نیاز به داشتن تمرینات آخر فصل بوده خب ایشون هم احتمالا وقت طراحی سئوال نداشتن بنابراین مثال های ویرایش قبلی رو کردن تمرین اینجوری حجم کتاب هم کمتر شد! طبعا کسی خودش کتاب رو نمی نویسه تمرینش هم طراحی نمیکنه.

در مورد منبع خوب برای یادگیری ++C ، باید دید هدف و کاربرد نهایی آموزنده چیه و سطح آموزنده چقدره، در کل تا جایی که من میدونم سه دسته ممکنه بخواهند برند به سمت ++C دسته اول کسانی که میخواهند در مسابقات برنامه نویسی شرکت کنند و بچه های المپیاد و سمپاد که online judge اونا شاید ++C هست، دسته دوم کسانی که برنامه نویسی بلد هستند یا بخاطر کامپایلر یا بخاطر سرعت و engine بازی یا بخاطر کار های سیستمی صرفا تغیر syntax بدن به ++C و می دونن که قراره استاندارد ++C به زودی تغیر کنه و دسته سوم کسانی که میخوان برنامه نویسی رو تازه شروع کنند و شاید دانشجوی کامپیوتر هستن، خب بالطبع برای هر دسته منبع جداگانه ای هست.

برای دسته اول، خوب این دسته وقتشون رو بیشتر باید برای مسائل تئوری المپیاد باید بذارن و چون وقتشون کمه باید یک کتاب خیلی کم حجم اما مثال دار و کاربردی بخونن کتاب فقط250 صفحه است و میشه تو یک هفته کلکش رو کند:n09:
Accelerated C pluse pluse practical programming by example
این کتاب از سری ++C انتشارت Addison Wesley هست که ادیتور این سری کتابها خود سازنده ++C یعنی Bjarne Stroustrup هست؛ در کنار این کتاب The Practice of Programing هم پیشنهاد میشه به نوعی هم مکلمل چیزای تئوری المپیاد اما در عمل هست، مثل تمیز نوشتن کد، طراحی، دیباگ کردن، تست کردن، الگوریتمها و ... اینم خیلی کم حجمه در حدود 200 صفحه بیشتر نصیحت و توصیه هست، نویسنده این کتاب Brian Kernighan استاد دانشگاه پرینستون و یکی از سازنده های C هست:n23:

دسته دوم، خب این دسته برنامه نویسی بلد هستن اما نیاز به یک کتاب رفرنس برای ++C دارند یا اینکه برای یک کار خاص نیاز به ++C دارند یا با STL کار دارند:
برای رفرنس کلی دوتا کتاب بنظرم خوبن یکی The C++ programming langauge که نوشته خود سازنده این زبان یعنی Bjarne Stroustrup هست این کتاب گرامر هم داره که برای بعضی دانشجو ها ممکنه توی درس کامپایلر مفید باشه.
یکی کتاب The complete refrence C++ نوشته Herbet Schildt طبعا این کتابها رفرنس تکنولوژیک هستن و تمرین و ... ندارند.
برای STL هم STL Tutorial and refrence guide از انتشارت Addison Wesley ،یک کتاب دیگه هم بود که متاسفانه الان اسمش یادم نیست ولی تو آمازون سرچ کنید قاعدتا باید بیاد.
برای کاربرد های خاص هم همین Addison Wesley یک سری داره به اسم C++ in depth که ادیتورش Bjarne Stroustrup و تقریبا برای هر موضوع مرتبطی با این زبان برنامه نویسی یه کتاب کوچیک دارند.

اما دسته سوم دانشجویان و افرادی که تازه میخوان یاد بگیرن، خب اگر راستش رو بخواید برای شروع برنامه نویسی اصلا ++C زبان خوبی نیست بنا به دلایل فراوان که جاش اینجا نیست، اما اگر مجبورید هیچ مساله ای نیست حالا افراد دو دسته هستند: یا انگلیسی بلد هستن و یا قوی نیست انگلیسشون ولی اراده قوی دارند! و دسته دوم اینکه به هیچ وجه نمیخوان کتاب انگلیسی بخونند، برای دسته اول کتاب How to program نوشته دایتل و دایتل خیلی خوبه و حتما تمریناتش رو هم حل کنید این کتاب رو اگر واقعا مچاله کنید راحت هم برنامه نویسی ها رو بیست میگیرید هم تا حدی ساختمان داده ها رو حداقل تا لینک لیست ها.
اما دسته دوم خب شما می تونید یک کتاب فارسی مثل ترجمه دایتل یا کتاب دکتر معینی دکتر پورپاک دانشگاه تهران و فیلم کلاس برنامه نویسی دانشگاه اصفهان رو ببینید هم فارسیه هم سطحش بد نیست، قبلا فیلمها اینجا بودن ([ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]) به همراه تمرینات میشد دانلود کرد اما مثل اینکه کپی شدن اینجا ([ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ])، برای دسته سوم خوندن یک کتاب الگوریتم و فلوچارت مثل کتاب ایرج صادقی هم پشنهاد میشه.

نکته مهم اینه که هیچ وقت با دیدن فیلم های آموزشی lynda یا چندین کتاب خوندن برنامه نویسی یاد نمی گیرید با برنامه نوشتن برنامه نویسی یاد میگیرید.

Algo.Bits
27-08-2013, 02:51
.برنامه ای بنویسید که دو مقدار را برحسب فوت و اینچ دریافت کرده معادل آنرا برحسب متر و سانتی متر بیان کند حداقل از 3 تابع استفاده کنید،یکی برای ورودی یکی برای انجام محاسبات و دیگری برای خروجی.

خب صورت مساله رو که بخونید می بینید که برنامه ما سه کار اصلی داره، پس حداقل سه بخش داریم، سعی میکنیم این سه کار رو به سه تا سابروتین Subroutine بدیم و تشخیص بدیم هر روتین مقدار برگشتی داره و باید تابع باشه یا نه باید فقط روال باشه(تابع void)،
اول دریافت اطلاعات رو داریم که این توسط یک روال(متغیر و مقدار خروجی نداریم پس تابع voidست)باید باشه.
دوم نوشتن تابع محاسبه و تبدیل مقدار فوت به متر، سوم نوشتن تابع محاسبه و تبدیل مقدار اینچ به سانتی متر(طبیعه هر دو اینها مقادیر ورودی دارند و محاسبه و تبدیل میکنند و طبعا مقدار و متغیر برگشتی دارند)

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

shekoofeh14
05-09-2013, 20:44
با راهنمایی ها پشیمون شدم این کتابو مطالعه کنم!! و کتاب های زبان اصلی که توصیه کردید شروع میکنم به مطالعه کردن! بیشتر دوست دارم با مثال های مختلف برنامه نویسی کنم! ولی بعضی مواقع هرکارمیکنم حل نمیشه و به کمک و راهنمایی دوستان نیاز دارم!

keyvan007
24-09-2015, 09:18
#include ([ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]) <iostream>
#include ([ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]) <string>


using namespace std;




int main() {

int st_id, max2_id, max1_id;
float avg, max1=0 , max2=0;
char answer='y';
while (answer== 'y')
{
cout << "\nStudent_ID: ";
cin >> st_id;
cout << "\nAverage: ";
cin >> avg;
if( avg > max2 && avg > max1 )
{
max2= max1;
max2_id= max1_id;
max1= avg;
max1_id= st_id;
}

else if( avg > max2 && avg < max1 )
{
max2=avg;
max2_id= st_id;
}

cout << "\nDo you want to continue (y/n)? ";
cin >> answer;
}
cout << "second maximum average= " << max2 << "\nStudent ID= " << max2_id;
cin.get();
}

edit shodeye barnameye khodetoon ye kocholoo taghir

agar javabe tamrinhaye ketab be dastetoon reside ya khodetoon anjam dadin
lotfan ba man be eshterak bezarin
ba sepas