2 svar
76 visningar
mattegeni2000 är nöjd med hjälpen
mattegeni2000 154
Postad: 1 okt 2022 22:20

Min lärare skrev en kommentar på min uppgift. behöver någon förklara vad hon menar?

Hej, det är så att jag har fått en kommentar från min lärare där hon skrev.

"Funktionen no_special_characters har returtyp int men gör ingen return (alltså ingen return-sats). Om funktionen inte ska returnera någonting så finns det en speciell returtyp för det. Funktionen to_lower gör return 0 men detta värde tas aldrig emot vid anropet,är det verkligen nödvändigt att funktionen returnerar någonting?  I övrigt fungerar lösningen som den ska. "

Menar hon att jag ska ändra int to_lower och int no_special_character till void och ta bort return_sats från dessa funktioner? gör jag så så funkar programmet köra endå.

Ps. Har frågat henne vad hon efterfråga ,men på grund av att det är helg så kommer jag vänta på måndag tills jag får svar:

Min kod, om ni är intresserad.

#include<stdio.h>
#define SIZE 1000
#include <ctype.h>
#include<string.h>

//funktion som kollar om det är en palindrom
int isPalindrome(char inputString[]) {
	int l = 0;
	int r = strlen(inputString) - 1;


	while (r > l)
	{
		// kommer att kontrollera att alla bokstäver är lika med varandra
		if (inputString[l++] != inputString[r--]) {
			return 0;
		}// retunera 0 om det inte är en palindrom
	}
	

	return 1;

}

// funktion som ignorerar alla icke - bokstäver
void  no_special_characters(char inputString[],char outputstring[])
{
	int temp_index = 0;
	int abc = 0;
	int r = strlen(inputString);
	for (int i = 0; i < r; i++)
	{
		char abc = inputString[i];
		if (isalpha(abc) != 0)
		{
			outputstring[temp_index++] = abc;
		}
	}
	outputstring[temp_index] = '\0';

	
}

// funktion som konverterar stora bokstäver till to_lower

void to_lower(char inputstring[]) {

	int length = strlen(inputstring);

	for (int i = 0; i < length; i++)
	{
		if (isupper(inputstring[i]))
			inputstring[i] = tolower(inputstring[i]);
		
	}

	
}




int main(void) {


	int end_run = 0;
	int try_again = 1;


	while (try_again == 1) {
		

		char inputString[SIZE] = "";
		char outputstring[SIZE] = "";

		printf("Enter a string to check if it is a palindrome!\n");
		//Skannanar inmatningssträngen.
		gets_s(inputString, SIZE);

		printf("input: %s\n", inputString);
		to_lower(inputString);
		printf("lower: %s\n", inputString);
		no_special_characters(inputString, outputstring);
		printf("speci: %s\n", outputstring); // skriver inte ut mellan slag
		//Sends the string to the isPalindrome function. //If the return value is 1(true), the if statement is executed, otherwise the else statement.
		if (isPalindrome(outputstring)) {
			printf("That is a palindrome!\n");
		}
		else {
			printf("This is not a palindrome!\n");
		}

		printf("Do you want to try again: 1 for yes 0 for No?");
		scanf_s("%d", &try_again);
		while(getchar()!='\n');

		//Changes the value of running depending on whether you want to continue or not.
		if (try_again != 1) {
			end_run = 0;
		}


	}	return 0;
}
Fermatrix 7841 – Fd. Medlem
Postad: 2 okt 2022 04:52

Du ser atr ha fixat det.

Din lärare tycker att det är onödigt att du returnerar en int då du använder funktionen som en void. Det är inget fel att returnera en int. Vi gör oftast detta gör att vara säkra på att funktionen gjort det den ska. Men iofs kanske din lärare förstod att du inte riktigt gjort det av den anledningen. 

mattegeni2000 154
Postad: 2 okt 2022 11:22
Dracaena skrev:

Du ser atr ha fixat det.

Din lärare tycker att det är onödigt att du returnerar en int då du använder funktionen som en void. Det är inget fel att returnera en int. Vi gör oftast detta gör att vara säkra på att funktionen gjort det den ska. Men iofs kanske din lärare förstod att du inte riktigt gjort det av den anledningen. 

ok tack så mycket, jag ändrarde från int till void

Svara Avbryt
Close