Напишите программу, которая добавляет или удаляет пробелы для удобного форматирования кода. Правила того, как должен выглядеть код, когда вы закончите:
- Ни одна строка не должна содержать более одного
{
и}
. - A
{
всегда должен быть последним в строке. - A
}
всегда должно быть единственным в строке (кроме пробела, который стоит перед ним). - Количество пробелов перед каждой строкой должно быть фиксированным кратным текущего числа вложений. (Вы можете использовать любое количество отступов, если оно не изменится.)
- Запрещается вставлять или удалять пробелы, которые не способствуют выполнению одного из этих правил.
Число вложений для первой строки равно 0. Число вложений любой другой строки - это число вложений предыдущей строки, плюс один, если предыдущая строка содержит a {
, минус один, если текущая строка содержит a }
.
{
и }
внутри строковые литералы и комментарии не учитываются в вышеуказанных правилах. Строковый литерал - это текст, заключенный в одинарные или двойные кавычки, где одинарные или двойные кавычки с нечетным числом обратных косых черт непосредственно перед ними не интерпретируются как конец строкового литерала. Комментарий является текст , заключенный в /*
и */
, или текст , идя от //
конца линии. В строке несколько маркеров начала комментария, учитывается только первый. Комментарии не анализируются внутри строковых литералов.
Примеры
main() {printf("Hello!"); // I don't care about the world...
}
becomes:
main() {
printf("Hello!"); // I don't care about the world...
}
int main(){
puts("a");
puts("b");
}
becomes:
int main(){
puts("a");
puts("b");
}
main()
{ printf("{"); /* }
} */
printf("}//}"); ///*
}
becomes:
main()
{
printf("{"); /* }
} */
printf("}//}"); ///*
}
int test[] = {1, 2, 3};
becomes:
int test[] = {
1, 2, 3
}
;