Контрольная работа №1. Кальсина Яна. Б43#6
Контрольная работа №1. Кальсина Яна. Б43#6yaprogrammer18-yanchi wants to merge 1 commit intomainfrom
Conversation
WoWaster
left a comment
There was a problem hiding this comment.
+1 балл за дедлайн пойдёт в фибоначчи. Но в целом.
Настройте, пожалуйста, форматер и форматирование по Ctrl+S.
| // временная переменная, она будет содержать в себе числа фибоначчи | ||
| int tmp = 0; |
There was a problem hiding this comment.
Временные переменные лучше создать в месте использование. В данном случае прямо внутри цикла было бы лучше.
| // рекурсивная функция просто считающая числа фиббоначи, принимает номер числа | ||
| // возвращает число фибоначчи |
There was a problem hiding this comment.
| // рекурсивная функция просто считающая числа фиббоначи, принимает номер числа | |
| // возвращает число фибоначчи | |
| // рекурсивная функция просто считающая числа фибоначчи, принимает номер числа | |
| // возвращает число фибоначчи |
:)
There was a problem hiding this comment.
Зачтено. 9 баллов. -1 за отступы и фигурные скобки у функций не по стайлгайду.
| // первый номер равен 0, так что его можно не считать отдельно | ||
| int number = 1; | ||
| while (tmp <= 1000000) { | ||
| if ((tmp % 2) == 0) { |
There was a problem hiding this comment.
| if ((tmp % 2) == 0) { | |
| if (tmp % 2 == 0) { |
Так тоже можно
| #include <stdio.h> | ||
| #include <stdlib.h> | ||
|
|
||
| bool palindrom(char *line, int counter) { |
There was a problem hiding this comment.
По стайлгайду и вообще с точки зрения грамотного английского --- isPalindrome(char *str, int len)
There was a problem hiding this comment.
Содержательно функция делает не то, что просили, она просто проверяет является ли строка палиндромом, не думая о пробелах.
| if ((counter % 2) == 0) { | ||
| for (int i = 0; i < (counter / 2); i++) | ||
| if (line[i] != line[counter - i - 1]) { | ||
| return false; | ||
| } | ||
| } else { | ||
| for (int i = 0; i < (counter / 2); i++) | ||
| if (line[i] != line[counter - i - 1]) { | ||
| printf("%c %c\n", line[i], line[counter - i - 1]); | ||
| return false; | ||
| } | ||
| } |
There was a problem hiding this comment.
В теле if и else абсолютно одинаковый код по модулю printf во втором случае. Не надо так.
| return true; | ||
| } | ||
|
|
||
| int main() { |
There was a problem hiding this comment.
Вот здесь Вы попали в ловушку, потому что не следовали правилу "ввод-вывод отдельно, логика отдельно". Вы пытаетесь очистить строку от пробелов при вводе. Однако в итоге у Вас получается не C-string (нет '\0' в конце), а просто массив из char, который Вы ещё и забываете почистить после выполнения программы.
| // счетчик чтобы считать кол-во не пробелов | ||
| int counter = 0; |
There was a problem hiding this comment.
Если бы Вы сделали правильный C-string, то на ней бы работал strlen и можно было бы не передавать его в функцию.
| if (tmp != ' ') { | ||
| arrayWithString[counter] = tmp; | ||
| ++counter; | ||
| } |
There was a problem hiding this comment.
И ещё вопрос: а пользователь должен вводить длину строки с пробелами или нет? Потому что сейчас у Вас кучу места в массиве остаётся неиспользованным.
There was a problem hiding this comment.
Я сломался считать косяки в этой задачке. Так что пусть будет 4 балла и всё.
Добавила решения первой и второй задачи из первой контрольной работы.