Jump to content

Right so I have these set of exercises and i'm stuck on the 3rd exercise. Which wants me to write a function for strisalpha. The function is supposed to return 1 if the string contains only alphabetic characters else returns 0.

Here is the main function code for that function:

case  3 : testing("strisalpha");
              promptAndGetString(stringA);    
              if (strisalpha(stringA))                           
                   printf(" \"%s\" contains only alphabetic chars\n",stringA, strisalpha);
    
              else                                               
                   printf(" \"%s\" contains non-alphabetic chars\n",stringA, strisalpha);
 
              if (testno != 1) break;

And here is the complement function with the code i've written so far.

int strisalpha(char * string)
    {
        /* returns 1 if string contains only alphabetic characters else returns 0 */
		
		char i = 0;		
		
		if (string[i] >= 'a' && string[i] <= 'z')
	    return 1;

		else	
		return 0;
    }

For some reason the return statements in the function are not doing anything when I run the program, (see the attatched image)

If anyone could help me sort this i'd appreciate it.

Also if it helps here is the entire program for all the exercises:

#include <stdio.h>

/*----------------------------------------------------------------------------------*/

    int  strlength(char * string)
    {
        /* returns the length of a string */
        
        /* We have provided the answer to this first exercise to get you started: */
      
        int i=0;
        while (string[i]) i++;
        return i;
        
        
    }

/*----------------------------------------------------------------------------------*/

    int strisalpha(char * string)
    {
        /* returns 1 if string contains only alphabetic characters else returns 0 */
		
		char i = 0;		
		
		if (string[i] >= 'a' && string[i] <= 'z')
	    return 1;

		else	
		return 0;
    }

/*----------------------------------------------------------------------------------*/

    int  strfirst(char * string, char letter)
    {
        /* returns the index of the first occurrence of letter in string
           or -1 if it does not occur */
    }

/*----------------------------------------------------------------------------------*/

    int  strlast(char * string, char letter)
    {
        /* returns the index of the last occurence of letter in string
           or -1 if it does not occur */
    }

/*----------------------------------------------------------------------------------*/

    void strcopy(char * string1, char * string2)
    {
       /* copies string1 to string 2 */
    
    }

/*----------------------------------------------------------------------------------*/

    void strhead(char * string1, char * string2, int n)
    {
       /* copies the first n characters of string1 to string2 */
    }

/*----------------------------------------------------------------------------------*/

    void strtail(char * string1, char * string2, int n)
    {
       /* copies the last n characters of string1 to string2 */
    }

/*----------------------------------------------------------------------------------*/

    void strmid(char * string1, int start, int end, char * string2)
    {
       /* copies the characters of string1 from start to end (inclusive) to string2 */
    }

/*----------------------------------------------------------------------------------*/

    void strnodup(char *string)
    {  /* removes any duplicate characters from string1
          e.g. "abcdabcaba" would become "abcd"
       */
    }

/*----------------------------------------------------------------------------------*/

    int isprefix(char * string1, char * string2)
    {
       /* if string1 is a prefix of string2 returns 1 else returns 0
          e.g.  isprefix("hello","hello world") returns 1
                isprefix("world","hello world") returns 0

          Note that we define an empty string to be a valid prefix of any string.
          Thus  isprefix("", "hello world")     returns 1
           and  isprefix("", "")                returns 1
       */
    }

/*----------------------------------------------------------------------------------*/

    /* If you choose to answer coursework option A then
       You will need to put the function that answers courswork Option A here */ 

/*----------------------------------------------------------------------------------*/

    /* If you choose to answer coursework option B then
       You will need to put the function that answers courswork Option B here */ 


