Merhaba,
kusura bakma hocam mesaj atmışsın bana da ancak zaman bulabildim cevap vermeye. cpp derleyicim yok şimdi o yüzden parça parça gidelim. öncelikle her adım için projeni fonksiyonlara böl, bu fonksiyonlar sırasıyla sayı olup olmadığını kontrol etsin, değilse operator olup olmadığını kontrol etsin, değilse de string olarak versin. Ama şurada bir sıkıntı var -AB neden string ifade olmasın ki? Mesela Co-Work dediğinde de bir çizgi var, bu illa eksi olması anlamına gelmez. Ama onun içinde bir çözüm öneririm
1- sayı olup olmadığını anlamak
http://www.cplusplus.com/reference/cctype/isdigit/ http://www.cplusplus.com/reference/cctype/isalnum/
buradaki fonksiyonlarla karakterlerin numeric-numeric olmayan olarak ayır edebilirsin. mesela bir döngü ile tüm karakterleri dolaşırsın eğer karakterler içinde alpha-numeric karakterler varsa bir tane bile olsa onun tam sayı olmadığına karar verirsin..
2- ilişkisel operatorler
bunun için de ascii kodlara inmeye gerek yok hocam, string compare yapacaksın, biraz uzun olabilir ama tüm ilişkisel operatorleri yazıp if-else ile karşılaştıracaksın
http://www.cplusplus.com/reference/s...tring/compare/
ya da bu şekilde bir karşılaştırma kullan (switch/select-case gibi)
http://stackoverflow.com/a/4165312/1022138
3- string bulma
http://www.cplusplus.com/reference/cctype/isalpha/
buradaki fonksiyon ile alfanumeric olanları bulabilirsin. eğer stringin içerisinde + - * gibi ifadeler varsa alfanumeric olarak almaz o zaman da string olmadığını söylersin.
4- string ifadesindeki "eksi"
eğer bunu gerçekten matematiksel sembol olarak görüyorsan yani fark olarak, o zaman yukarıda yazdığım 1 ve 2. aşamasadan sonra bu kısma bak. ilk karakteri al (satirin[0]) ve bunun numeric olup olmadığına bak. eğer numeric ise "HATA" yazdırabilirsin. Çünkü 1. maddedeki zaten girilen ifadenin sayı olup olmadığını veriyor, o halde burada 1. karakter numeric dönüyorsa o zaman -AB tarzı bir şey girilmiştir. Eğer numeric değilse "isim" diye yazdırabilirsin
kolay gelsin