005
24.05.2003, 16:34 Uhr
FloSoft
Medialer Over-Flow (Administrator)
|
Hallo, sowas hatte ich mach irgendwo ... (ich glaube ich hatte da ein bsp für erpelchen)
*Searching ...*
*... Complete*
Ok ist ein MFC-Bsp gewesen,
in
m_strEingabe steht z.b 100*44+3, wenn man auf den button Berechnen gedrückt hat wurde dann folgendes ausgeführt:
C++: |
int iErgebnis = 0; CString strZahl1 = "", strZahl2 = ""; char cRechnung = '\0'; bool bSwitch = 0;
for(int x = 0; x < m_strEingabe.GetLength(); x++) { char cZeichen = m_strEingabe.GetAt(x); if( (cZeichen > 47) && (cZeichen < 58) ) // Wenn Zahl { if(!bSwitch) strZahl1 += cZeichen; else strZahl2 += cZeichen; } else // ansonsten sollte es ein Rechenzeichen sein, überprüfen! { if(cRechnung != '\0') // Das Erste Mal nichts berechnen, da nur eine Zahl zu Verfügung ... { switch(cRechnung) { case '*': { iErgebnis = ( atoi(strZahl1) * atoi(strZahl2) ); } break; case '/': { if(atoi(strZahl2)==0) { MessageBox("Fehler: Man kann nicht durch 0 teilen!","ERROR",MB_OK|MB_ICONSTOP); m_strAusgabe = "Math Error"; UpdateData(FALSE); return; } iErgebnis = ( atoi(strZahl1) / atoi(strZahl2) ); } break; case '+': { iErgebnis = ( atoi(strZahl1) + atoi(strZahl2) ); } break; case '-': { iErgebnis = ( atoi(strZahl1) - atoi(strZahl2) ); } break; } strZahl1.Format("%d",iErgebnis); strZahl2.Empty(); } bSwitch = 1; cRechnung = cZeichen; } } if(cRechnung != '\0') { switch(cRechnung) { case '*': { iErgebnis = ( atoi(strZahl1) * atoi(strZahl2) ); } break; case '/': { if(atoi(strZahl2)==0) { MessageBox("Fehler: Man kann nicht durch 0 teilen!","ERROR",MB_OK|MB_ICONSTOP); m_strAusgabe = "Math Error"; UpdateData(FALSE); return; } iErgebnis = ( atoi(strZahl1) / atoi(strZahl2) ); } break; case '+': { iErgebnis = ( atoi(strZahl1) + atoi(strZahl2) ); } break; case '-': { iErgebnis = ( atoi(strZahl1) - atoi(strZahl2) ); } break; } m_strEingabe.Format("%s=%d",m_strEingabe,iErgebnis); } else { m_strEingabe.Format("%s=%s",m_strEingabe,m_strEingabe); }
|
In m_strEingabe steht dann auch das Ergebnis in der Form 100*44+3=443
Einhaltung von Rechenregeln (also Punkt vor Strich usw) ist nicht implementiert. -- class God : public ChuckNorris { }; |