/*----------------------------------------------------------------------------------*/
/*                                Utility functions                                 */
/*----------------------------------------------------------------------------------*/

    int promptUserForChoice()
    {
      int choice = -1;
      char input[256];
   
      while (choice < 0 || choice > 13)
      {
        printf("\n");
        printf("--------------------------------------------------------\n");
        printf("Options:\n");
        printf("        QUIT TESTING       (0)    TEST strhead       (7)  \n");
        printf("        TEST EVERYTHING    (1)    TEST strtail       (8)  \n");
        printf("        TEST strlength     (2)    TEST strmid        (9)  \n");
        printf("        TEST strisalpha    (3)    TEST strnodup     (10)  \n");
        printf("        TEST strfirst      (4)    TEST isprefix     (11)  \n");
        printf("        TEST strlast       (5)    CWK question A    (12)  \n");
        printf("        TEST strcopy       (6)    CWK question B    (13)  \n");
        printf("Choice ? ");
        scanf(" %s", input);
        choice = atoi(input);
        printf("Selected %i\n\n", choice);
      }
      return choice;
    }

    void testing(char * name)
    {
        printf("\n");
        printf("--------------------------------------------------------\n");
        printf("                Testing:\t%s\n",name);
        printf("\n");
    }

    void promptAndGetString(char * str)
    {
        char junk;
        str[0] = '\0';
        printf("Enter a string : ");
        scanf("%c%[^\n]", &junk, str);
        printf("You entered \"%s\"\n",str);
    }
 

/*----------------------------------------------------------------------------------*/
/*                                  Main Program                                    */
/*----------------------------------------------------------------------------------*/

main()
{
  char stringA[1024],
       stringB[1024];
  int start,
      end,
      n,
      i,
      testno;
  char letter;
  
  testno = promptUserForChoice();
  while (testno != 0)
  {
    switch (testno)
    {
    case  1 : printf(">> \tSelected everything\n"); 
              printf(">> \tEach test will be run once\n");
 
    case  2 : testing("strlength");
              promptAndGetString(stringA);                                  
              n=strlength(stringA);                                
              printf("\"%s\" has length %d\n",stringA,n);                    
 
              if (testno != 1) break;
 
    case  3 : testing("strisalpha");
              promptAndGetString(stringA);    
              if (strisalpha(stringA))                           
                   printf(" \"%s\" contains only alphabetic chars\n",stringA, strisalpha);
    
              else                                               
                   printf(" \"%s\" contains non-alphabetic chars\n",stringA, strisalpha);
 
              if (testno != 1) break;
 
    case  4 : testing("strfirst");
              promptAndGetString(stringA);                  
              printf("Input a letter (char)? ");
              scanf(" %c", &letter);                    
              n=strfirst(stringA,letter);                                      
              if (n<0)                                                         
                   printf(" \"%s\" does not contain %c\n",stringA, letter) ;     
              else                                                             
                   printf(" %c first occurs as \"%s\"[%d] \n",letter, stringA, n) ; 
 
              if (testno != 1) break;
 
    case  5 : testing("strlast");
              promptAndGetString(stringA);                  
              printf("Input a letter (char)? ");
              scanf(" %c", &letter);                    
              n=strlast(stringA,letter);                                      
              if (n<0)                                                         
                   printf(" \"%s\" does not contain %c\n",stringA, letter) ;     
              else                                                             
                   printf(" %c last occurs as \"%s\"[%d] \n",letter, stringA, n) ; 
 
              if (testno != 1) break;
 
    case  6 : testing("strcopy");
              promptAndGetString(stringA);
              strcopy(stringA,stringB);                  
              printf("Original string is\t\"%s\"\n",stringA);
              printf("..Copied string is\t\"%s\"\n",stringB);
 
              if (testno != 1) break;
 
    case  7 : testing("strhead");
              promptAndGetString(stringA);
              printf("Take how many from head? ");
              scanf(" %i",&n);
              strhead(stringA,stringB,n);                    
              printf(" First %d of \"%s\" is \"%s\"\n",n,stringA,stringB);
 
              if (testno != 1) break;
 
    case  8 : testing("strtail");
              promptAndGetString(stringA);
              printf("Take how many from tail? ");
              scanf(" %i",&n);
              strtail(stringA,stringB,n);                    
              printf(" Last %d of \"%s\" is \"%s\"\n",n,stringA,stringB);
 
              if (testno != 1) break;
 
    case  9 : testing("strmid");
              promptAndGetString(stringA);
              printf("Start from which position? ");
              scanf(" %i",&start);
              printf("Up to      which position? ");
              scanf(" %i",&end);
              strmid(stringA,start,end,stringB);                    
              printf(" \"%s\" [%d .. %d] is \"%s\"\n",stringA,start,end,stringB);
 
              if (testno != 1) break;
 
    case 10 : testing("strnodup");
              promptAndGetString(stringA);
              strnodup(stringA);
              printf(" with duplicates removed is \"%s\"\n",stringA);
 
              if (testno != 1) break;
 
    case 11 : testing("isprefix");
              printf("string1: ");
              promptAndGetString(stringA);
              printf("string2: ");
              promptAndGetString(stringB);
              n=isprefix(stringA,stringB);
              if (n)                                                         
                   printf(" \"%s\" is a prefix of %s\n",stringA, stringB);     
              else                                                             
                   printf(" \"%s\" is NOT a prefix of %s\n",stringA, stringB);     
 
              if (testno != 1) break;
 
    case 12 : testing("Coursework Option A");
              printf("During the coursework part 2 practical test you may\n");
              printf("choose to implement this option (A).  It will be easier\n");
              printf("to implement than option B and, as such, will not gain\n");
              printf("maximum marks - even for a perfect solution. Therefore,\n");
              printf("the penalties and rewards are lower for this option.\n");
              printf("The specification of this option (A) wil be published\n");
              printf("on the day of the test itself.\n");
           
              if (testno != 1) break;
 
    case 13 : testing("Coursework Option B");
              printf("During the coursework part 2 practical test you may\n");
              printf("choose to implement this option (B).  It will be more\n");
              printf("difficult to implement than option A and, as such, will\n");
              printf("permit maximum marks to be gained.  However, a poor\n");
              printf("solution will be marked rigorously.  So the penalties\n");
              printf("and rewards are higher for this option.\n");
              printf("The specification of this option (B) wil be published\n");
              printf("on the day of the test itself.\n");
 
              if (testno != 1) break;
 
    default : printf("SWITCH ERROR: Should never get here!\n");
    } /* end switch */

    testno = promptUserForChoice();
  } /* end while */

  printf("\nBYE :-)\n");
} /* end main */

 

