Conversation
p-senichenkov
left a comment
There was a problem hiding this comment.
Сумма цифр: 6/10 (работает только в очень простом случае + мелкие недочёты)
Палиндром: 5/10 (работает неверно)
| int maxSum = 0; | ||
| int maxSumInd[6] = {0}; | ||
| for (int i = 0; i < sizeNumbers; i++) { | ||
| int sum = (numbers[i] / 10) + (numbers[i] - ((numbers[i] / 10) * 10)); |
There was a problem hiding this comment.
А что если в массиве есть трёхзначные числа?
There was a problem hiding this comment.
И ещё: для второй части этого выражения есть отдельный оператор. Подумайте, какая это арифметическая операция.
| for (int j = 0; j < sizeNumbers ;j++) | ||
| maxSumInd[j] = 0; | ||
| maxSumInd[i] = 1; |
There was a problem hiding this comment.
Вот в этом месте получается квадратичная сложность. А можно минимальными изменениями добиться линейной.
| if (num % 2 == 1) { | ||
| num = num / 2; | ||
| binNum[count] = 1; | ||
| } else { | ||
| num = num / 2; | ||
| binNum[count] = 0; | ||
| } |
There was a problem hiding this comment.
Это можно записать в две строчки.
| } | ||
|
|
||
| //printf("%d", binNum[count]); | ||
| count = count + 1; |
There was a problem hiding this comment.
| count = count + 1; | |
| ++count; |
| } | ||
|
|
||
| for (int i = 0; i <= count; i++) { | ||
| if (binNum[i] == binNum[count - i]) |
There was a problem hiding this comment.
Здесь напутаны индексы, так что программа работает неверно. Более того, здесь гарантированно происходит обращение за границами массива.
| for (int i = 1; i <= n; i++) { | ||
| int result = isPal(i); | ||
| if (result == 1) | ||
| printf("%d\n", i); |
There was a problem hiding this comment.
Я это запустил, и оно не выводит и половины всех палиндромов.
Например, для 15 выводится 1 5, хотя там ещё есть 3, 7, 9 и 15.
No description provided.