واضح آرشیو وب فارسی:سایت ریسک: egoldfars10-12-2007, 01:44 PMسلام این برنامه یه دفتر تلفن هست که نوشتم چند تا سوال دارم اگه ممکنه جواب بیدید............ این برنامه یه نام و تلفن و ایمیل میگیره و درون یه فایل ذخیره ممکنه.......... سوال اول؟ من میخوام درون تابع insert تا زمانی که flag=y هست این کار ادامه داشته باشه یعنی با فشار کارکتر y دوباره ورودی جدیدی بگیره و در غیر این صورت به menu برنامه برگردد ولی کارکتر قبول نمیکنه و مجبور شدم از نوع int استفاده کنمflag=1 و مقایسه عددی انجام بدم به چه دلیل قبول نمیکنه ................... سوال دوم؟ داخل یک تابع مگه نمیشه یه تابع دیگر رو صدا زد لطفا به قسمت تابع menu یه نگاهی کنید چون تابع show رو صدا نمیزنه راستی تابع show درست نوشتم. ممنون میشم راهنمایی کنید.......... !!!! برای مشاهده محتوا ، لطفا ثبت نام کنید / وارد شوید !!!! sherlockholmz10-12-2007, 05:18 PMسلام این برنامه یه دفتر تلفن هست که نوشتم چند تا سوال دارم اگه ممکنه جواب بیدید............ این برنامه یه نام و تلفن و ایمیل میگیره و درون یه فایل ذخیره ممکنه.......... سوال اول؟ من میخوام درون تابع insert تا زمانی که flag=y هست این کار ادامه داشته باشه یعنی با فشار کارکتر y دوباره ورودی جدیدی بگیره و در غیر این صورت به menu برنامه برگردد ولی کارکتر قبول نمیکنه و مجبور شدم از نوع int استفاده کنمflag=1 و مقایسه عددی انجام بدم به چه دلیل قبول نمیکنه ................... سوال دوم؟ داخل یک تابع مگه نمیشه یه تابع دیگر رو صدا زد لطفا به قسمت تابع menu یه نگاهی کنید چون تابع show رو صدا نمیزنه راستی تابع show درست نوشتم. ممنون میشم راهنمایی کنید.......... !!!! برای مشاهده محتوا ، لطفا ثبت نام کنید / وارد شوید !!!! سلام، خدمتتان عرض كنم وقتي شما flag را يك int تعريف كرده ايد،چطور توقع داريد كه برنامه بدبخت از شما flag را بصورت كاراكتر قبول كند؟:31: اگر مي خواهيد با كاراكتر تست كنيد شرط حلقه را به صورت زير تغيير دهيد: !!!! برای مشاهده محتوا ، لطفا ثبت نام کنید / وارد شوید !!!! و يا مثلا" تعريف كنيد:!!!! برای مشاهده محتوا ، لطفا ثبت نام کنید / وارد شوید !!!! و سپس در حلقه بنويسيد:!!!! برای مشاهده محتوا ، لطفا ثبت نام کنید / وارد شوید !!!! در مورد سوال دوم،شما بايد تابع صدا زننده را بعد از تابع صدا شونده بنويسيد. به عبارت ديگر بايد جاي تابعmenu و show را عوض كنيد مسئله حل است. موفق باشيد. egoldfars11-12-2007, 01:38 AMممنون از توجه شما آقای sherlockholmz ابنم کد اصلاح شده فقط یه ایراد داره اگر ممکنه یه راهنمایی کنید من محتوای فایل رو نمیتونم روی display نمایش بدم فقط اولین ورودی رو و اونم چند بار (داخل loop گیر میکنه تابع show ) آخه چه طوری میشه فهمید دیگه داخل فایل هیچ رکوردی نیست و به آخر رسیدیم .راستی برای جستجو داخل فایل به چه صورتی عمل کنیم................... بازم ممنون !!!! برای مشاهده محتوا ، لطفا ثبت نام کنید / وارد شوید !!!! sherlockholmz12-12-2007, 09:22 AMممنون از توجه شما آقای sherlockholmz ابنم کد اصلاح شده فقط یه ایراد داره اگر ممکنه یه راهنمایی کنید من محتوای فایل رو نمیتونم روی display نمایش بدم فقط اولین ورودی رو و اونم چند بار (داخل loop گیر میکنه تابع show ) آخه چه طوری میشه فهمید دیگه داخل فایل هیچ رکوردی نیست و به آخر رسیدیم .راستی برای جستجو داخل فایل به چه صورتی عمل کنیم................... بازم ممنون سلام، براي اين كار لازم است برنامه شما در اديتور c نوشته،اجراو در صورت لزوم خط به خط بررسي شودكه در حال حاضر با تعذر فراوان فرصت چنين كاري را ندارم.ولي با نگاهي اجمالي به برنامه چند نكته به چشم آمد كه فكر مي كنم راه گشا باشد: 1-اين خط تعريف تابعfread اشتباه است،در واقع قسمت قرمز اضافي است. !!!! برای مشاهده محتوا ، لطفا ثبت نام کنید / وارد شوید !!!! 2-شما ساختاري بنام cust_st ساخته ايد كه متشكل از يك بردار كاراكتري و يك بردار عددي است .تا اينجا درست، ولي متغير custdata را كه از اين نوع ساختار تعريف كرده ايد يك متغير است و تنها يك نام و يك شماره تلفن را مي تواند ذخيره كند. به عبارت ديگر نامها و شماره تلفنهائي كه متواليا" وارد ميكنيد در custdata روي قبلي نوشته مي شود و ركورد قبلي از دست مي رود.شما بايد متغير custdata را از نوع بردارويا اشاره گر تعريف كنيد تا بتوانيد ركوردهاي زيادي را در آن ذخيره نمائيد. 3-همانطور كه ميدانيد متغيرهاي محلي در همان بلوكي كه تعريف مي شوندمعتبرند و به محض خروج از بلوك رها مي گردند.شمامتغير custdata را بصورت محلي در تابع insert تعريف كرده ايد و آن را پر مي كنيد .با خروج از تابع هيچ تضميني براي با قيماندن محتواي آن نيست .اين در حاليست كه شما به همين محتوا در تابع show احتياج داريد.جهت اطمينان و جلوگيري از خطا (موكدا") بهتر است متغير custdata بصورت global تعريف شود. 4-يك توصيه:c يك زبان ساختار يافته است .استفاده از دستورgoto اين صفت را زير سوال مي برد. بزرگان برنامه نويس با c(نه من) توصيه موكد دارند كه از دستور اسپاگتي goto استفاده نكنيم.ميتوان از حلقه هاي مختلفي كه در c وجود داردبا شرطهاي متفاوت استفاده كرد.در واقع سعي كنيد كه فرض كنيد دستوري بنام goto وجود ندارد.اين دو حسن دارد:اولا" برنامه شما ساختار يافته ،منظم و بدون اغتشاش ميشود و ثانيا" در صورت استفاده از اخلاف c (مانند ++c و vc ) كه شي گرا بوده و چنين دستور ساختار شكني را ندارند با مشكل مواجه نخواهيد شد.با عرض معذرت مجدد كه نتوانستم برنامه اتان را كامل كنم اميدوارم اين نكات در تصحيح برنامه ياريتان نمايد. موفق باشيد. egoldfars13-12-2007, 08:38 AMبازم ممنون از راهنمایی شما .......... به محض اصلاحات دوباره کدهارو میگذارم egoldfars14-12-2007, 10:04 PMسلام تغیرات داده شد فقط منوی جستجوی بر اساس شماره تلفن مشکل داره اگر ممکنه راهنمایی کنید . بزودی گزینه حذف یه رکورد و ویرایش و مرتب کردن نامها به برنامه افزوده میشود لطفا دوستانهم کمک وراهنمایی هم کنند......................... منتظرم... !!!! برای مشاهده محتوا ، لطفا ثبت نام کنید / وارد شوید !!!! سایت ما را در گوگل محبوب کنید با کلیک روی دکمه ای که در سمت چپ این منو با عنوان +1 قرار داده شده شما به این سایت مهر تأیید میزنید و به دوستانتان در صفحه جستجوی گوگل دیدن این سایت را پیشنهاد میکنید که این امر خود باعث افزایش رتبه سایت در گوگل میشود
این صفحه را در گوگل محبوب کنید
[ارسال شده از: سایت ریسک]
[مشاهده در: www.ri3k.eu]
[تعداد بازديد از اين مطلب: 400]