07b0038389a0294bf84671819dd8a050.png

   
   
Link to comment
https://linustechtips.com/topic/538010-c-programming-function-return-statements/
Share on other sites

Link to post
Share on other sites

1 hour ago, Sauron said:

You forgot to use a loop. In its current state the function only ever checks the first char in the string.

Would i need to use a while loop or something.

I'm not sure how i would implement it.

   
   
Link to post
Share on other sites

12 minutes ago, GR412 said:

Would i need to use a while loop or something.

I'm not sure how i would implement it.

You can use while and for interchangeably, they are just a little more confortable for different tasks. In this case I'd use a for:

for(i=0; i<strlen(string); i++)
	{
    	if(string[i]<='a' || string[i]>='z')
          return 0;
    }
return 1;

this loop exits with 0 if it encounters a character that isn't within the given limits. Note that this will detect as wrong even capital letters, if you don't want that just expand the boundaries.

Don't ask to ask, just ask... please 🤨

sudo chmod -R 000 /*

Link to post
Share on other sites

2 hours ago, Sauron said:

You can use while and for interchangeably, they are just a little more confortable for different tasks. In this case I'd use a for:


for(i=0; i<strlen(string); i++)
	{
    	if(string[i]<='a' || string[i]>='z')
          return 0;
    }
return 1;

this loop exits with 0 if it encounters a character that isn't within the given limits. Note that this will detect as wrong even capital letters, if you don't want that just expand the boundaries.

I understand the code, but it doesn't seem to output 1 or 0 to the console window. This is what I have in the function:

 int strisalpha(char * string)
    {
        /* returns 1 if string contains only alphabetic characters else returns 0 */
		
		char i;		
		
		for(i=0; i<strlen(string); i++)
	{
    	if(string[i]<='a' || string[i]>='z')
          return 0;
    }
          return 1;
	
    }

 

   
   
Link to post
Share on other sites

On 01/02/2016 at 1:47 AM, Midnight said:
On 01/02/2016 at 1:47 AM, Midnight said:
On 01/02/2016 at 1:47 AM, Midnight said:

Then print the output? Not sure what the big deal is...

 

Then print the output? Not sure what the big deal is...

 

 

On 01/02/2016 at 1:47 AM, Midnight said:

Then print the output? Not sure what the big deal is...

 

Then print the output? Not sure what the big deal is...

 

Well how do I do that? I don't how to make it display the 1 or 0 without using printf.

 

   
   
Link to post
Share on other sites

On 31/01/2016 at 7:10 PM, Sauron said:

