صفحه 1 از 1

کسي ميتونه در مورد C کمکي بکنه؟؟؟

ارسال شده: شنبه ۷ بهمن ۱۳۸۵, ۵:۲۵ ب.ظ
توسط sos1846
سلام
من یه برنامه تو محیط C نوشتم که قراره 20 تا عدد رو بگیره و چاپ کنه و ترتیب صعودی یا نزولی بودنشو بگه اما وقتی کامپایلش میکنم error میده نمیدونم چکار کنم؟؟؟؟؟؟؟
کسی میتونه error هاشو رفع کنه؟؟

Please Login or Register to see this code

ارسال شده: شنبه ۷ بهمن ۱۳۸۵, ۶:۲۰ ب.ظ
توسط athlon64x2
سلام دوست عزيز

برنامه ايرادهاي بسيار اساسي داره که فراتر از مچ نبودن { .} ها است .

اصلا ساختاري براي دريافت 20 عدد و تبديل انها به int و قرار داده در يک ارايه وجود ندارد و در صورت ديباگ نمودن هم برنامه يک رشته 256 کاراکتري مثلا abnlajdsl;jkad;lsa دريافت ميکند که قرار است با numb[i]=0 to i(line); به 20 عدد تبديل شوند که علاوه بر اينکه چنين شکل دستور در سي غير مجاز است و غلط متد کار نيز درست نيست . وانگهي getline جزو iostream است و template based و در کتابخانه هاي سي که در include ذکر کرده ايد نيست . به تو رفتگي کد و هماهنگ نبودن شروع و پايان بلوک (حتما از يکي از دو روش در تمام کد پيروي کنيد روش ريچي يا استراستراپ) و نبود ساختار توجه نشده و ....

ارادتمند
نعيمي

ارسال شده: شنبه ۷ بهمن ۱۳۸۵, ۷:۵۴ ب.ظ
توسط sos1846
سلام
ممنون که جواب دادي اما چيزي که من از اين سوال ميخام اينه که 20تا کاراکتر از کيبورد ( به صورت random) بگيره بعد اونارو به ترتيب صعودي يا نزولي بودن مرتب کنه.
ميتوني کمکي کني که بتونم run کنم اين برنامه رو؟؟
با تشکر

ارسال شده: شنبه ۷ بهمن ۱۳۸۵, ۱۱:۴۱ ب.ظ
توسط athlon64x2
sos1846 نوشته شده:سلام
ممنون که جواب دادي اما چيزي که من از اين سوال ميخام اينه که 20تا کاراکتر از کيبورد ( به صورت random) بگيره بعد اونارو به ترتيب صعودي يا نزولي بودن مرتب کنه.
ميتوني کمکي کني که بتونم run کنم اين برنامه رو؟؟
با تشکر


سلام دوست خوبم

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


Please Login or Register to see this code

ارادتمند
نعيمي

ارسال شده: یک‌شنبه ۸ بهمن ۱۳۸۵, ۱۲:۴۰ ق.ظ
توسط Mahdi1944
athlon64x2 عزيز
ممنون از اينکه به سوالات دوستان با حوصله پاسخ مي ديد :D
براي جلوگيري از به ريختن فرمت، کدها رو در تگ code قرار بديد، کدهاي پست شما رو در تگ code قرار دادم
موفق باشيد :razz:

ارسال شده: یک‌شنبه ۸ بهمن ۱۳۸۵, ۵:۰۴ ق.ظ
توسط athlon64x2
Mahdi1944 نوشته شده:athlon64x2 عزيز
ممنون از اينکه به سوالات دوستان با حوصله پاسخ مي ديد :D
براي جلوگيري از به ريختن فرمت، کدها رو در تگ code قرار بديد، کدهاي پست شما رو در تگ code قرار دادم
موفق باشيد :razz:


Mahdi1944
دوست و سرور گرامي

از اينکه محبت کرديد و سورس کد رو مرتب فرموديد بي نهايت سپاسگزارم من متاسفانه از اين قابليت اديتور خبر نداشتم .

ارادتمند
نعيمي

ارسال شده: یک‌شنبه ۸ بهمن ۱۳۸۵, ۱۰:۱۲ ق.ظ
توسط sos1846
سلام باز هم ممنون از لطفتون اما اگر محبت کنيد و برنامه رو با همون debug قبلي بنويسيد متشکرم

ارسال شده: یک‌شنبه ۸ بهمن ۱۳۸۵, ۸:۲۴ ب.ظ
توسط athlon64x2
sos1846 نوشته شده:سلام باز هم ممنون از لطفتون اما اگر محبت کنيد و برنامه رو با همون debug قبلي بنويسيد متشکرم


سلام دوست گلم

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

ميبينيد که صرفا ديباگ ساده نيست. اگر خواستيد نعييرت رو اعمال کنيد و سپس گد رو ارسال کنيد يا دست من رو براي اعمال تغييرات مورد نظر باز بگذاريد

ارادتمند
نعيمي

