Author SHA1 Message Date
stud126182 d6450e5afb Deleted 'sketch_apr13a.ino' from branch calc-console-impl 2023-04-24 20:05:19 +00:00
giezz acd7c3eae7 Branch clean-up 2023-04-24 22:25:45 +03:00
stud127375 1c91ad6e9e Загрузил(а) файлы в '' 2023-04-24 11:43:26 +00:00
stud149634 0fc4e86a7a Загрузил(а) файлы в 'testPull-up'
ArduionIDE
2023-03-01 19:18:17 +00:00
giezz ca656f2803 Updated README.md 2023-02-22 15:54:22 +03:00
giezz 39731c5060 Console calculator implementation (initial commit) 2023-02-18 21:14:00 +03:00
3 changed files with 81 additions and 4 deletions
+6
View File
@@ -0,0 +1,6 @@
.idea
cmake-buid-debug
# Executables
*.exe
+11 -4
View File
@@ -2,8 +2,15 @@
**Терминал**. **Терминал**.
Устройство представляет из себя микроконтроллер с клавиатурой (матрица 4 х 4) и подключенное устройство из задания №5. Простейший калькулятор. Устройство представляет из себя микроконтроллер с клавиатурой (матрица 4 х 4) и подключенное устройство из задания №5. Простейший калькулятор.
# Список участников # Список участников
**Батухтин Михаил\n** * Батухтин Михаил
**Бочкина Кристина\n** * Бочкина Кристина
**Уткин Никита\n** * Уткин Никита
**Хромова Полина\n** * Хромова Полина
## Части задачи
- GPIO + GPIO в контексте Atmega328. Pull up, Pull down (Кристина Бочкина/Полина Хромова)
- Реализация клавиатуры (Кристина Бочкина/Полина Хромова)
- SPI интерфейс + SPI у Atmega328 (Никита Уткин)
- Архитектура ПО (Михаил Батухтин)
+64
View File
@@ -0,0 +1,64 @@
#include <stdio.h>
#include <stdlib.h>
double calculate(char op, double num1, double num2) {
double result = 0;
switch (op) {
case '+':
result = num1 + num2;
break;
case '-':
result = num1 - num2;
break;
case '*':
result = num1 * num2;
break;
case '/':
result = num1 / num2;
break;
}
return result;
}
int main() {
double number = 0;
double tmpNumber = 0;
char input;
char operator;
while (1) {
scanf(" %c", &input);
switch (input) {
case '+':
operator = '+';
tmpNumber = number;
number = 0;
break;
case '-':
operator = '-';
tmpNumber = number;
number = 0;
break;
case '*':
operator = '*';
tmpNumber = number;
number = 0;
break;
case '/':
operator = '/';
tmpNumber = number;
number = 0;
break;
case '=':
printf("%lf\n", calculate(operator, tmpNumber, number));
tmpNumber = 0;
number = 0;
break;
case 'q':
goto exit;
// operator doesn't match any case constant
default:
number = (number * 10) + atof(&input);
printf("%.1lf\n", number);
}
}
exit:
return 0;
}