You can use while and for interchangeably, they are just a little more confortable for different tasks. In this case I'd use a for:


for(i=0; i<strlen(string); i++)
	{
    	if(string[i]<='a' || string[i]>='z')
          return 0;
    }
return 1;

this loop exits with 0 if it encounters a character that isn't within the given limits. Note that this will detect as wrong even capital letters, if you don't want that just expand the boundaries.

How would I display the 1 or 0 to the console window?

   
   
Link to post
Share on other sites

11 minutes ago, GR412 said:

How would I display the 1 or 0 to the console window?

You do this using printf function, but your code should work and exercise doesn't tells you to print 0 or 1. When you choose 3 in your menu to test isaplha function and entering some word for test this code is run:

promptAndGetString(stringA);    
if (strisalpha(stringA))                           
  printf(" \"%s\" contains only alphabetic chars\n",stringA, strisalpha);    
else                                               
  printf(" \"%s\" contains non-alphabetic chars\n",stringA, strisalpha);

Let's look at strisalpha function again:

int strisalpha(char * string)
{
  /* returns 1 if string contains only alphabetic characters else returns 0 */
		
  char i;		
		
  for(i=0; i<strlen(string); i++)
  {
    if(string[i]<='a' || string[i]>='z')
    return 0;
  }
  
  return 1;
}

So, promptAndGetString is run so after that stringA contains entered word then we have if statement where strisalpha is run with stringA as its argument, strisalpha returns 0 as soon as it finds first character that is not between a to if all characters were between a to z then loop is not interrupted and after loop ends 1 is returned.

Getting back to if statement under promptAndGetString, when strisalpha returns 1 it prints out what is right under it, and if strisalpha returns 0 then it runs what is under else.

It is informative enough to know if string you entered contains only alphabetic characters. But it won't work for uppercase.

Also those printf instructions,

printf(" \"%s\" contains only alphabetic chars\n",stringA, strisalpha);

contains one place to put what is on right side, but there are two arguments on right side, first is stringA and second is function name (pointer) of strisalpha, that could be displayed as integer,

printf(" \"%s\" contains only alphabetic chars, strisaplha function pointer is %d\n",stringA, strisalpha);

but would tell you nothing informative at this point. If you still want print a digit 0 or 1 then you can just do it without passing anything to printf as additional argument, because that if statement already checked if strisalpha returns true (1) or false (0).

But if you really really want to print it no mater what, then you need to save it to variable, like:

int result = isalpha(stringA);

and then print it out:

printf("You entered \"%s\", and strisalpha returned: %d", stringA, result);

So you can see you need those placeholders like %s for string and %d for integer, and as many arguments.

 

You could even do like pritnf("0"); before return 0; and equivalent for 1. So it will print one digit just before it returns from function.

Link to post
Share on other sites

On 31/01/2016 at 7:10 PM, Sauron said:
17 minutes ago, Mr_KoKa said:
17 minutes ago, Mr_KoKa said:
17 minutes ago, Mr_KoKa said:
17 minutes ago, Mr_KoKa said:

You do this using printf function, but your code should work and exercise doesn't tells you to print 0 or 1. When you choose 3 in your menu to test isaplha function and entering some word for test this code is run:






promptAndGetString(stringA);    
if (strisalpha(stringA))                           
  printf(" \"%s\" contains only alphabetic chars\n",stringA, strisalpha);    
else                                               
  printf(" \"%s\" contains non-alphabetic chars\n",stringA, strisalpha);

Let's look at strisalpha function again:






int strisalpha(char * string)
{
  /* returns 1 if string contains only alphabetic characters else returns 0 */
		
  char i;		
		
  for(i=0; i<strlen(string); i++)
  {
    if(string[i]<='a' || string[i]>='z')
    return 0;
  }
  
  return 1;
}

So, promptAndGetString is run so after that stringA contains entered word then we have if statement where strisalpha is run with stringA as its argument, strisalpha returns 0 as soon as it finds first character that is not between a to if all characters were between a to z then loop is not interrupted and after loop ends 1 is returned.

Getting back to if statement under promptAndGetString, when strisalpha returns 1 it prints out what is right under it, and if strisalpha returns 0 then it runs what is under else.

It is informative enough to know if string you entered contains only alphabetic characters. But it won't work for uppercase.

Also those printf instructions,






