Напишите программу, которая добавляет или удаляет пробелы для удобного форматирования кода. Правила того, как должен выглядеть код, когда вы закончите:
- Ни одна строка не должна содержать более одного
{и}. - 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
}
;