This commit is contained in:
Weber 2024-10-14 13:52:30 +00:00
parent 75494da36c
commit 45727a1bc9

View File

@ -1,6 +1,7 @@
#include <stdio.h> #include <stdio.h>
#include <stdlib.h> #include <stdlib.h>
#include <stdbool.h> #include <stdbool.h>
#include <string.h>
#define MAX_VELKOST 10 #define MAX_VELKOST 10
@ -58,7 +59,7 @@ bool delit(KalkulackaZasobnik *kalkulacka) {
float a, b; float a, b;
if (vyber(kalkulacka, &a, &b)) { if (vyber(kalkulacka, &a, &b)) {
if (a == 0) { if (a == 0) {
return false; return false;
} }
return vloz(kalkulacka, b / a); return vloz(kalkulacka, b / a);
} }
@ -85,20 +86,28 @@ int main() {
fgets(vstup, sizeof(vstup), stdin); fgets(vstup, sizeof(vstup), stdin);
if (vstup[0] == '\n') { if (vstup[0] == '\n') {
break; break;
} }
float hodnota; float hodnota;
char operacia; char operacia;
char *zvysok;
if ((sscanf(vstup, "%f", &hodnota) == 1) && (strtok(vstup, " \n") != NULL)) {
// Kontrolujeme, či za číslom nie je ďalší neplatný vstup
if (strtok(NULL, " \n") == NULL) {
vloz(&kalkulacka, hodnota);
zobraz_zasobnik(&kalkulacka);
} else {
printf("bad input\n");
return 0;
}
}
if (sscanf(vstup, "%f", &hodnota) == 1) {
vloz(&kalkulacka, hodnota);
printf("%.2f\n", hodnota);
}
else if (sscanf(vstup, "%c", &operacia) == 1) { else if (sscanf(vstup, "%c", &operacia) == 1) {
if (!je_platna_operacia(operacia)) { if (!je_platna_operacia(operacia)) {
printf("bad input\n"); printf("bad input\n");
continue; return 0;
} }
switch (operacia) { switch (operacia) {
case '+': case '+':
@ -143,7 +152,7 @@ int main() {
} }
} else { } else {
printf("bad input\n"); printf("bad input\n");
continue; // Zabezpečíme, aby sa cyklus opakoval return 0;
} }
} }