Wątek przeniesiony 2018-01-02 19:14 z C/C++ przez kq.

Ocena kodu i sugestie co można poprawić

0

Witam.

Dzisiaj siedziałem nad zadaniem Zabawne Dodawanie Piotrusia ze strony SPOJ.
Sędzia zaliczył kod ale chciałbym się dowiedzieć co mogę w nim jeszcze poprawić i czy w ogóle jest w miarę dobrze napisany.

Przesyłam link z kodem na ideone.com.
https://ideone.com/S3sLU6

1

Przede wszystkim usuń zbędne komentarze - kod powinien sam siebie opisywać a jeżeli tego nie robi to poprawiasz tak aby nie było komentarzy (w większości wypadków).

int i i int l wrzuciłbym do pętli tak aby ograniczyć ich zakres. Zaleca się również nieużywanie l bo zbyt bardzo przypomina i.
Zmienna h jest używana tylko w funkcji palindrome, dlaczego więc jest globalna?

0

zmienne jednoliterowe są passe.
Możesz rozdzielić obliczenia od faktycznego obliczenia. Chodzi mi głównie o cout w funkcji palindrome. Poza tym ta funkcja powinna zwracać bool'a a nie void :)

Co do samego ifa w linii 34, to bym to w stylu

if (i >= j)
	{
		// coś tam
                return wynik;
	}

// kolejne obliczenia

wtedy pozbywasz się zbędnych klamr.

0

void palindrome(string b) //Funkcja sprawdzajaca czy liczba jest polindromem

  1. komentarz nie potrzebny
  2. skoro sprawdza cos, to czemu zwraca void?
  3. co to ma byc to b? nazywaj zmienne by mialy sens
  4. Nazwa funkcji jest tez bez sensu IsPalindrome(std::string inputText)

int h = 0;

  1. nie potrzebujesz zmiennych globalnych
  2. zmienne globalne inicjalizuja sie same (nie musisz przypisywac zera)

void palindrome(string b);
podziel pliki na dwa. Nie bedziesz miec deklaracji funkcji

letter
w sensie ze list? W ogole nie rozumiem po co chcesz sprawdzac czy list (pocztowy) jest palindromem ;o

cin >> count;
	for (int i = 0; i < count; i++)
	{
		cin >> letter;
		palindrome(letter);
	}

co tu chciales osiagnac? Bo za pewne mozna zrobic to prosciej i czytelniej

int i, j;
zmienne bezsensu. NIe oddaja zupelnie nic co maja robic

w ogole ta funkcja jest... zbyt skomplikowana. Nie wymyslaj kola od nowa

if (inputText == string(inputText.rbegin(), inputText.rend())) {
   return true;
}

1 użytkowników online, w tym zalogowanych: 0, gości: 1