ايران ويج

نسخه‌ی کامل: درخواست یک برنامه جایگشت در C++
شما در حال مشاهده‌ی نسخه‌ی متنی این صفحه می‌باشید. مشاهده‌ی نسخه‌ی کامل با قالب بندی مناسب.
صفحه‌ها: 1 2
سلام
خواهش می کنم در برنامه زیر به من کمک کنید:

1. از کاربر تعداد کاراکتر های ورودی را دریافت کند (n تا)
2. n تا کاراکتر را از کاربر بگیرد ( حرف و عدد )
3. تمام جایگشت های این n کاراکتر را چاپ کند در حالی که :
الف) اولین جایگشت چاپ شده همان ترتیبی باشد که کاربر وارد کرده
ب) در تمامی جایگشت ها، اولین کاراکتری که کاربر وارد کرده است، اول باشد (کاراکتر اول در جایگشت حساب نشود)


خیلی ممنون می شم اگه تا آخر هفته جواب منو بدید! قضیه مرگ و زندگی در میونه!!!
ممنون می شم اگه با پایه ای ترین کد های c++ بنویسید
خودم در بست در خدمتتم.

فقط بگو بینم این جایگشت چیه؟ فورمولش چیه؟؟؟؟؟
من یادم رفته.

بعدش من چهارشنبه بعد از ظهر میتونم جوابتو بدم. اگه دیر نیست خبرم کن.
اگر هم دیره که شرمندتم
(۰۹-تير-۱۳۸۸, ۰۱:۳۷:۵۲)mahdi20 نوشته است: [ -> ]خودم در بست در خدمتتم.

فقط بگو بینم این جایگشت چیه؟ فورمولش چیه؟؟؟؟؟
من یادم رفته.

بعدش من چهارشنبه بعد از ظهر میتونم جوابتو بدم. اگه دیر نیست خبرم کن.
اگر هم دیره که شرمندتم

مهدی جان سلام
نه اصلاً دیر نیست. ممنونت می شم.

مثال یرای جایگشت:
فرض کن کاراکترهای ورودی برنامه اینا باشن:
َA B C 4 2 D
حالا برنامه باشد انواع ترتیب های قرارگیری این کاراکترها را کنار هم، چاپ کنه! (با توجه به محدودیت هایی که در بالا گفتم)
چند نمونه :
A B C 4 2 D
A B C 4 D 2
A B C D 4 2
....
به فایل پیوست هم نگاهی بنداز
سلام!
من اگه جای شما بودم میومدم این کارو می کردم:
اول اون جایگشتیو که به ما دادن چاپ می کردم!
بعد n-1 عنصر آخرشو می ریختم تو یه آرایه(اگر عددات میتونن چند رقمی باشن آرایت از نوع string باشه در غیر این صورت کاراکتر بگیری کافیه) و بعد سورتشون میکردم سپس اون آرایه رو !(n-1) بار چاپ می کردم و با دستور جایگشت بعدی تبدیلش می کردم به جایگشت بعدی دوباره چاپ می کردم و ....
دستور جایگشت بعدی یک آرایه از عنصر a تا a+b اینجوریه:

