Вычислите значение выражения, предполагая, что действия выполняются согласно правилам арифметики - C (СИ)

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

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

народ выручайте, беда, дали задачу вроде простенькая а справится не могу, аж стыдно. Дана последовательность символов, имеющая следующий вид: p1q1p2q2p3qn–1pn , где pi — цифра, а qi — знак арифметического действия из набора {+, –, *}. Вычислите значение выражения, предполагая, что действия выполняются согласно правилам арифметики. Входные данные На вход программе подается строка указанного вида, состоящая не более чем из 9 цифр, разделенных символами арифметических операций. Выходные данные Выведите значение арифметического выражения. тут же нашел её на паскале, но чёт это мне не помогло ибо алгоритм я и до этого представлял. Вычислить значение арифметического выражения.

Решение задачи: «Вычислите значение выражения, предполагая, что действия выполняются согласно правилам арифметики»

textual
Листинг программы
 int main()
{
    setlocale( LC_ALL,"Russian" );
    char str[20]; // сюда исходную строку
    int  arr[20]; // сюда числа и операции 
    char c;
    int i, is, ia; // индексы
    printf("Введите строку цифр и операций: ");
    scanf("%s",str);
//  strcpy(str,"1+2*3+4*5+9");
    ia=0; // индекс элемента, куда пишем число/операцию
    // сканируем строку, заполняем arr 
    for (is=0; str[is];++is)  {
        c=str[is];
        switch(c) {
        case '+':   
        case '-':   
        case '*':   arr[ia++]=c;    break;
        default: 
            if (ia>0 && arr[ia-1]=='*') 
                // умножаем то, что есть, на очередное число
                arr[--ia-1]*=str[is]-'0';
            else
            arr[ia++]=str[is]-'0';
        }
    }
    // остались + и -
    i=arr[0]; // результат
    for (is=1;is<ia;is+=2) {
        if (arr[is]=='+') 
            i+=arr[is+1];
        else
            i-=arr[is+1];
    }
    printf("%d",i);
    return 0;
 
}

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

В этом коде:

  1. Устанавливается локальная настройка для вывода русских символов.
  2. Вводятся две массивы: один для хранения строки, другой для хранения чисел и операций.
  3. Вводится символ, который используется как разделитель между числами и операциями.
  4. Происходит проход по строке, разделенной по символу, используя цикл for.
  5. Для каждого символа в строке выполняется проверка на операцию (сложение, вычитание или умножение) и записывается в соответствующий массив.
  6. Если символ не является операцией, он преобразуется в число и записывается в массив.
  7. Если в массиве есть предыдущее число и текущий символ является знаком умножения, то выполняется умножение.
  8. Происходит проход по массиву с числами, начиная с первого элемента, и выполняется последовательное сложение или вычитание в зависимости от операции.
  9. Выводится результат.

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


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

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

8   голосов , оценка 4 из 5