• توجه: در صورتی که از کاربران قدیمی ایران انجمن هستید و امکان ورود به سایت را ندارید، میتوانید با آیدی altin_admin@ در تلگرام تماس حاصل نمایید.

حاصل ضرب دکارتی دو مجموعه بوسیله لینک لیست

Reza

متخصص بخش اسکریپت
این پروژه نیز کاربرد مفید لینک لیست ها را نشان می دهد که ابتدا بی نهایت مجموعه با بی نهایت عضو می گیرد و سپس اسم دو مجموعه از مجموعه های ورودی را می گیرد و حاصل ضرب دکارتی آن مجموع ها را چاپ می کند .

A={1,2,3}
B={5,6}
A * B = { (1*5) (1*6)(2*5)(2*6)(3*5)(3*6) }


#include "iostream.h"
#include "conio.h"
#include "stdlib.h"
#include "string.h"
struct number{
int count;
int num;
struct number *next;
}*nn,*ln,*fn;
struct collection{
char name[20];
struct number *p;
struct collection *next;
}*fc,*nc,*lc;
void add();
void print();
void move();
int *avali,*dovomi,c1,c2;
char a[20],b[20];
main(){
add();
move();
print();
}
//***********************************
void add(){
char x[20];
int tmp;
cout<<"\n Enter your set by n";
do{
cout<<"\n Enter a name for complex : ";
cin>>x;
if(strcmp(x,"final")==0)
break;
cout<<"\n\t { \n";
nc=(struct collection*)calloc(1,sizeof(struct collection));
if(nc==NULL)
exit(1);
if(fc==NULL)
fc=nc;
else
lc->next=nc;
lc=nc;
nc->next=NULL;
nc->p=NULL;
strcpy(nc->name,x);
do{
cout<<"\t\t";
cin>>x;
if(strcmp(x,"end")==0)
break;
else
tmp=atoi(x);
nn=(struct number*)calloc(1,sizeof(struct number));
if(nn==NULL)
exit(1);
nn->next=NULL;
nn->num=tmp;
nn->count=0;
if(nc->p==NULL){
nc->p=fn=nn;
fn->count=1;
}
else{
ln->next=nn;
fn->count+=1;
}
ln=nn;
}while(1);
cout<<"\n\t } \n";
}while(1);
}
//************************************************
void move(){
int i;
clrscr();
cout<<"\n Enter two collection (C B) : ";
cin>>a>>b;
nc=fc;
while(nc!=NULL){
if(strcmp(nc->name,a)==0){
ln=nc->p;
c1=ln->count;
avali=(int*)calloc(c1,sizeof(int));
for(i=0;i<c1;i++){
avali=ln->num;
ln=ln->next;
}
}
else if(strcmp(nc->name,b)==0){
ln=nc->p;
c2=ln->count;
dovomi=(int*)calloc(c2,sizeof(int));
for(i=0;i<c2;i++){
dovomi=ln->num;
ln=ln->next;
}
}
nc=nc->next;
}
}
//******************************************************************************
void print(){
int i,j;
clrscr();
cout<<"\n "<<a<<"*"<<b<<" = {";
for(i=0;i<c1;i++)
for(j=0;j<c2;j++)
cout<<"("<<avali<<"*"<<dovomi[j]<<")";
cout<<"}";
getch();
}
 
بالا