PDA

View Full Version : اشکال در حلقه do-while



leilast
جمعه 07 دی 1386, 20:20 عصر
سلام
این مسئله مربوط به مسئله ژوزف و حذف افراد به صورت Lدرمیان و با شروع حذف از نفر اول هست.
ولی do-whilesh خطا میده.
میتونید کمکم کنید.






#include "stdio.h"
#include "conio.h"
#include "iostream.h"
void main(void){
clrscr();
int josef(int,int);
int n,l;
char ans;
do{
cout<<"\n enter number of people\n";
cin>>n;
cout<<"enter l\n";
cin>>l;
josef(n,l);
cout<<josef(n,l);
cout<<"are you continue?";
cin>>ans; }
while(ans=='Y'|| ans=='y')
getch();}
//-------------------------------
int josef(int n,int l){
int newn;
if(l==1)
newn=((2)*n)-1;
while(newn>n)
newn=2*(newn-n);
if(l!=1)
newn=((l+1)*n)-l;
while(newn>n)
newn=(int)((newn-n+1)/l)+newn-n;
return newn; }

amir_cpp
جمعه 07 دی 1386, 21:02 عصر
شما سمی کولن (;) نگذاشتین!
تو این سطر:


while (ans=='Y' || ans=='y')

amir_cpp
جمعه 07 دی 1386, 21:03 عصر
حالا که مساله حل شد، می شه به ما هم توضیح بدی این جوزف چیه یا کیه؟! تا ما هم یاد بگیریم؟
ممنون.

mostafa_angel
شنبه 08 دی 1386, 21:44 عصر
جوزف یه سوال معروفه که برای مسابقات ACM بوده اما به علت اینکهبرای حل این سوال از معادلات دروسی مثل گسسته و مبانی ریاضیات استفاده میشود معمولا سر اون کلاسها هم گفته میشه...
اما حالا جریان چیه:::
در یه شهر n مرد میخواهند همدیگر را بکشند ( حالا علت های مختلفی در سوالات مختلفی وجود داشته ) به خاطر همین همه آنها به صورت یه دایره می ایستند و کشتن آنها به این صورت است که نفر اول نفر دوم را با کارد ( یا هر چیز دیگر ) می کشد و آلت قطاله را به نفر سوم میدهد و همین طور ادامه دارد....
حالا سوال چیه؟؟؟
سوال اینه که اگه جوزف بخواهد نمیرد باید چندمین نفر باشد؟؟؟؟