printf(" \"%s\" contains only alphabetic chars\n",stringA, strisalpha);

contains one place to put what is on right side, but there are two arguments on right side, first is stringA and second is function name (pointer) of strisalpha, that could be displayed as integer,






printf(" \"%s\" contains only alphabetic chars, strisaplha function pointer is %d\n",stringA, strisalpha);

but would tell you nothing informative at this point. If you still want print a digit 0 or 1 then you can just do it without passing anything to printf as additional argument, because that if statement already checked if strisalpha returns true (1) or false (0).

But if you really really want to print it no mater what, then you need to save it to variable, like:






int result = isalpha(stringA);

and then print it out:






printf("You entered \"%s\", and strisalpha returned: %d", stringA, result);

So you can see you need those placeholders like %s for string and %d for integer, and as many arguments.

 

You could even do like pritnf("0"); before return 0; and equivalent for 1. So it will print one digit just before it returns from function.

You do this using printf function, but your code should work and exercise doesn't tells you to print 0 or 1. When you choose 3 in your menu to test isaplha function and entering some word for test this code is run:





promptAndGetString(stringA);    
if (strisalpha(stringA))                           
  printf(" \"%s\" contains only alphabetic chars\n",stringA, strisalpha);    
else                                               
  printf(" \"%s\" contains non-alphabetic chars\n",stringA, strisalpha);

Let's look at strisalpha function again:





int strisalpha(char * string)
{
  /* returns 1 if string contains only alphabetic characters else returns 0 */
		
  char i;		
		
  for(i=0; i<strlen(string); i++)
  {
    if(string[i]<='a' || string[i]>='z')
    return 0;
  }
  
  return 1;
}

So, promptAndGetString is run so after that stringA contains entered word then we have if statement where strisalpha is run with stringA as its argument, strisalpha returns 0 as soon as it finds first character that is not between a to if all characters were between a to z then loop is not interrupted and after loop ends 1 is returned.

Getting back to if statement under promptAndGetString, when strisalpha returns 1 it prints out what is right under it, and if strisalpha returns 0 then it runs what is under else.

It is informative enough to know if string you entered contains only alphabetic characters. But it won't work for uppercase.

Also those printf instructions,





printf(" \"%s\" contains only alphabetic chars\n",stringA, strisalpha);

contains one place to put what is on right side, but there are two arguments on right side, first is stringA and second is function name (pointer) of strisalpha, that could be displayed as integer,





printf(" \"%s\" contains only alphabetic chars, strisaplha function pointer is %d\n",stringA, strisalpha);

but would tell you nothing informative at this point. If you still want print a digit 0 or 1 then you can just do it without passing anything to printf as additional argument, because that if statement already checked if strisalpha returns true (1) or false (0).

But if you really really want to print it no mater what, then you need to save it to variable, like:





int result = isalpha(stringA);

and then print it out:





printf("You entered \"%s\", and strisalpha returned: %d", stringA, result);

So you can see you need those placeholders like %s for string and %d for integer, and as many arguments.

 

You could even do like pritnf("0"); before return 0; and equivalent for 1. So it will print one digit just before it returns from function.

You do this using printf function, but your code should work and exercise doesn't tells you to print 0 or 1. When you choose 3 in your menu to test isaplha function and entering some word for test this code is run:




promptAndGetString(stringA);    
if (strisalpha(stringA))                           
  printf(" \"%s\" contains only alphabetic chars\n",stringA, strisalpha);    
else                                               
  printf(" \"%s\" contains non-alphabetic chars\n",stringA, strisalpha);

Let's look at strisalpha function again:




int strisalpha(char * string)
{
  /* returns 1 if string contains only alphabetic characters else returns 0 */
		
  char i;		
		
  for(i=0; i<strlen(string); i++)
  {
    if(string[i]<='a' || string[i]>='z')
    return 0;
  }
  
  return 1;
}

So, promptAndGetString is run so after that stringA contains entered word then we have if statement where strisalpha is run with stringA as its argument, strisalpha returns 0 as soon as it finds first character that is not between a to if all characters were between a to z then loop is not interrupted and after loop ends 1 is returned.

Getting back to if statement under promptAndGetString, when strisalpha returns 1 it prints out what is right under it, and if strisalpha returns 0 then it runs what is under else.

