This commit is contained in:
Weber 2024-10-14 13:54:52 +00:00
parent 45727a1bc9
commit 884ed60648

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 <ctype.h>
#include <string.h> #include <string.h>
#define MAX_VELKOST 10 #define MAX_VELKOST 10
@ -77,6 +78,15 @@ bool je_platna_operacia(char operacia) {
return operacia == '+' || operacia == '-' || operacia == '*' || operacia == '/'; return operacia == '+' || operacia == '-' || operacia == '*' || operacia == '/';
} }
// Funkcia na validáciu, či je vstup platným číslom
bool je_platne_cislo(const char *vstup) {
char *koniec;
strtof(vstup, &koniec); // Prevedie reťazec na číslo
// Ak ukazovateľ koniec nesmeruje na '\0', vstup obsahuje neplatné znaky
return *koniec == '\n' || *koniec == '\0';
}
int main() { int main() {
KalkulackaZasobnik kalkulacka; KalkulackaZasobnik kalkulacka;
inicializuj(&kalkulacka); inicializuj(&kalkulacka);
@ -89,26 +99,14 @@ int main() {
break; break;
} }
float hodnota; if (je_platne_cislo(vstup)) {
char operacia; float hodnota = strtof(vstup, NULL); // Prevedieme platné číslo
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); vloz(&kalkulacka, hodnota);
zobraz_zasobnik(&kalkulacka); zobraz_zasobnik(&kalkulacka);
} else {
printf("bad input\n");
return 0;
}
} }
else if (strlen(vstup) == 2 && je_platna_operacia(vstup[0])) { // Kontrolujeme, či vstup je operácia
char operacia = vstup[0];
else if (sscanf(vstup, "%c", &operacia) == 1) {
if (!je_platna_operacia(operacia)) {
printf("bad input\n");
return 0;
}
switch (operacia) { switch (operacia) {
case '+': case '+':
if (scitat(&kalkulacka)) { if (scitat(&kalkulacka)) {
@ -143,10 +141,11 @@ int main() {
} else { } else {
vloz(&kalkulacka, b / a); vloz(&kalkulacka, b / a);
zobraz_zasobnik(&kalkulacka); zobraz_zasobnik(&kalkulacka);
}
} else {
printf("no input\n"); printf("no input\n");
return 0; return 0;
} }
}
break; break;
} }
} }