Символы между скобками - C (СИ)
Формулировка задачи:
Здраствуйте, в программе надо проверить, если между скобками есть только цифры, к примеру (12345), то программа выводит ошибку, подскажите, как это реализовать
Решение задачи: «Символы между скобками»
textual
Листинг программы
#include<stdio.h> int main() { char s[] = "a=(11134a)sd\0"; int i = 0, state = 0, dig = -1; while (s[i]) { if (s[i] == '(') state = 1; else { if (s[i] != ')' && state == 1) { if ('0' <= s[i] && s[i] <= '9') { if (dig == -1) dig = 1; } else dig = 0; } else if (s[i] == ')') { state = 2; break; } } i++; } if (state != 2 || dig == -1) printf("invalid expression"); else { if (dig == 1) printf("error"); else printf("ok"); } getchar(); return 0; }
Объяснение кода листинга программы
- Включаем заголовочный файл stdio.h для использования функций ввода-вывода
- Объявляем переменную s типа char массив с пустым строковым литералом
a=(11134a)sd\0
в качестве инициализатора - Объявляем переменные i, state и dig типа int со стартовыми значениями 0
- Входим в цикл while, который будет выполняться до тех пор, пока s[i] не станет нулевым (что означает конец строки)
- Внутри цикла проверяем, равно ли текущее значение s[i] '('
- Если да, то переводим state в 1, иначе переводим state обратно в 0
- Если s[i] не равно ')', и state равно 1, то проверяем, является ли текущее значение s[i] числом от 0 до 9 (используя символы строки для сравнения)
- Если текущее значение s[i] является числом от 0 до 9, то переводим dig в 1, иначе переводим dig обратно в -1
- Если s[i] равно ')', то переводим state в 2 и прерываем цикл с помощью оператора break
- После окончания цикла проверяем, равно ли state 2 и dig не равно -1 (что означает ошибку)
- Если это так, то выводим
invalid expression
- Если все в порядке, то проверяем, равно ли dig 1
- Если это так, то выводим
error
- Если dig не равно 1, то выводим
ok
- Позволяем программе читать символ из стандартного ввода с помощью функции getchar
- Возвращаем 0, чтобы указать, что программа успешно завершилась
- Код не обрабатывает ситуацию, когда вводное выражение отсутствует скобки, что может привести к неопределенному поведению
- Код также не обрабатывает ситуацию, когда вводное выражение содержит несколько чисел, разделенных пробелами, что может привести к неправильной обработке
- Код не обрабатывает ситуацию, когда вводное выражение содержит числа, которые не являются действительными десятичными числами, что может привести к неправильной обработке
- Код не обрабатывает ситуацию, когда вводное выражение содержит символы, которые не являются числами или скобками, что может привести к неправильной обработке
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д