PDA

View Full Version : سوال: درخواست راهنمایی دستور شرطی چند متغیره ++C



77777778
سه شنبه 31 اردیبهشت 1392, 16:17 عصر
سلام دوستان عزیز ;
فرض کنیم 10 متغیر از نوع int داریم
می خواهیم شرطی تعریف کنیم که اگر مقدار این 10 متغیر با همدیگر برابر نباشد (بطور همزمان)
(به زبان ساده تر : اگر مقدار تکراری بین متغیر ها نباشد)، فلان کار رو انجام بده

برای مثال آرایه ای 10 عضوی رو در نظر بگیرین
می خوام در صورت تکراری نبودن مقدارهای این آرایه ، یه پیغامی روی صفحه نشون بده

خیلی ازتون ممنون می شم اگه راهنماییم کنین

saied_hacker
سه شنبه 31 اردیبهشت 1392, 18:14 عصر
خیلی ساده شما باید تک تک اعضا رو با هم مقایسه کنید و اگر مقدار برابر وجود داشت پیغام رو نمایش نده... که اینجا از یه متغیر bool استفاده شده تا بتونیم وضعیت تکراری بودن یا نبودن را باهاش نگه داری کنیم

bool check = true;
for(int i = 0; i < 10; i++)
{
for(int j = 0; j < 10; j++)
if(array[i] == array[j])
check = false;
}

if(check)

//do anything...


اگر مقدار check همچنان true بود پیغام نمایش داده بشه

Ananas
چهارشنبه 01 خرداد 1392, 09:02 صبح
روش سریع تر اینکه از برهان خلف استفاده کنید. یک مثال نقض کافیه:

bool ifEqual = true;
for (int i = 1; i < 10; i++)
{
if (my_array[i] != my_array[i - 1])
{
ifEqual = false;
break;
};
};

77777778
چهارشنبه 01 خرداد 1392, 09:29 صبح
bool check = true;
for(int i = 0; i < 10; i++)
{
for(int j = 0; j < 10; j++)
if(array[i] == array[j])
check = false;
}

if(check)

//do anything...



وقتی i و j هر دو از صفر شروع می شن مقدار هر دو در هر حلقه ، یکبار برابر می شه و یه خطای منطقی پیش می آد
با اولین مقداردهی false دیگه ادامه کار بی تاثیر خواهد بود

77777778
چهارشنبه 01 خرداد 1392, 09:59 صبح
روش سریع تر اینکه از برهان خلف استفاده کنید. یک مثال نقض کافیه:

bool ifEqual = true;
for (int i = 1; i < 10; i++)
{
if (my_array[i] != my_array[i - 1])
{
ifEqual = false;
break;
};
};



فکر نکنم برای مساله من بتونه کارساز باشه
راستش این دستور قراره از بین 10 میلیارد حالت مختلف برای این آرایه 10 عضوی(هر درایه عددی بین 1 الی 10) حالتهای بدون تکرار عدد رو روی خروجی چاپ کنه:اشتباه:

saied_hacker
چهارشنبه 01 خرداد 1392, 10:36 صبح
کاملا حق با شماست من این نکته رو در نظر نگرفته بودم :)
این دیگه باید مشکل رو حل کنه

اگه ایندکس یکی شد از روی اون میپره و میره خونه بعدی
int main()
{
int n[10]= {1,2,3,4,5,6,7,8,9,10};

bool check = true;
for(int i = 0; i < 10; i++)
{
for(int j = 0; j < 10; j++)
if(i == j)
{

}
else if(n[i] == n[j])
check = false;
}

if(check)
cout << "ok";
if(!check)
cout << "nokey :)";
return 0;
}

77777778
چهارشنبه 01 خرداد 1392, 12:32 عصر
سعید جان این کار کرد خیلی ممنون I've got my answer :تشویق: