Thread: Hierarchical superior, help!

  1. #1
    Registered User
    Join Date
    Jan 2003
    Posts
    6

    Question Hierarchical superior, help!

    Hi everyone,

    This program returns 1 if person N1 is hierarchical superior of person N2 or 0 otherwise.

    The assignment to People[] in the code below is meant that Vanessa is a direct superior of Peter, Harry is a direct superior of George.
    A person N1 is said to be a "hierarchical superior" of another person N2 if either:
    N1 is a direct superior of N2
    N1 is a direct superior of a person N3 who is a superior of N2.

    I can get result 1 of the "right" case, but if the N1 is not HS of the N2 then the program terminates. Why?
    Try with difference names in N1 and N2.


    Code:
    #include <stdio.h>
    #include <string.h>
    #include <stdlib.h>
    #define N	6
    #define SIZE 100
    typedef struct{
    		char *personA;
    		char *personB;
    }people;
    
    
    
    int IsSuperior(people array[N],char Name1[SIZE], char Name2[SIZE]);
    int main(){
    	static people People[N]={"Vanessa", "Peter",
    			          "Harry", "George",
    		                            "George", "Tony",
    			              "Ron", "Andrea",
    			         "Vanessa", "Diana",
    			                   "Tony", "Ron"};
    	
    
    	int result, i;
    	char N1[SIZE], N2[SIZE];
    	for(i=0;i<6;i++){
    		printf("%s, %s\n", People[i].personA, People[i].personB);
    	}
    
    	strcpy(N1,"Harry");
    	strcpy(N2,"Ron");
    	result = IsSuperior(People,N1,N2);
    	printf("%d\n", result);
    	return 0;
    }
    
    
    /*************************************************************/
    /*Task: returns 1 if person N1 is hierarchical superior of person N2
     *		or 0 otherwise.
    */
    int IsSuperior(people array[N],char Name1[SIZE], char Name2[SIZE]){
    
    	int i = 0;
    	int found = 0;
    	//int test;
    	while(strcmp(Name1,array[i].personA)!=0){
    		i++;
    	}
    	printf("test2\n");
    	if(strcmp(array[i].personB, Name2) == 0){
    		found = 1;
    	}
    	else
    		found = IsSuperior(array,array[i].personB,Name2);
    	return found;
    }
    Last edited by tuanvo; 02-02-2003 at 06:54 AM.

Popular pages Recent additions subscribe to a feed