// задача №2 "комментарий"
// Быков Владислав Андреевич
// email - i596655@yandex.ru
import java.io.File;
import java.io.FileNotFoundException;
import java.io.PrintWriter;
import java.util.Scanner;
public class comment {
public static void main(String[] args) throws FileNotFoundException {
String s = "";
Scanner sc = new Scanner(new File("input.txt"));
while (sc.hasNext()) {
s = s + sc.nextLine();
}
s = s + " "; // добавляю пробел на случай, если последним символом
// окажется * или /
boolean skobki = false; // переменная отвечает за информацию об октрытых
// скобках
boolean coomment = false; // переменная отвечает за информацию о начатом
// комментарии
boolean error2 = false; // переменная отвечает за информацию о второй
// ошибке
int i = 0; // номер символа в строке
while (i < s.length()) { // идем от начала до конца строки
char t = s.charAt(i); // в т храним текущий символ
if (t == ('\"')) // если это "
skobki = (!skobki); // то меняем информацию о скобках
else if ((t == '/') && (s.charAt(i + 1) == '*') && (!coomment)
&& (!skobki)) {
coomment = true;
i++;// т.к комментарий 2 символа, то и двигаемся на два символа
// вперед: один здесь другой ниже
} else if ((t == '*') && (s.charAt(i + 1) == '/')) {
if (coomment == true) {
coomment = false;
} else if (!skobki) { // если комментарий не начат и скобки не
// открыты, то значит ошибка
error2 = true;
}
i++; // т.к комментарий 2 символа, то и двигаемся на два символа
// вперед: один здесь другой ниже
}
i++; // двигаемся на 1 символ вперед
}
PrintWriter pw = new PrintWriter("output.txt");
if (coomment == true)
pw.println("Error 1");
else if (error2 == true)
pw.println("Error 2");
else
pw.println("No error");
sc.close();
pw.close();
}
}
Vladislav_133 писал(а):На мой взгляд в этой задаче есть только один момент, который сходу можно упустить при программировании.
Если программа нашла начало или конец комментария, то далее следует пропустить один символ,
чтобы проверять уже за началом или концом. Мне кажется большинство ошибок у участников в этом и состояли.
/*asdasdasd*/"/*"
Вернуться в Олимпиада по программированию
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 5