PDA

نسخه کامل مشاهده نسخه کامل : من رو در نوشتن يك برنامه ساده ياري كنيد (حل خطاها)



Ho$∑∫N
13-07-2008, 07:50
دوستان من اين برنامه رو به زبان c++ نوشتم ولي وقتي كامپايلر خواست كامپايل كنه ايراد گرفت. حالا شما ببينيد ايراد كار از كجاست و من چيكار بايد بكنم. كد برنامه :


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


خطاهاي كامپايلر :


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

rf.ariyapoor
13-07-2008, 10:12
سلام دوست عزیز
یه سری مشکلات برنامه شما داشت که تو زیر اوردم:
1.اول اینکه تو تعریف یه کلاس به متغییر های اون مقدار اولیه نمیدن .توجه بکن که این فقط یه تعریف از کلاس هست و تو این قسمت هیچ حافظه ای واسه کلاس در نظر گرفته نمیشه که شما بخوای به متغییر های اون مقدار اولیه بدی

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

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید3.متغییر total_class_grades رو دو بار تعریف کردی
4. آخر تعریف کلاس باید ; بذاری که نذاشتی
5. حلقه for تو تابع chart_class_grades () مشکل داره
6. تو خط 5 ام تابع main هم تابع set_class_name() آرگومان میگیره که شما نذاشتید
یکی 2 تا خطای دیگه هم بود که مربوط به syntax ها می شد خیلی از این خطا ها رو اگر یکی 2 بار کامپایل میکردی و به ذره دقت میتونستی پیداشون کنی چیزای خاصی نیستن

موفق باشی

Ho$∑∫N
13-07-2008, 10:20
خيلي ممنون . نمي‌دونم چطور تشكر كنم. مثل هميشه شما پاسه سوال هاي سطح پايين منو داديد.

Ho$∑∫N
13-07-2008, 10:47
من تغييراتي رو كه شما گفته بوديد اعمال كردم . كد برنامه :


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

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


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

من سازنده ها رو ياد گرفتم ولي نمي‌دونم چرا شما براي انتقال مقادير آرايه از اين كد استفاده كرديد. منظورم اين كد است :


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

ارور هايي كامپايلر :


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

rf.ariyapoor
13-07-2008, 23:44
وقتی که شماسازنده ساختید دیگه نیاز به این خط تو تعریف کلاس نیست:

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

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



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

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

پس شما باید این خط رو از تعریف کلاست برداری:


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

چون اینجا داری به اندازهclass_grades_numberحافظه میگیری



در واقع شما باید یه اشاره گر از نوعInt بسازی و تو سازنده بگی که به اندازه فلان قدر از نوعint واسه آرایه



حافظه بگیر.



class_grades_numberرو هم نمیدونم چراStatic تعریف کردی من از این حالت در اوردمش



دوست عزیز من سعی کردم که بفهمم برنامت چی کارمیخواسته بکنه و یه سری جا هاشو عوض کردم هنوز یه سری جاهاش اصلاح میخواد که اونا رو خودت درست کن



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




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