Palindrom ta bort allt som inte är bokstväver
hej ska göra ett palindrom program och jag ska se till att den tar en sträng som parameter och tar bort allt som inte är bokstäver från den.
problemet är att mitt program tar inte bort allt som inte är boskstäver och min frågan är vad har jag missat eller vad har jag gjort för fel?
min kod;
#include<stdio.h>
#define SIZE 1000
int isPalindrome(char inputString[]) {
int l = 0;
int r = strlen(inputString) - 1;
while (r > l)
{
// kommer kolla alla bokstväver är lika med varandra
if (inputString[l++] != inputString[r--]) {
return 0; // return 0 om den är inte palindrom
}
}
// palindrome
return 1;
}
int no_special_characters(char inputString[]) {
char abc;
char temp[SIZE];
int temp_index = 0;
int result=0;
int r = strlen(inputString);
for (int i = 0; i < r; i++) {
abc = inputString[i];
if (isalpha(abc) != 0) {
temp[temp_index] = abc;
temp_index++;
}
}
temp[temp_index] = '\0';
int result = isPalindrome(temp);
return result;
}
void to_lower(char inputstring[])
{
//inputstring[i] = tolower(inputstring[i])
}
int main() {
char str[SIZE];
//fgets str
printf("\n %d", isPalindrome("nolemonnomelon"));
printf("\n %d", isPalindrome("No lemon, ni Melon"));
return 0;
}
Jag ser inte att du någonsin anropar no_special_characters?
Förslag: Kör koden i debugger eller lägg in lite spårutskrifter så att du ser vilka delar som exekveras och i vilken ordning.
du kunde också ropat tolower i "no_special_characters()" när du ändå håller på. Jag antar koden kompilerar inte för du har deklarerat "result" två gånger i "no_special_characters", du kan helt enkelt ta bort "result"
int no_special_characters(char inputString[])
{
char temp[SIZE];
int temp_index = 0;
int r = strlen(inputString);
for (int i = 0; i < r; i++)
{
char abc = tolower(inputString[i]); // <--
if (isalpha(abc) != 0)
{
temp[temp_index++] = abc;
}
}
temp[temp_index] = '\0';
return isPalindrome(temp);
}
anders_k skrev:du kunde också ropat tolower i "no_special_characters()" när du ändå håller på. Jag antar koden kompilerar inte för du har deklarerat "result" två gånger i "no_special_characters", du kan helt enkelt ta bort "result"
int no_special_characters(char inputString[]) { char temp[SIZE]; int temp_index = 0; int r = strlen(inputString); for (int i = 0; i < r; i++) { char abc = tolower(inputString[i]); // <-- if (isalpha(abc) != 0) { temp[temp_index++] = abc; } } temp[temp_index] = '\0'; return isPalindrome(temp); }
tack så mycket!, du är bäst
mattegeni2000 skrev:anders_k skrev:du kunde också ropat tolower i "no_special_characters()" när du ändå håller på. Jag antar koden kompilerar inte för du har deklarerat "result" två gånger i "no_special_characters", du kan helt enkelt ta bort "result"
int no_special_characters(char inputString[]) { char temp[SIZE]; int temp_index = 0; int r = strlen(inputString); for (int i = 0; i < r; i++) { char abc = tolower(inputString[i]); // <-- if (isalpha(abc) != 0) { temp[temp_index++] = abc; } } temp[temp_index] = '\0'; return isPalindrome(temp); }
tack så mycket!, du är bäst
varför tog du bort abc variabeln?
mattegeni2000 skrev:mattegeni2000 skrev:anders_k skrev:du kunde också ropat tolower i "no_special_characters()" när du ändå håller på. Jag antar koden kompilerar inte för du har deklarerat "result" två gånger i "no_special_characters", du kan helt enkelt ta bort "result"
int no_special_characters(char inputString[]) { char temp[SIZE]; int temp_index = 0; int r = strlen(inputString); for (int i = 0; i < r; i++) { char abc = tolower(inputString[i]); // <-- if (isalpha(abc) != 0) { temp[temp_index++] = abc; } } temp[temp_index] = '\0'; return isPalindrome(temp); }
tack så mycket!, du är bäst
jag får fram en varning som
Warning C4013 'isalpha' undefined; assuming extern returning int Project Palindrom C. vad är det för nåt?ps: är ny på programmering
mattegeni2000 skrev:mattegeni2000 skrev:mattegeni2000 skrev:anders_k skrev:du kunde också ropat tolower i "no_special_characters()" när du ändå håller på. Jag antar koden kompilerar inte för du har deklarerat "result" två gånger i "no_special_characters", du kan helt enkelt ta bort "result"
int no_special_characters(char inputString[]) { char temp[SIZE]; int temp_index = 0; int r = strlen(inputString); for (int i = 0; i < r; i++) { char abc = tolower(inputString[i]); // <-- if (isalpha(abc) != 0) { temp[temp_index++] = abc; } } temp[temp_index] = '\0'; return isPalindrome(temp); }
tack så mycket!, du är bäst
jag får fram en varning som
Warning C4013 'isalpha' undefined; assuming extern returning int Project Palindrom C. vad är det för nåt?ps: är ny på programmering
isalpha finns i headern ctype.h gör
#include <ctype.h>
överst.
Jag bara flyttade "abc" till där den används, normalt är det bättre att deklarera variabler där de används, det gör programmet lättare att läsa.