;(next_permutation(a, a+b
سلام
میشه الگوریتم ویا کد این برنامه رو بزارید
من خیلی فکر کردم ولی به مشکل میخورم
من هم نیاز دارم
با تشکرShyRolleyes

این برنامه رو ببین فکر کنم همونی که می خوای
این کد هم ممکنه بدردتون بخوره ...
ممنون از همه .

کد:
#include<iostream>

using namespace std;

int c, K, N;

void permute(char a[], int i);
void swap(char* x, char* y);

int main(void)
{
    int t;
    char a[]="123456789";
    cin >> t;
    for(int i=1; i<=t; i++)
    {
        cin >> N >> K;//N denotes number of letters and K denotes number of permutations
        cout << "Case " << i <<":" << endl;
        c=0;
        permute(a,0);
    }
    return 0;
}

void permute(char* a, int i)
{
    if(i==N-1)
    {
        for(int j=0; j<N; j++)
            cout << a[j];
        cout << endl;
        c++;
        return;
    }
    else
    {
        for(int j=i; j<N && c<K; j++)
        {
            swap(&a[i],&a[j]);
            permute(a,i+1);
            swap(&a[i],&a[j]);
        }
    }
    return;
}

void swap(char* x, char* y)
{
    char temp;
    temp=*x;
    *x=*y;
    *y=temp;
    return;
}
سلام دوستان خسته نباشید سوال منم همینه اما الگوریتمم به این صورته که اول میام دو تا رشته میگیرم بعد بهم میچسبونمشون بعدشو از توی همه جایگشت ها اونایی که به ترتیب هستن رو جدا میکنم اما ی قسمتیش کار نمیکنه خیلی روش فکر کردم اما به نتیجه نمیرسم اگه میشه کمکم کنین مررررررررررررررررررررررررررررررررررسی

اینم کدمه
کد php:
#include <iostream>
#include <string>
#include <string.h>
using namespace std;

void main()
{
    
int tst;
    
cout<<"Enter test case : ";
    
cin>>tst;
    for(
int count 0  count tst count++ )
    {
      
int ni;
      
char str1[10] ;
      
char str2[10];
      
cin>>str1;
      
cin>>str2;

      
char *a[20];
      *
strcat(str1,str2);

      
int flag;
      
void Jaygasht(char a[20], int kint n) ;
  
      
strlen(*a) ;
      
Jaygasht(*akn);

      
int pos1 pos2 ;
     
/* for(int i = 0 ; i <strlen(str1) ; ++i)
      {
          for(int j = i + 1 ; j < strlen(str2) ; ++j)
          {*/
              
for(int k strlen(str1) ; ++k)
              {
                  
//if(*a[i] == str1[k])
                    //  pos1 = k;
                  //if(*a[j] == str1[k])
                    //  pos2 = k;
                  
int i=0;
                  while(*
a[i]!=str1[k])
                  {
                      
i++;
                  }
                    
pos1=i;
                
int j=0;
                while(*
a[j]!=str1[k++])
                {
                    
j++;
                }
                
pos2=j;
                  if(
pos1 pos2)
                        break;

                    
//     if(flag == 1)
                        // {
                            //  for(int k = 0 ; k <strlen(str2) ; ++k)
             // {
                  //if(*a[i] == str1[k])
                    //  pos1 = k;
                  //if(*a[j] == str1[k])
                    //  pos2 = k;
                /*  int j=0;
                  while(*a[j]!=str2[k])
                  {
                      j++;
                  }
                    pos1=i;
                    pos2=k;
                  if(pos1 > pos2)
                         flag++;
                            break;
                
                    */    
                         
cout<<*a<<endl;
                         
                         
              }}
while(
1);
}

void Jaygasht(char a[20], int kint n)
{
  
char td[10] ;
  
int i ;
  if(
== n)//n = strlen(a)
  
{
    
cout<<a<<endl ;
    return ;
  }
  else
  {
    for(
i++)
    {
      
a[i] ;
      
a[i] = a[k] ;
      
a[k] = ;
      
strcpy(da) ;
      
Jaygasht(dk+1n) ;
    }
  }

دوستان به زبان c++هس
(۱۶-بهمن-۱۳۹۲, ۰۲:۱۱:۳۴)f.akrami1995 نوشته است: [ -> ]سلام دوستان خسته نباشید سوال منم همینه اما الگوریتمم به این صورته که اول میام دو تا رشته میگیرم بعد بهم میچسبونمشون بعدشو از توی همه جایگشت ها اونایی که به ترتیب هستن رو جدا میکنم اما ی قسمتیش کار نمیکنه خیلی روش فکر کردم اما به نتیجه نمیرسم اگه میشه کمکم کنین مررررررررررررررررررررررررررررررررررسی

اینم کدمه
کد:
#include <iostream>
#include <string>
#include <string.h>
using namespace std;

void main()
{
    int tst;
    cout<<"Enter test case : ";
    cin>>tst;
    for(int count = 0  ; count < tst ; count++ )
    {
      int n, i, k = 0 ;
      char str1[10] ;
      char str2[10];
      cin>>str1;
      cin>>str2;

      char *a[20];
      *a = strcat(str1,str2);

      int flag;
      void Jaygasht(char a[20], int k, int n) ;
  
      n = strlen(*a) ;
      Jaygasht(*a, k, n);

      int pos1 , pos2 ;
     /* for(int i = 0 ; i <strlen(str1) ; ++i)
      {
          for(int j = i + 1 ; j < strlen(str2) ; ++j)
          {*/
              for(int k = 0 ; k < strlen(str1) ; ++k)
              {
                  //if(*a[i] == str1[k])
                    //  pos1 = k;
                  //if(*a[j] == str1[k])
                    //  pos2 = k;
                  int i=0;
                  while(*a[i]!=str1[k])
                  {
                      i++;
                  }
                    pos1=i;
                int j=0;
                while(*a[j]!=str1[k++])
                {
                    j++;
                }
                pos2=j;
                  if(pos1 > pos2)
                        break;

                    //     if(flag == 1)
                        // {
                            //  for(int k = 0 ; k <strlen(str2) ; ++k)
             // {
                  //if(*a[i] == str1[k])
                    //  pos1 = k;
                  //if(*a[j] == str1[k])
                    //  pos2 = k;
                /*  int j=0;
                  while(*a[j]!=str2[k])
                  {
                      j++;
                  }
                    pos1=i;
                    pos2=k;
                  if(pos1 > pos2)
                         flag++;
                            break;
                
                    */    
                         cout<<*a<<endl;
                        
                        
              }}
while(1);
}

void Jaygasht(char a[20], int k, int n)
{
  char t, d[10] ;
  int i ;
  if(k == n)//n = strlen(a)
  {
    cout<<a<<endl ;
    return ;
  }
  else
  {
    for(i = k ; i < n ; i++)
    {
      t = a[i] ;
      a[i] = a[k] ;
      a[k] = t ;
      strcpy(d, a) ;
      Jaygasht(d, k+1, n) ;
    }
  }
}
دوستان به زبان c++هس

اون ی قسمت کدوم قسمت هست؟؟؟
این قسمتش
کد php:
int pos1 pos2 ;
     
/* for(int i = 0 ; i <strlen(str1) ; ++i)
      {
          for(int j = i + 1 ; j < strlen(str2) ; ++j)
          {*/
              
for(int k strlen(str1) ; ++k)
              {
                  
//if(*a[i] == str1[k])
                    //  pos1 = k;
                  //if(*a[j] == str1[k])
                    //  pos2 = k;
                  
int i=0;
                  while(*
a[i]!=str1[k])
                  {
                      
i++;
                  }
                    
pos1=i;
                
int j=0;
                while(*
a[j]!=str1[k++])
                {
                    
j++;
                }
                
pos2=j;
                  if(
pos1 pos2)
                        break;

                    
//     if(flag == 1)
                        // {
                            //  for(int k = 0 ; k <strlen(str2) ; ++k)
             // {
                  //if(*a[i] == str1[k])
                    //  pos1 = k;
                  //if(*a[j] == str1[k])
                    //  pos2 = k;
                /*  int j=0;
                  while(*a[j]!=str2[k])
                  {
                      j++;
                  }
                    pos1=i;
                    pos2=k;
                  if(pos1 > pos2)
                         flag++;
                            break;
                
                    */    
                         
cout<<*a<<endl;
                         
                         
              }} 
سلام من  برنامه نویسی در اکسل را نمیدونم اما به  فرمولی که  جایگشتهای مختلف را حساب کنه نیازدارم میشه کمک کنید
صفحه‌ها: 1 2