6 svar
101 visningar
mattegeni2000 är nöjd med hjälpen
mattegeni2000 154
Postad: 26 sep 2022 18:43 Redigerad: 26 sep 2022 19:00

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;


}

Yngve 37894 – Livehjälpare
Postad: 26 sep 2022 19:21 Redigerad: 26 sep 2022 19:23

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.

anders_k Online 234
Postad: 26 sep 2022 21:35 Redigerad: 26 sep 2022 21:36

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);
}
mattegeni2000 154
Postad: 26 sep 2022 21:50
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 154
Postad: 26 sep 2022 22:00
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 154
Postad: 26 sep 2022 22:09
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

anders_k Online 234
Postad: 27 sep 2022 05:39
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.

Svara Avbryt
Close