Scrivi un programma che aggiunge o rimuove spazi bianchi per formattare il codice in modo corretto. Regole per l'aspetto del codice al termine:
- Nessuna riga deve contenere più di una di
{
e}
. - A
{
dovrebbe essere sempre l'ultima cosa su una linea. - A
}
dovrebbe essere sempre l' unica cosa su una linea (oltre agli spazi bianchi che la precedono). - La quantità di spazio bianco davanti a ciascuna riga dovrebbe essere un multiplo fisso del conteggio di nidificazione corrente. (È possibile utilizzare qualsiasi quantità di rientro desiderata, purché non cambi.)
- Nessuno spazio bianco deve essere inserito o rimosso che non contribuisce a soddisfare una di queste regole.
Il conteggio di annidamento per la prima riga è 0. Il conteggio di annidamento di qualsiasi altra riga è il conteggio di annidamento della riga precedente, più uno se la riga precedente contiene a {
, meno uno se la riga corrente contiene a }
.
{
e }
all'interno di stringhe letterali e commenti non contano nelle regole precedenti. Un valore letterale stringa è il testo racchiuso tra virgolette singole o doppie, in cui le virgolette singole o doppie con un numero dispari di barre rovesciate immediatamente prima di esse non vengono interpretate come la fine del valore letterale stringa. Un commento è il testo racchiuso tra /*
e */
e il testo che va dalla //
fine della riga. In una riga più marcatori di inizio commenti, conta solo il primo. I commenti non vengono analizzati all'interno dei valori letterali delle stringhe.
Esempi
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
}
;