PDA

View Full Version : سوال: زیرمجموعه های یک مجموعه



morrteza323
جمعه 08 آبان 1388, 15:18 عصر
سلام
لطفا برای حل این سوال کمکم کنید.
سوال: برنامه ایی بنویسید که یک مجموعه ی n عضوی را از ورودی دریافت کند و تمام زیر مجموعه های m عضوی آنرا در خروجی چاپ کند.

اینم برنامه ای که خودم نوشتم البته تا 3 عضوی رو نوشتم.می خواستم بدون راه ساده تری هم هست که از if استفاده نکنم؟؟چون هر یدونه که m اضافه می شه یک حلقه forبرای بدست آوردن مجموعه اضافه می شه.من تو برنامه n رو 10 در نظر گرفتم.


#include<iostream>
usingnamespace std;
void main()
{
int n, m, t,a[10];
cout << "tedade azaye majmoe ra vared konid:";
cin >> n;
for(int i = 0; i<n ;i++)
{
cout << "ozve" << i+1 << ":" ;
cin >> a[i];
}//end of for
cout << "chand ozvi?:" ;
cin >> t;
if(t == 2)
{
for(int j = 0;j<n;j++)
for(int k = j+1;k<n;k++)
{
cout << "{" << a[j];
cout << "," <<a[k] << "}";
}//end of for
}//end of if(t == 2)
if(t == 3)
{
for(int j = 0;j<n;j++)
for(int k = j+1;k<n;k++)
for(int l = k+1;l<n;l++)
{
cout << "{" << a[j];
cout << "," <<a[k];
cout << "," <<a[l] << "}";
}//end of for
}//end of if(t == 3)
}//end of main

tdkhakpur
جمعه 08 آبان 1388, 17:56 عصر
ولي مطالعه كنيد..


#include <iostream.h>
#include <conio.h>
#include <stdio.h>
#define MaxNums 6
#define MaxCalcNums 3
typedef struct MySt_
{
int Nums [MaxNums];
int ResultNums [MaxNums];
int cResult ;
bool Flag [MaxNums];
} Nums ;
void CalcNums ( int index, Nums nums )
{
if( index == MaxNums || nums.Flag[index] ) return;
//nums.Flag[index] = true;
nums.ResultNums [ nums.cResult ] = nums.Nums[index];
nums.cResult ++;
if( nums.cResult == MaxCalcNums )
{
cout<<"\n------------\n";
for( int i=0; i<nums.cResult ; i++ )
cout<<nums.ResultNums [i]<<",";
cout<<" press key..";
if( getch()==27 ) return;
return;
}
for( int i=0; i<MaxNums ; i++ )
if( i!=index )
CalcNums ( i, nums );
}
int main()
{
Nums nums={0};
clrscr();
nums.Nums [0] = 2; nums.Nums [1] = 5; nums.Nums [2] = 3;
nums.Nums [3] = 4; nums.Nums [4] = 6; nums.Nums [5] = 1;
for( int i=0; i<MaxNums ; i++ )
CalcNums ( i, nums );
return 0;
}

morrteza323
جمعه 08 آبان 1388, 19:32 عصر
اینی که شما نوشتید یعنی چی؟؟اجرای دستور شما این میشه


------------
2,5,2, press key..
------------
2,5,3, press key..
------------
2,5,4, press key..
ولی کد من جوابش اینجوریه:
tedade azaye majmoe ra vared konid:3
ozve1:1
ozve2:2
ozve3:3
chand ozvi?:2
{1,2}{1,3}{2,3}

tdkhakpur
جمعه 08 آبان 1388, 19:36 عصر
من كه گفتم مطالعه كنيد
اعداد موجود را به 1و2و3و4و5 تغيير بديد


nums.Nums [0] = 1; nums.Nums [1] = 2; nums.Nums [2] = 3;
nums.Nums [3] = 4; nums.Nums [4] = 5; nums.Nums [5] = 6;

assadiehsan
شنبه 09 آبان 1388, 09:56 صبح
با سلام
ميخواستم بدونم حجمي كه متغيير ها تو ++c تو ورژن هاي 2003 و 2005 و 2008 اشغال ميكنن چه تغييري كرده
ممنون ميشم اگه جواب بدين

tdkhakpur
شنبه 09 آبان 1388, 10:06 صبح
با sizeof ميتونيد بدست بياريد


int int_sz;
int long_sz;
int char_sz;
int_sz = sizeof(int);
long_sz = sizeof(long);
char_sz = sizeof(char);