Обработка символьных данных - C (СИ) (70156)
Формулировка задачи:
Здравствуйте мне нужна помощь, у меня есть код для выполнения моей задачи смысл задачи в том чтобы считать выражения допустим 256+789-785(работает со знаками +-), но в нем нужно прописать условие при котором если знаки будут повторяться то программа должна прописать ошибку допустим если будет так 23++++98 должна быть ошибка, я не могу понять как прописать это условие помогите разобраться пожалуйста. Язык Си. Вот код.
#include <stdio.h> #include <stdlib.h> #include <ctype.h> int main(void) { char str[] = "3+4 + 5 +9 +0+ 132 + 537 - 99 +54"; int lv = 0, rv = 0, n = 0, op = 0; char* ptr = str; sscanf(ptr, "%d%n", &lv, &n); ptr += n; while(*ptr) { while(isspace(*ptr)) ptr++; sscanf(ptr, "%c%n", &op, &n); ptr += n; sscanf(ptr, "%d%n", &rv, &n); ptr += n; switch(op) { case '+': lv += rv; break; case '-': lv -= rv; break; default: ptr++; } printf("lv: %d rv: %d\n", lv, rv); } printf("lv: %d\n", lv); return 0; }
Решение задачи: «Обработка символьных данных»
textual
Листинг программы
char c; sscanf(ptr, "%c", &c); if (c == op) { fprintf(stderr, "Error\n"); return 1; }
Объяснение кода листинга программы
- Вводится переменная типа char c;
- С помощью функции sscanf происходит чтение символа из указателя ptr и сохранение его в переменной c;
- Производится сравнение значения переменной c с символом op;
- Если c равно op, то выводится сообщение об ошибке
Error
в стандартный поток ошибок stderr и функция возвращает 1; - Если c не равно op, то ничего не происходит и функция продолжает работу.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д