Обработка символьных данных - C (СИ) (70204)

Узнай цену своей работы

Формулировка задачи:

Здравствуйте, помогите пожалуйста разобраться с задачей, я не имею даже малейшего представления с какой стороны к ней подойти, мы только закончили проходить массивы и нам безо всяких объяснений дали эту тему, в гугле я не особо много смогла найти информации на эту тему, поэтому прошу о помощи. Помогите разобраться вот с этим: В строке записан текст, имеющий вид «d1± d2±… ±dn», где di – цифры (n>1). Вычислить записанное в тексте выражение. (язык Си)

Решение задачи: «Обработка символьных данных»

textual
Листинг программы
#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;
}

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

  1. Подключение необходимых библиотек для работы с символами и строками
  2. Объявление и инициализация переменных: строки str, значения которых равно 3+4 + 5 +9 +0+ 132 + 537 - 99 +54, и переменных lv, rv, n, op, указатель на первый символ строки ptr и sscanf для чтения символов и чисел из строки
  3. Первое чтение числа с помощью функции sscanf и сохранение его в переменную lv и указание количества прочитанных символов в переменную n
  4. Переход к следующему числу, используя указатель ptr
  5. Пропуск пробелов с помощью цикла while и функции isspace
  6. Чтение операции (+, -) с помощью функции sscanf и сохранение ее в переменную op и указание количества прочитанных символов в переменную n
  7. Чтение следующего числа с помощью функции sscanf и сохранение его в переменную rv и указание количества прочитанных символов в переменную n
  8. В зависимости от операции, выполнение сложения или вычитания с помощью оператора switch
  9. Вывод значений переменных lv и rv на экран
  10. Повторение шагов 5-9 для всех чисел и операций в строке
  11. Вывод значения переменной lv после обработки всех чисел и операций
  12. Возврат 0, что означает успешное завершение программы

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


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

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

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