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; }
این مسئله مربوط به مسئله ژوزف و حذف افراد به صورت 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; }