так что в моем курсе CS мы должны сделать калькулятор, который читает входные данные, а затем вычисляет результат после того, как знак = был прочитан.
Ввод всегда состоит из одного числа, за которым следует оператор.
Я сейчас борюсь со способом сканирования ввода. Я хочу использовать некоторый цикл, который всегда будет хранить его как:
scanf("%lf %s ", &in, c);
Примечание: калькулятор выполняет одну операцию за другой. Таким образом, в приведенном ниже примере знак плюс работает только для 20 и 4, и только тогда результат принимает знак деления и делится на 8. Затем новый результат отменяется строкой 'neg'.
Например: вход: 20 + 4/8 отриц. =
Выход: Результат: -3
Вот как я пытался это решить. Моим намерением было заставить цикл хранить каждое число в новом «ящике» массива, а затем сохранять каждую строку в новой «строке» массива char. Массив 4 in op предназначен для установки максимальной длины строки, потому что я знаю, что самая длинная строка, которая может встречаться, это "sqrt".
Я вижу, что '\ n' в условии for, вероятно, бесполезно, но не может понять, как это сделать ...
Я подумываю об использовании цикла for или while.
int main(){
double in[10];
char op[5][4];
for(int i=0; i<5;i++){
scanf("%lf %s ", &in[i], op[i][4]);
}
printf("%.3f %s", in[0], op[0][0]);
return 0;
}
// просто «скелет» кода. Это еще не все, но здесь я представил только ту часть, с которой я борюсь.
Например, если я запускаю этот код, я хочу записать несколько цифр, а затем оператор в поле ввода.
Я ожидаю, что он напечатает первое число и строку (просто чтобы проверить, работает ли цикл).
Но на самом деле он абсолютно ничего не делает и просто возвращает мне большое отрицательное число в качестве возврата.