PDA

View Full Version : احتیاج به یک حلقه ی بدون شرط برای تکرار بدنه تا بی نهایت



lidaline
پنج شنبه 28 آبان 1388, 12:30 عصر
سلام دوستان در برنامه ای که پایان ندارد قرار است عددی بخوانیم اگر شرایط برایش صدق کرد در خروجی بنویسد مشکل برنامه اینجاست که مشخص نیست کی به پایان میرسد بنابراین چون این برنامه باید تکرار شود نمی دانم در قسمت شرط حلقه ی while چه چیزی بنویسم تا برنامه در داخل این حلقه تکرار شود
فرض کنید قرار است برنامه یک متن را بگیرد و جاهای خالی این متن را حذف و بقیه متن را مکررا بنویسد مثلا اگر بخواهیم متن this is a test را در برنامه وارد کنیم خروجی به شکل
tthhiissiissaatteesstt باشد


x = getche();
while(?)
{
if ( x !='\t' || x!='\n' || x !=' ')
printf ("%c",x);
else
x=getche();
x=getche();
}


حالا به نظر شما باید به جای ؟ چه چیزی نوشت در ضمن اگر حلقه ای جز while را برای اینکار سراغ دارید بگید و مشکل دیگر اینکه ممکن است داخل متن عدد نیز بیاید در اینصورت باید چه کرد با توجه به
printf ("%c",x)

tdkhakpur
پنج شنبه 28 آبان 1388, 14:07 عصر
خب اگر نمي خواي از حلقه خارج شوي عدد 1 را به جاي ? قرار بده.

Marjan_Bala
پنج شنبه 28 آبان 1388, 14:33 عصر
میتونی بگی هر موقع طرف esc زد از حلقه بیاد بیرون تو c برای اینکار باید از ()kbhit استفاده کنی.
موفق باشی

m.soleimani
پنج شنبه 28 آبان 1388, 15:19 عصر
سلام دوستان در برنامه ای که پایان ندارد قرار است عددی بخوانیم اگر شرایط برایش صدق کرد در خروجی بنویسد مشکل برنامه اینجاست که مشخص نیست کی به پایان میرسد بنابراین چون این برنامه باید تکرار شود نمی دانم در قسمت شرط حلقه ی while چه چیزی بنویسم تا برنامه در داخل این حلقه تکرار شود
فرض کنید قرار است برنامه یک متن را بگیرد و جاهای خالی این متن را حذف و بقیه متن را مکررا بنویسد مثلا اگر بخواهیم متن this is a test را در برنامه وارد کنیم خروجی به شکل
tthhiissiissaatteesstt باشد


x = getche();




while(?)

{
if ( x !='\t' || x!='\n' || x !=' ')
printf ("%c",x);
else
x=getche();
x=getche();

}




حالا به نظر شما باید به جای ؟ چه چیزی نوشت در ضمن اگر حلقه ای جز while را برای اینکار سراغ دارید بگید و مشکل دیگر اینکه ممکن است داخل متن عدد نیز بیاید در اینصورت باید چه کرد با توجه به
printf ("%c",x)
عدد مشکلی ایجاد نمی‌کنه البته اگر زیاد بزرگ نباشه چون در واقع خود char هم یه نوع عددی هست ولی به مقدار یک بایت از حافظه را اشغال می‌کنه. در مورد حلقه‌ی بالا به همون صورت که دوستمون گفتن بهتره از مقدار 1 استفاده کنید این یعنی این‌که شرط حلقه همیشه به صورت درست محاسبه می‌شه و یه حلقه‌ی بی‌نهایت تشکیل می‌شه که البته توصیه به استفاده از این گونه حلقه‌ها نمی‌شه و برای خارج شدن از این حلقه باید حتمن تو بدنه حلقه یه شرط برای پایان به کارش در نظر بگیرید, توی قسمت else هم دوبار برای متغیر مقدار گرفتین که البته به هدف خودتون بستگی داره, در مورد حلقه‌های بی‌نهایت دیگه هم می‌شه به (; ; )for و همین while با شرط همیشگی true اشاره کرد موفق باشید.

softkadeh
پنج شنبه 28 آبان 1388, 20:24 عصر
سلام

واضح نیست ولی اگه میخوای حلقه همیشه اجرا بشه و بی نهایت باشه همونطور که دوستان گفتن باید از 1 برای شرط While استفاده کنی و همچنین در for هم بازم گفتن که به صورت ( ; ; ) باید باشه تا حلق بی نهایت بشه .

در مورد عدد هم بگم که نه مشکلی پیش نمیاد .

amir_varasteh
سه شنبه 03 آذر 1388, 15:34 عصر
همونطور که دوستان گفتن میتونی از while(1) استفاده کنی.
یعنی تا زمانیکه 1 با صفر برابر نیست تکرار کنه و بنابراین حلقه بی نهایت میشه.

فانوس1
جمعه 18 اردیبهشت 1394, 21:35 عصر
سلام
من این حلقه را ایجاد کردم نمیدونم چرا andش درست کار نمی کنه یعنی وقتی یکی از شرط ها true شد میاد بیرون:متعجب::متعجب::متعجب:

while (!(x == e.X) && !(y == e.Y))
ممنون.

chikar
جمعه 18 اردیبهشت 1394, 21:56 عصر
سلام
من این حلقه را ایجاد کردم نمیدونم چرا andش درست کار نمی کنه یعنی وقتی یکی از شرط ها true شد میاد بیرون:متعجب::متعجب::متعجب:

while (!(x == e.X) && !(y == e.Y))
ممنون.
تست کردم، درست کار می کنه!

فانوس1
یک شنبه 20 اردیبهشت 1394, 17:32 عصر
تست کردم، درست کار می کنه!
بله ممنون از شما.باید از or استفاده میکردم نه and.