Создание простейшего калькулятора с базовым функционалом - C (СИ)
Формулировка задачи:
По заданию преподавателя в универе начали писать программку калькулятора с парой действий. В ходе попытки сдать ей сию работу возникли некоторые проблемы. Калькулятор должен: складывать, вычитать, умножать, делить, возводить в квадрат и высчитывать квадратный корень.
НО
также он должен предлагать нам выбор точности числа, которое выйдет в итоге. Препод желает сама выбирать сколько знаков после запятой хочет видеть. А также после выполнения действия программа не должна закрываться, а предлагать продолжить. Я - первокурсница, программирования еще толком и не было, так что трудностей много. И да, препод ничего не говорит, помогает только тем, кто на стороне Паскаля. Кто-то может помочь с этим?#include <stdio.h>
#include <stdlib.h>
#include <math.h>
void main()
{ int n;
printf("1 - summa\n2 - proizvedenie\n3 - raznost\n4 - delenie\n5 - kvadratny koren\n6 - vozvedenie v stepen 2\n");
printf("vyberite neobhodimoe deystvie\n");
scanf("%d",&n);
switch(n)
{ case 1:
{ float a,b,S;
printf("vvedite chisla a, b\n");
scanf("%f%f",&a,&b);
S = a+b;
printf("%.2f",S);
break;
}
case 2:
{ float a,b,P;
printf("vvedite chisla a, b\n");
scanf("%f%f",&a,&b);
P = a*b;
printf("%.2f",P);
break;
}
case 3:
{ float a,b,R;
printf("vvedite chislo ymenshaemoe\n");
scanf("%f",&a);
printf("vvedite chislo vuchitaemoe\n");
scanf("%f",&b);
R = a-b;
printf("%.2f",R);
break;
}
case 4:
{ float a,b,D;
printf("vvedite delimoe a\n");
scanf("%f",&a);
printf("vvedite delitel b\n");
scanf("%f",&b);
if (b!=0) D = a/b;
else printf("nekorrektnoe chislo\n");
printf("%.2f",D);
break;
}
case 5:
{ float a,Q;
printf("vvedite chislo a\n");
scanf("%f",&a);
if (a>0) Q = pow(a,0.5);
else printf("nekorrektnoe chislo\n");
printf("%.2f",Q);
break;
}
case 6:
{ float a,St;
printf("vvedite chislo a\n");
scanf("%f",&a);
St = pow(a,2);
printf("%.2f",St);
break;
}
}
getch();
}Решение задачи: «Создание простейшего калькулятора с базовым функционалом»
textual
Листинг программы
#include <stdio.h>
#include <math.h>
int
main()
{
while(1)
{
float arg1, arg2;
int precision = 2; /* точность */
int choice = 0;
printf("1 - sum\n2 - mul\n3 - sub\n4 - div\n"
"5 - sqrt\n6 - pow2\n0 - exit");
printf("vyberite neobhodimoe deystvie\n");
scanf("%d", &choice);
if(choice == 0)
break;
printf("Choose precision: ");
scanf("%d", &precision);
switch(choice)
{
case 1:
printf("vvedite chisla\n");
scanf("%f%f", &arg1, &arg2);
printf("%.*f\n", precision, arg1 + arg2);
break;
case 2:
printf("vvedite chisla\n");
scanf("%f%f", &arg1, &arg2);
printf("%.*f\n", precision, arg1 * arg2);
break;
case 3:
printf("vvedite chislo ymenshaemoe\n");
scanf("%f", &arg1);
printf("vvedite chislo vuchitaemoe\n");
scanf("%f", &arg2);
printf("%.*f\n", precision, arg1 - arg2);
break;
case 4:
printf("vvedite delimoe a\n");
scanf("%f", &arg1);
printf("vvedite delitel b\n");
scanf("%f", &arg2);
if(arg2 == 0)
{
printf("nekorrektnoe chislo\n");
break;
}
printf("%.*f\n", precision, arg1 / arg2);
break;
case 5:
printf("vvedite chislo a\n");
scanf("%f", &arg1);
if(arg1 < 0)
{
printf("nekorrektnoe chislo\n");
break;
}
printf("%.*f\n", precision, sqrt(arg1));
break;
case 6:
printf("vvedite chislo a\n");
scanf("%f", &arg1);
printf("%.*f\n", precision, pow(arg1, 2.0));
break;
}
}
}
Объяснение кода листинга программы
- Ввод чисел с клавиатуры
- Вывод результатов вычислений с заданной точностью
- Использование операторов switch для выбора операции в зависимости от введенного пользователем числа
- Использование функций scanf и printf для взаимодействия с пользователем
- Проверка корректности введенных пользователем чисел (например, деление на ноль)
- Использование математических функций (sqrt, pow) для выполнения операций
- Возможность выбора точности вычислений
- Возможность выхода из программы с помощью команды
0