Напишите программу которая работает как простейший калькулятор - C (СИ)
Формулировка задачи:
Напишите программу которая работает как простейший калькулятор.Программой должны распознаваться следующие операторы "+" "-" "*" "/" "S" "E".
Оператор S используется для сохранения числа в аккумуляторе.
Оператор E для выхода из программы.
Арифметические операции выполняются с содержимым аккумулятора и числом,введенным пользователем.
Не понимаю почему не работает в цикле.
#include <stdio.h>
int main(void){
int number,number2;
char oper;
printf("Enter accum:\n");
scanf("%i\n",&number);
do{
printf("enter a number and operator:\n");
scanf("%i %c\n",&number2,&oper);
switch(oper){
case '+':
printf("%i",number+number2);
break;
case '-':
printf("%i",number-number2);
break;
case '*':
printf("%i",number*number2);
break;
case '/':
if(number2==0)
printf("Zero!");
else
printf("%i",number/number2);
break;
default:
printf("Wrong operator");
break;
}
}while(oper=='E');
printf("Break");
}Решение задачи: «Напишите программу которая работает как простейший калькулятор»
textual
Листинг программы
#include <stdio.h>
void func_sloghenie(float,float);
void func_delenie(float,float);
void func_delenieapp(float,float);
void func_vichitanie(float,float);
void func_vichitanieapp(float,float);
void func_ymnoghenie(float,float);
float func_zaprosc(float t[]);
int main ()
{
float t[2];
int q;
itsone:
printf("\n\n\n\nМЕНЮ:\n"
"1: Умножение\n"
"2: Деление\n"
"3: Деление большего числа на меньшее\n"
"4: Вычитание\n"
"5: Вычитание из большего числа - меньшее\n"
"6: Сложение\n"
"7: Выход\n\n\n\n");
while ((q=getchar())!=EOF)
{
switch(q)
{
case '1':
func_zaprosc(t);
func_ymnoghenie(t[0],t[1]);
goto itsone;
case '2':
func_zaprosc(t);
func_delenie(t[0],t[1]);
goto itsone;
case '3':
func_zaprosc(t);
func_delenieapp(t[0],t[1]);
goto itsone;
case '4':
func_zaprosc(t);
func_vichitanie(t[0],t[1]);
goto itsone;
case '5':
func_zaprosc(t);
func_vichitanieapp(t[0],t[1]);
goto itsone;
case '6':
func_zaprosc(t);
func_sloghenie(t[0],t[1]);
goto itsone;
case '7':
return 0;
}
}
return 0;
}
void func_sloghenie(float a,float b)
{
printf("%f",a+b);
}
void func_delenie(float a,float b)
{
printf("%f\n",a/b);
}
void func_delenieapp(float a,float b)
{
a>b?printf("%f\n",a/b):printf("%f\n",b/a);
}
void func_vichitanie(float a,float b)
{
printf ("%f\n",a-b);
}
void func_vichitanieapp(float a,float b)
{
a>b?printf("%f\n",a-b):printf("%f\n",b-a);
}
void func_ymnoghenie(float a,float b)
{
printf("%f",a*b);
}
float func_zaprosc(float t[])
{
int l,j;
for (l=1,j=0;l<=2 && j<2;l++,j++)
{
printf("\n\nВведите значение %d:\n\n",l);
scanf("%f",&t[j]);
}
return t[2];
}
Объяснение кода листинга программы
- В функции
mainсоздается массивtразмером 2 для хранения введенных пользователем чисел. - Затем программа предлагает пользователю выбрать операцию для выполнения, выводя на экран меню.
- После получения выбора пользователя программа вызывает соответствующую функцию для выполнения операции.
- В функции
func_sloghenieпроисходит сложение двух чисел и результат выводится на экран. - В функции
func_delenieпроисходит деление одного числа на другое и результат выводится на экран. - В функции
func_delenieappпроисходит проверка, является ли первое число больше второго, и в зависимости от этого происходит деление или второго числа на первое. - В функции
func_vichitanieпроисходит вычитание двух чисел и результат выводится на экран. - В функции
func_vichitanieappпроисходит проверка, является ли первое число больше второго, и в зависимости от этого происходит вычитание или второго числа из первого. - В функции
func_ymnoghenieпроисходит умножение двух чисел и результат выводится на экран. - В функции
func_zaproscпользователю предлагается ввести два числа, которые затем сохраняются в массивеt. - Затем программа возвращает третье число, которое было введено пользователем.
- В конце программы возвращается 0, что означает успешное завершение работы программы.