Вычислить значение этого выражения, пепреданного как параметр в main - C (СИ)
Формулировка задачи:
Здравствуйте, Вот и подкатило новое условие.
В параметрах командной строки передается выражение,
содержащее целые положительные числа и действия (сложение и вычитание).
Вычислить значение этого выражения. Действия от чисел могут быть отделены
при вводе символами пробела. (20 баллов).
Буду благодарен, если подскажите как делать.) Код не нужен, сам напишу.)
В принципе есть идея небольшая, плюс это 1, минус это 0. А там дальше считывать по символу используя atoi. Если это число то atoi вернёт единицу, если нет - ноль. Таким образом разветвить. Ну а дальше по шаблону, например если следующий минус, то след. параметр из строки - это число. Превращаем его в число и умножаем на -1.
Решение задачи: «Вычислить значение этого выражения, пепреданного как параметр в main»
textual
Листинг программы
int sum = 0; char pm = '+'; for(i=1; i<argc; i++) { if (i%2==0) pm = *argv[i]; else { int a = atoi(argv[i]); if (pm=='-') sum -= a; else sum += a; } }
Объяснение кода листинга программы
В этом коде:
- Объявлены две переменные:
sum
иpm
. - Переменная
sum
инициализирована нулем. Это будет результатом вычисления выражения. - Переменная
pm
инициализирована знаком+
. Это может быть оператором сложения в выражении. - Затем следует цикл
for
, который начинается с первого аргумента командной строки (argc
) и продолжается до тех пор, пока индекс не станет четным (это означает, что мы перебрали все нечетные индексы). - Внутри цикла проверяется, является ли индекс четным (это означает, что мы проверяем каждый второй нечетный индекс).
- Если индекс четный, то знак оператора (
pm
) присваивается символу в массиве аргументов (*argv[i]
). - Если индекс нечетный, то из аргументов извлекается строка (
argv[i]
), которую мы предполагаем, что можно преобразовать в целое число (atoi(argv[i])
). - Затем проверяется знак оператора (
pm
). Если он равен минусу (-
), то значение переменнойsum
уменьшается на полученное целое число. Если знак оператора равен плюсу (+
), то значение переменнойsum
увеличивается на полученное целое число. - После завершения цикла значение переменной
sum
будет результатом вычисления выражения. Этот код выполняет простую арифметическую операцию (сложение или вычитание) над последовательностью аргументов командной строки и выводит результат.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д