• پایان فعالیت بخشهای انجمن: امکان ایجاد موضوع یا نوشته جدید برای عموم کاربران غیرفعال شده است

برنامه سربازان رومی(josephe)

alireza MX

Registered User
تاریخ عضویت
18 فوریه 2006
نوشته‌ها
50
لایک‌ها
0
کد این برنامه رو میخواستم
توضیح برنامه:
ما یه آرایه از کاراکتر داریم. هنگام خواندن این کاراکترها از کاربر همراه هر کاراکتر یه عدد n هم میخونیم.
بعد فرض کنید این کاراکترها به شکل دایره ایستاده اند.از اولی شروع میکنیم و به تعداد n ای که این کاراکتر داره یکی یکی کاراکتر ها رو میشماریم و اون کاراکتری رو که بهش رسیدیم اول میبینیم n ای که همراش وارد شده چنده بعد از لیست حذفش میکنیم و دوباره با این n ای که گرفتیم ادامه میدیم.به همین ترتیب پیش میریم و به هر کدوم که رسیدیم اول n ای که همراش وارد شده رو میگیریم بعد اونو حذف میکنیم.این کارو اونقدر ادامه میدیم تا یه کاراکتر باقی بمونه.
این برنامه با link list پیاده سازی میشه.
ممنون میشم اگه زود جواب بدید.چون خیلی سریع بهش احتیاج دارم.
با تشکرات قبلی
 

alireza MX

Registered User
تاریخ عضویت
18 فوریه 2006
نوشته‌ها
50
لایک‌ها
0
یکی نیست کمکم کنه.
خیلی بهش احتیاج دارم.
 

Mehdi.T

کاربر فعال برنامه نویسی
کاربر فعال
تاریخ عضویت
30 سپتامبر 2005
نوشته‌ها
506
لایک‌ها
3
محل سکونت
In Search of Sunrise
دوست من بايد ما رو ببخشيد ، من تازه فهميدم :
يک اصلاح در اسم تاپيک : josephus اسم يک شورشي بوده عليه **** روم
کد:
#include <iostream.h>
#include <stdlib.h>
#include <conio.h>
#include <string.h>
class joseph {
  friend class circular;
  private:
    char name[21];
    joseph *next;
};
class circular{
  public:
    circular();
    void print(int n);
    void addList(char name[]);
    void removeList(joseph *h);
  private:
    joseph *start;
};
//*******************
circular::circular()
{
  start = NULL;
}
//*******************
void circular::addList(char name[])
{
  joseph *help, *p;
  help = new joseph;
  strcpy(help -> name, name);
  if(start == NULL)
     help -> next = help;
  else
  {
      help -> next = start -> next;
      start -> next = help;
  }
  start = help;
}//****************
void circular::removeList(joseph *h)
{
  joseph *q;
  if(start == NULL || start == start -> next)
  {
     cout << "You cannot remove frm queue";
     getch();
  }
  else {
     q = start -> next;
     h -> next = q;
     delete start;
     start = q;
  }
}
//*************************
void circular::print(int n)
{
   joseph *h;
   cout << "The order of names:\n";
   while(start != start -> next)
   {
     for(int i = 1; i < n; i ++)
     {
	  h = start;
	  start = start -> next;
      }
      cout << start -> name << "  ";
      removeList(h);
   }//end of while
   //print the last name
   cout <<"\nThe soldier who escapes is:" << start -> name;
   delete start;
}
//***********************
int main()
{
   int i, n;
   circular list;
   char name[21], str[5];
   clrscr();
   cout << "Enter n:";
   cin.getline(str, 5);
   n = atoi(str);
   while(1)
   {
       cout << "Enter name of soldier:";
       cin.getline(name, 21);
       if(!name[0])
	   break;
       list.addList(name);
   }
   list.print(n);
   getch();
   return 0;
}
 

Arash_j13

Registered User
تاریخ عضویت
18 فوریه 2005
نوشته‌ها
778
لایک‌ها
2
محل سکونت
مشهد
داستا این برنامه هم اینطوری بوده که
یه عده سرباز شورش می کنن بعد از اینکه دستگیر می شن پادشاه دستور میده یکی آزاد بشه و بقیه کشته برای همین سربزا ها رو دو یه میز دایره شکل می شونن یکی در میون گردن می زنن تا فقط یکی زنده بمونه این برنامه نفری که زنده مونده رو می خواد
 
بالا