Cześć, mam problem z zadankiem, program sprawdza, czy wyrażenie algebraiczne jest poprawne w składni, (czy nie ma np . +-)
mogę używać liczb,małych literek oraz znaków + - / *
Napisałem taki oto program, którego zadaniem jest najpierw wyszukanie pozycji znaków(wykonuje to dobrze, sprawdziłem)
a potem zapisanie tych pozycji do tabeli
następnie ma sprawdzić, czy znaki nie leżą obok siebie, znaczy, czy wartość z tabeli +1 nie jest równa następnej pozycji zapisane w tabeli( np. tab[1] +1 musi być różne od tab[2])
Program za każdym razem zwraca poprawność zapisu
Proszę o wytłumaczenie błędów myślowych/będów w kodzie oraz ewentualnie jakaś lepsza alternatywa, dziękuję
#include<math.h>
#include<cstdlib>
#include<iostream>
#include<cstring>
using namespace std;
int main()
{ string slowo= "2*a-b/c-8+5";
int i,tab[slowo.size()];
size_t t = -1;
for(i=0;i<slowo.size();i++)
{
while((t=slowo.find_first_of("*-+/",t+1)) != string ::npos )
tab[i]=t;}
for(i=0;i<slowo.size();i++)
{
if(tab[i]+1!=tab[i+1])
{
cout<<"Jest to poprawnie zapisane w skladni wyrażenie algebraiczne"<<endl;
}
else
{
cout<<"nie jest"<<endl;
}
}
}