ارسال شده: دوشنبه ۹ بهمن ۱۳۸۵, ۲:۵۱ ق.ظ
توسط athlon64x2
سلام

دوست عزيز اين ديگه حداقل تغييري است که ميشه در کد شما داد .

1. توجه کنيد که getline جزو iostream است و نيازمند c++ structured error handling که با منظور شما که برنامه C باشد مغايرت دارد.
2. فرموديد هدف شما دريافت 20 کاراکتر و نمايش مرتب آنهاست . در لوپ اول 20 بار رشته اي بطول 256 کاراکتر قابل تايپ شدن بود در صورتيکه اصلا نيازي به آرايه کاراکتر نيست و خود کاراکترها در زمان دريافت ميتوانند در ارايه int ذخيره شوند در سي برخلاف بيسيک کاراکتر يک بايت است يعني عدد است و اصلا نيازي به تبديل ندارد. اگر اصرار به دريافت رشته کارکتر داريد الزامي براي جلوگيري از buffer overflow خطر بايد مشابه سورس کدي که پيشتر فرستادم اقدام کنيد (در انجا سعي کردم الگوي شما رو حفظ کنم) که البته در کد نويسي تفاوت بسياري با کد اول شما خواهد کرد که مطابق خواست شما نبود.
3. گرفتن يک کاراکتر از ارايه 256 کاراکتري و ذخير کد اسکي که قاعدتا بايد اولين کاراکتر ميبوده اشتباه بود numb[i]=0 to i(line);
4. بجاي کاراکتر در انتهاي کار کد اسکي رو نشون ميداد
5. ضرورتي به الزام کاربر به تايپ کامل عبارت decreasing براي سورت معکوس چندان منطقي نبود (باگ نيست البته)
6. برنامه همانند بيسيک اجرايي خطي يا linear دارد که البته طبق فرمايش شما حفظ شد ولي همانطور که قبلا گفتم با اين رويه موافق نيستم چراکه سي زباني procedural است .
7. هنوز هم کاراکترها رو با فاصله يک tab پرينت ميکنه که کمي ناخواناست (با توجه به سورت شدن) بهتره زير هم و پياپي باشن که البته بازهم تصميم با شماست.


Please Login or Register to see this code

ارادتمند
نعيمي

ارسال شده: جمعه ۱۳ بهمن ۱۳۸۵, ۳:۳۸ ق.ظ
توسط borhan
سلام
من میخوام یه برنامه بنویسم که درخت B رو پیاده سازی کنه،تو پیاده سازیشم عملیات لازم روش انجام بده،از جمله حذف،اضافه،جستجو و پیمایش..
ضمنا اطلاعات رو از رو فایل بخونه...
اگه شما کدی با این رابطه دارین یا پیشنهادی برا من دارین ازتون میخوام منو راهنماییم کنین .. :(

ارسال شده: جمعه ۱۳ بهمن ۱۳۸۵, ۳:۵۶ ق.ظ
توسط athlon64x2
borhan نوشته شده:سلام
من میخوام یه برنامه بنویسم که درخت B رو پیاده سازی کنه،تو پیاده سازیشم عملیات لازم روش انجام بده،از جمله حذف،اضافه،جستجو و پیمایش..
ضمنا اطلاعات رو از رو فایل بخونه...
اگه شما کدی با این رابطه دارین یا پیشنهادی برا من دارین ازتون میخوام منو راهنماییم کنین .. :(


سلام دوست گرامي و عزيز

در مورد کد ميتونين سايت زير رو ببينين که پياده سازي خوب و مناسبي از b-tree به زبان c++ داره و از کتابخانه خاصي استفاده نکرده و اصلاحا پياده سازي pure هست که براي يادگيري عاليه.
[External Link Removed for Guests]

اين سايت هم اطلاعات خوبي در مورد مشخصات و بهينه سازي داره البته سورس کد به سي++ نيست
[External Link Removed for Guests]

در مورد پيشنهاد هم واقعا بسته به تبحر شما در کتابخانه هاي مختلف داره . 6 يا 7 کتابخانه سي و سي++ ميتونيد پيدا کنيد که پياده سازي استاندارد لينک ليست ها و tree ها و ... رو داشته باشن . مثلا من stl رو با اينکه خيلي انتزاعي تر بوده و فاقد tree هاست اما بخاطر ساختار استثنايي کلاس هاش به همه ترجيح ميدم و مثلا اگر بخوام btree درست کنم از mao يا با اکستند کردن iterator اون استفاده ميکنم.

براي خوندن از فايل هم بهتره از fstream استفاده کنيد ولي با c buffered هم کاملا امکانپذيره و مشکلي پيش نمياد چرا که با stdio , stout سر و کارندارين و فايل پويتنر جديد ميسازين اما در يک روتين دو روش رو مخلوط نکنيد . اگر به سمت stl رفتين به شدت fstream توصيه ميشه چرا که خيلي راحت stl براتون alloc/destroy رو انجام ميده و نيازي به مديريت حافظه نخواهيد داست .

ارادتمند
نعيمي