Обработка символьных данных - 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;
}

Объяснение кода листинга программы

  1. Вводится переменная типа char c;
  2. С помощью функции sscanf происходит чтение символа из указателя ptr и сохранение его в переменной c;
  3. Производится сравнение значения переменной c с символом op;
  4. Если c равно op, то выводится сообщение об ошибке Error в стандартный поток ошибок stderr и функция возвращает 1;
  5. Если c не равно op, то ничего не происходит и функция продолжает работу.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 3.933 из 5
Похожие ответы