This has been a long evening, I am trying to get this code to work all night, and all yesterday, too.
Anyway this is what I have:
I get an error that says that the very last line:Code:#include <stdio.h> #include <string.h> #include <ctype.h> #define STSIZE 30 void reverse(char *s, int first, int last); void swap(char *p, char *q); int maybepalind(char opalinds[], char palinds[]); int main (void) { /*character array declarations*/ char palind[STSIZE]; char palinds[STSIZE]; char opalinds[STSIZE]; /*variable declarations*/ int i = 0; int j = 0; int k = 0; int palans = 0; /*banner and prompt for user*/ printf("Enter a string of characters."); printf("\nThe computer will determine if the string is a palindrome"); printf("\n(spelled the same frontwards and backwards)."); printf("\nEnter your string of characters for evaluation: > "); gets(palind); printf("%s\n", palind); int n = strlen(palind); /*makes all upper case letters lower case*/ for( i = 0; i < n; ++i) if(isupper(palind[i])) palind[i] = tolower(palind[i]); /*removes all spaces and punctuation*/ while(palind[k] != '\0' && k < n) { if(palind[k] != ' ' && !ispunct(palind[k])) { palinds[j] = palind[k]; ++j; } ++k; } palinds[j] = '\0'; /*terminates new character array*/ printf("%s\n", palinds); /*copies array to new array for comparison in function below*/ char strcpy(char opalinds, char palinds); /*function call to reverse letters in character array for comparison*/ reverse(palinds, 0, n); /*function call to actually do the palindrome comparison on original and reverse string*/ /*sets palins equal to the value returned by function*/ palans = maybepalind(opalinds, palinds); /*if function maybepalind returns '1' the string is a palindrome and that is printed*/ /*if the funtions returns a '0' the string is NOT a palindrome and that is printed.*/ if (palans = 1) printf("\nThe character string : %s is a PALINDROME!\n", palind); else printf("\nThe character string : %s is NOT a PALINDROME!\n", palind); } /*function to reverse the characters in the string*/ void reverse(char *s, int first, int last) { if (first < last) { swap(&s[first], &s[last]); reverse(s, ++first, --last); } } /*the swap function called by the reverse function*/ void swap(char *p, char *q) { char tmp; tmp = *p; *p = *q; *q = tmp; } /*the palindrome check function*/ int maybepalind(char opalinds[], char palinds[]) { int first = 0; int ans = 0; if(opalinds[first] = '\0') ans = 1; else if (opalinds[first] != palinds[first]) { printf("%c %c\n", opalinds[first], palinds[first]); ans = 0; } else maybepalind(opalinds[first + 1], palinds[first + 1]); return (ans); }
maybepalins(opalinds[first + 1], palinds[first + 1]);
cannot convert parameter 1 from char to char[].
I am not sure what that means. I have tried every change I can think of.
If anyone has any ideas I would appreciate the input. Staring at this code so long I think I am going crosseyed.
Once I can get it to compile I think it is returning 1 all the time, because the string, no matter what I type in is always a palindrome.
Thanks Everyone!!!



LinkBack URL
About LinkBacks



