We're a community of 1076K IT Pros here for help, advice, solutions, professional growth and fun. Join us!
1,075,874 Members — Technology Publication meets Social Media

# Problem in converting Pseudocode

Guys I have to implement two algorithm using Pseudocodes in order to genarate formal concepts... but the implemented code doesn't give the expected results i want ...

These are the two algorithms i wanted to implement and the expected result is
Concept - 1
[0,1,2,3,4]
[]
Concept - 2
[1,2,4]
[0,6]
Concept - 3
[0,2,3,4]
[1,5]
Concept - 4
[0,1,4]
[7]
Concept - 5
[2,4]
[0,1,5,6]
Concept - 6
[1,2]
[0,3,6]
Concept - 7
[1,4]
[0,6,7]
Concept - 8
[2]
[0,1,2,3,5,6]
Concept - 9
[4]
[0,1,4,5,6,7]
Concept - 10
[]
[0,1,2,3,4,5,6,7]
Concept - 11
[1]
[0,3,6,7]
Concept - 12

but i only get

can you guys check this and tell me what i am doing wrong?? the code is

`````` const int MAXOBJECTS = 5;
const int MAXATTRIBUTES = 8;
int I[MAXOBJECTS][MAXATTRIBUTES]=
{{0,1,1,0,1,1,0,1},
{1,0,0,1,0,0,1,1},
{1,1,1,1,0,1,1,0},
{0,1,0,0,1,1,0,0},
{1,1,0,0,1,1,1,1},};

int A[MAXATTRIBUTES*MAXOBJECTS][MAXOBJECTS];
int B[MAXATTRIBUTES*MAXOBJECTS][MAXATTRIBUTES];
int rNew;

int size1[MAXATTRIBUTES*MAXOBJECTS];
int size2[MAXATTRIBUTES*MAXOBJECTS];
bool isCannonical(int r,int y)
{
int h;
for(int k =size2[r]-1;k>=0;k--)
{
for(int j = y;j>=B[r][k]+1;j--)
{
for(h =0;h<=size1[rNew]-1;h++)
{
if(I[A[rNew][h]][j]!=1)
break;
//if(h==size1[rNew])
//return false;
}
if(h==size1[rNew])
return false;
}
y=B[r][k]-1;
}
for(int j=y;j>=0;j--)
{
for(h =0;h<=size1[rNew]-1;h++)
{
if(I[A[rNew][h]][j]!=1)
break;
//if(h==size1[rNew])
//return false;
}
if(h==size1[rNew])
return false;
}
return true;
}

void InClose(int r,int y)
{
int i;
rNew = rNew + 1;
for(int j = y;j<MAXATTRIBUTES;j++)
{
for(int x=0;x<MAXOBJECTS;x++)
{
A[rNew][x]=-1;//0;
}

foreach(p1,A[r])
{
i = *p1;
if(I[i][j]==1)
{
A[rNew][size1[rNew]]=i;
size1[rNew]++;
}

}
if(size1[rNew]>0)
{
if(size1[rNew]==size1[r])
{
B[r][size2[r]++]=j;
}
else
{
if(isCannonical(r,j-1))
{
for(int x=0;x<size2[r];x++)
{
B[rNew][x]=B[r][x];
size2[rNew]++;
}
B[rNew][size2[rNew]++] = j;
InClose(rNew,j+1);
}
}
}
}
}

int _tmain(int argc, _TCHAR* argv[])
{
rNew=0;
for(int i =0;i<MAXOBJECTS;i++)
{
A[0][i] = i;
B[0][i] = -1;//0;
size1[0]=size1[0]+1;

}
size2[0]=0;
for(int i=1;i<MAXATTRIBUTES*MAXOBJECTS;i++)
{
size1[i]=0;
size2[i]=0;
}

InClose(0,0);
for(int h=0;h<rNew;h++)
{
printf("\n\nConcept No: %d\n",h);
printf("Objects : ");
for(int o=0;o<size1[h];o++)
{
if(A[h][o]!=-1)
printf(" %d ",A[h][o]);
}
printf("\nAttributes : ");
for(int o=0;o<size2[h];o++)
{
if(B[h][o]!=-1)
printf(" %d ",B[h][o]);
}

}

int a;
scanf("%d",&a);
return 0;

}
``````
Attachments
3
Contributors
4
Replies
8 Hours
Discussion Span
7 Months Ago
Last Updated
5
Views
darkenmac
Newbie Poster
3 posts since Sep 2012
Reputation Points: 0
Skill Endorsements: 0

okay! Can you please explain what this pseudocode is all about? rather than reading this whole code, it's better to give you hints from which we can know the basic concept of the code. it will make you to think better and learn more. thanks

nitin1
Posting Whiz
389 posts since Sep 2012
Reputation Points: 4
Skill Endorsements: 0

this pseudocode genarates all the formal concepts for a given context of binary values..

darkenmac
Newbie Poster
3 posts since Sep 2012
Reputation Points: 0
Skill Endorsements: 0
pyTony
pyMod
Moderator
6,301 posts since Apr 2010
Reputation Points: 879
Skill Endorsements: 26

yeah thats the one.. from this algorithms i am able to genarate all the concepts

darkenmac
Newbie Poster
3 posts since Sep 2012
Reputation Points: 0