It is informative enough to know if string you entered contains only alphabetic characters. But it won't work for uppercase.

Also those printf instructions,




printf(" \"%s\" contains only alphabetic chars\n",stringA, strisalpha);

contains one place to put what is on right side, but there are two arguments on right side, first is stringA and second is function name (pointer) of strisalpha, that could be displayed as integer,




printf(" \"%s\" contains only alphabetic chars, strisaplha function pointer is %d\n",stringA, strisalpha);

but would tell you nothing informative at this point. If you still want print a digit 0 or 1 then you can just do it without passing anything to printf as additional argument, because that if statement already checked if strisalpha returns true (1) or false (0).

But if you really really want to print it no mater what, then you need to save it to variable, like:




int result = isalpha(stringA);

and then print it out:




printf("You entered \"%s\", and strisalpha returned: %d", stringA, result);

So you can see you need those placeholders like %s for string and %d for integer, and as many arguments.

 

You could even do like pritnf("0"); before return 0; and equivalent for 1. So it will print one digit just before it returns from function.

You do this using printf function, but your code should work and exercise doesn't tells you to print 0 or 1. When you choose 3 in your menu to test isaplha function and entering some word for test this code is run:



promptAndGetString(stringA);    
if (strisalpha(stringA))                           
  printf(" \"%s\" contains only alphabetic chars\n",stringA, strisalpha);    
else                                               
  printf(" \"%s\" contains non-alphabetic chars\n",stringA, strisalpha);

Let's look at strisalpha function again:



int strisalpha(char * string)
{
  /* returns 1 if string contains only alphabetic characters else returns 0 */
		
  char i;		
		
  for(i=0; i<strlen(string); i++)
  {
    if(string[i]<='a' || string[i]>='z')
    return 0;
  }
  
  return 1;
}

So, promptAndGetString is run so after that stringA contains entered word then we have if statement where strisalpha is run with stringA as its argument, strisalpha returns 0 as soon as it finds first character that is not between a to if all characters were between a to z then loop is not interrupted and after loop ends 1 is returned.

Getting back to if statement under promptAndGetString, when strisalpha returns 1 it prints out what is right under it, and if strisalpha returns 0 then it runs what is under else.

It is informative enough to know if string you entered contains only alphabetic characters. But it won't work for uppercase.

Also those printf instructions,



printf(" \"%s\" contains only alphabetic chars\n",stringA, strisalpha);

contains one place to put what is on right side, but there are two arguments on right side, first is stringA and second is function name (pointer) of strisalpha, that could be displayed as integer,



printf(" \"%s\" contains only alphabetic chars, strisaplha function pointer is %d\n",stringA, strisalpha);

but would tell you nothing informative at this point. If you still want print a digit 0 or 1 then you can just do it without passing anything to printf as additional argument, because that if statement already checked if strisalpha returns true (1) or false (0).

But if you really really want to print it no mater what, then you need to save it to variable, like:



int result = isalpha(stringA);

and then print it out:



printf("You entered \"%s\", and strisalpha returned: %d", stringA, result);

So you can see you need those placeholders like %s for string and %d for integer, and as many arguments.

 

You could even do like pritnf("0"); before return 0; and equivalent for 1. So it will print one digit just before it returns from function.

You can use while and for interchangeably, they are just a little more confortable for different tasks. In this case I'd use a for:


for(i=0; i<strlen(string); i++)
	{
    	if(string[i]<='a' || string[i]>='z')
          return 0;
    }
return 1;

this loop exits with 0 if it encounters a character that isn't within the given limits. Note that this will detect as wrong even capital letters, if you don't want that just expand the boundaries.

Oh wow, you're right it doesn't say print the 1 or 0, i took that litrally when it said return, and thought you had to display it. I get it now. So yeah the code works fine. I've been trying to solve this for like a week, little did i know it was already solved... haha. I need to read more carefully.

   
   
Link to post
Share on other sites

1 hour ago, GR412 said:

Oh wow, you're right it doesn't say print the 1 or 0, i took that litrally when it said return, and thought you had to display it. I get it now. So yeah the code works fine. I've been trying to solve this for like a week, little did i know it was already solved... haha. I need to read more carefully.

didn't you get my PM?

Don't ask to ask, just ask... please 🤨

sudo chmod -R 000 /*

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×