Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » VC++ / MFC » Riesenfettes Problem, ihr müsst mir helfen!!!

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
20.04.2003, 11:25 Uhr
~erpelqueen
Gast


So, mein Taschenrechner ist sogut wie fertig. Ich habe jetzt die ganze Rechnung als String in einer Textbox ausgegeben, sodass der Benutzer überprüfen kann, was er eingetiptt hat. Jetzt kommt das schwerste: Das Ergebnis!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!Gibt es eine Möglichkeit, dem Programm zu sagen: Lege den String auseinander und rechne genau das, was in der Textbox steht!?????ß Ist das möglich????
Wenn nicht, hat jemand eine kluge, verständliche und infache Lösung für mich???
Ich möchte nicht da anfangen mit if zahl = 3 dann.......
dazu gibt es ja diesen anderen Schnulli. Wenn mir jemand hilft, wäre es echt nett....ich muss diesen Taschenrechner fertig kriegen!!!!!!!!!
DANKE.. I_ () I_
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
20.04.2003, 11:52 Uhr
~erpelqueen
Gast


Wenn das nicht geht, müsste ich dem Programm sagen, es soll sich die Zahl bis zum nächsten Operator merken... sich den Operator merken... bis nix mehr dasteht...dazu müsste ich den String auch ausseinander nehmen. Aber WIE???ICH bin echt auf die Hilfe von euch angewiesen!!!!!!!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
20.04.2003, 12:49 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


Hallo, erpelchen, hier mal ein stück code


C++:
CString strEingabe;
strEingabe = "12*4"; // hier steht das was der benutzer eingeben kann

int iErgebnis = 0; // Ergebnis der Berechnung...
CString strZahl1 = "", strZahl2 = "";
char cRechnung = '\0';
bool bSwitch = 0;

for(int x = 0; x < strEingabe.GetLength(); x++)
{
    char cZeichen = 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) );
                    strZahl1.Empty();
                    strZahl2.Empty();
                } break;
                // weitere Rechenarten
            }
        }
        bSwitch = !bSwitch;
        cRechnung = cZeichen;
    }
}




Habs nicht getestet, sollte aber gehen...
im Moment ist auch nur * implementiert, aber die anderen gehen genauso...
--
class God : public ChuckNorris { };

Dieser Post wurde am 20.04.2003 um 12:50 Uhr von FloSoft editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
20.04.2003, 13:15 Uhr
~erpelqueen
Gast


Damit ich nicht gleich allet falsch mache: bei strEingabe, was soll dahin??? dochnicht 12*4.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
20.04.2003, 13:20 Uhr
~erpelqueen
Gast


Also du musst erstmal wissen, dass du hier mit einem Anfänger redest...
Ich mache allet mit MFC assistent, da verliert man leicht die Übersicht....
Soll der Code auf die Funktion des Ergebnis.Button????
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
20.04.2003, 13:28 Uhr
~erpelqueen
Gast



C++:
// Taschenrechner4Dlg.cpp : Implementierungsdatei
//

#include "stdafx.h"
#include "Taschenrechner4.h"
#include "Taschenrechner4Dlg.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CAboutDlg-Dialogfeld für Anwendungsbefehl "Info"

class CAboutDlg : public CDialog
{
public:

    CAboutDlg();
    
// Dialogfelddaten
    //{{AFX_DATA(CAboutDlg)
    enum { IDD = IDD_ABOUTBOX };
    //}}AFX_DATA

    // Vom Klassenassistenten generierte Überladungen virtueller Funktionen
    //{{AFX_VIRTUAL(CAboutDlg)
    protected:
    virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV-Unterstützung
    //}}AFX_VIRTUAL

// Implementierung
protected:
    //{{AFX_MSG(CAboutDlg)
    //}}AFX_MSG
    DECLARE_MESSAGE_MAP()
};

CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
{
    //{{AFX_DATA_INIT(CAboutDlg)
    //}}AFX_DATA_INIT
}

void CAboutDlg::DoDataExchange(CDataExchange* pDX)
{
    CDialog::DoDataExchange(pDX);
    //{{AFX_DATA_MAP(CAboutDlg)
    //}}AFX_DATA_MAP
}

BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
    //{{AFX_MSG_MAP(CAboutDlg)
        // Keine Nachrichten-Handler
    //}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CTaschenrechner4Dlg Dialogfeld

CTaschenrechner4Dlg::CTaschenrechner4Dlg(CWnd* pParent /*=NULL*/)
    : CDialog(CTaschenrechner4Dlg::IDD, pParent)
{
    //{{AFX_DATA_INIT(CTaschenrechner4Dlg)
    m_Ausgabe = _T("");
    //}}AFX_DATA_INIT
    // Beachten Sie, dass LoadIcon unter Win32 keinen nachfolgenden DestroyIcon-Aufruf benötigt
    m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}

void CTaschenrechner4Dlg::DoDataExchange(CDataExchange* pDX)
{
    CDialog::DoDataExchange(pDX);
    //{{AFX_DATA_MAP(CTaschenrechner4Dlg)
    DDX_Control(pDX, IDC_BUTTON1, m_ctlButton);
    DDX_Text(pDX, IDC_EDIT1, m_Ausgabe);
    //}}AFX_DATA_MAP
}

BEGIN_MESSAGE_MAP(CTaschenrechner4Dlg, CDialog)
    //{{AFX_MSG_MAP(CTaschenrechner4Dlg)
    ON_WM_SYSCOMMAND()
    ON_WM_PAINT()
    ON_WM_QUERYDRAGICON()
    ON_BN_CLICKED(IDC_BUTTON1, OnButton1)
    ON_BN_CLICKED(IDC_BUTTON2, OnButton2)
    ON_BN_CLICKED(IDC_BUTTON3, OnButton3)
    ON_BN_CLICKED(IDC_BUTTON4, OnButton4)
    ON_BN_CLICKED(IDC_BUTTON5, OnButton5)
    ON_BN_CLICKED(IDC_BUTTON6, OnButton6)
    ON_BN_CLICKED(IDC_BUTTON7, OnButton7)
    ON_BN_CLICKED(IDC_BUTTON8, OnButton8)
    ON_BN_CLICKED(IDC_BUTTON9, OnButton9)
    ON_BN_CLICKED(IDC_BUTTON10, OnButton10)
    ON_BN_CLICKED(IDC_BUTTON11, OnButton11)
    ON_BN_CLICKED(IDC_BUTTON12, OnButton12)
    ON_BN_CLICKED(IDC_BUTTON13, OnButton13)
    ON_BN_CLICKED(IDC_BUTTON15, OnButton15)
    ON_BN_CLICKED(IDC_BUTTON16, OnButton16)
    ON_BN_CLICKED(IDC_BUTTON14, OnButton14)
    //}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CTaschenrechner4Dlg Nachrichten-Handler

BOOL CTaschenrechner4Dlg::OnInitDialog()
{
    CDialog::OnInitDialog();

    // Hinzufügen des Menübefehls "Info..." zum Systemmenü.

    // IDM_ABOUTBOX muss sich im Bereich der Systembefehle befinden.
    ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
    ASSERT(IDM_ABOUTBOX < 0xF000);

    CMenu* pSysMenu = GetSystemMenu(FALSE);
    if (pSysMenu != NULL)
    {
        CString strAboutMenu;
        strAboutMenu.LoadString(IDS_ABOUTBOX);
        if (!strAboutMenu.IsEmpty())
        {    
            pSysMenu->AppendMenu(MF_SEPARATOR);
            pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
        }
    }

    // Symbol für dieses Dialogfeld festlegen. Wird automatisch erledigt
    //  wenn das Hauptfenster der Anwendung kein Dialogfeld ist
    SetIcon(m_hIcon, TRUE);            // Großes Symbol verwenden
    SetIcon(m_hIcon, FALSE);        // Kleines Symbol verwenden
    
    // ZU ERLEDIGEN: Hier zusätzliche Initialisierung einfügen
    Bild1.LoadBitmap( IDB_BITMAP1 );
    return TRUE;  // Geben Sie TRUE zurück, außer ein Steuerelement soll den Fokus erhalten
}

void CTaschenrechner4Dlg::OnSysCommand(UINT nID, LPARAM lParam)
{
    if ((nID & 0xFFF0) == IDM_ABOUTBOX)
    {
        CAboutDlg dlgAbout;
        dlgAbout.DoModal();
    }
    else
    {
        CDialog::OnSysCommand(nID, lParam);
    }
}

// Wollen Sie Ihrem Dialogfeld eine Schaltfläche "Minimieren" hinzufügen, benötigen Sie
//  den nachstehenden Code, um das Symbol zu zeichnen. Für MFC-Anwendungen, die das
//  Dokument/Ansicht-Modell verwenden, wird dies automatisch für Sie erledigt.

void CTaschenrechner4Dlg::OnPaint()
{
    CClientDC dc( this );
  BITMAP bm;
  Bild1.GetObject( sizeof( bm ), &bm );
  CDC SpeicherDC;
  SpeicherDC.CreateCompatibleDC( &dc );
  SpeicherDC.SelectObject( &Bild1 );
  CRect Rect;
  GetClientRect( &Rect );
  dc.SetStretchBltMode( HALFTONE );
  dc.StretchBlt( 0, 0, Rect.right, Rect.bottom, &SpeicherDC,
                 0, 0, bm.bmWidth, bm.bmHeight, SRCCOPY );
  CDialog::OnPaint();

}

// Die Systemaufrufe fragen den Cursorform ab, die angezeigt werden soll, während der Benutzer
//  das zum Symbol verkleinerte Fenster mit der Maus zieht.
HCURSOR CTaschenrechner4Dlg::OnQueryDragIcon()
{
    return (HCURSOR) m_hIcon;
}

void CTaschenrechner4Dlg::OnButton1()//Zahl1
{


m_Ausgabe += "1";
UpdateData(FALSE);    

}

void CTaschenrechner4Dlg::OnButton2() //Zahl2
{
m_Ausgabe += "2";
UpdateData(FALSE);    // TODO: Code für die Behandlungsroutine der Steuerelement-Benachrichtigung hier einfügen
    
}


void CTaschenrechner4Dlg::OnButton3() //Zahl3
{
    // TODO: Code für die Behandlungsroutine der Steuerelement-Benachrichtigung hier einfügen
m_Ausgabe += "3";
UpdateData(FALSE);    

}

void CTaschenrechner4Dlg::OnButton4() //Zahl4
{
m_Ausgabe += "4";
UpdateData(FALSE);    
    // TODO: Code für die Behandlungsroutine der Steuerelement-Benachrichtigung hier einfügen
    
}

void CTaschenrechner4Dlg::OnButton5() //Zahl5
{
m_Ausgabe += "5";
UpdateData(FALSE);        // TODO: Code für die Behandlungsroutine der Steuerelement-Benachrichtigung hier einfügen
    
}

void CTaschenrechner4Dlg::OnButton6() //Zahl6
{
    // TODO: Code für die Behandlungsroutine der Steuerelement-Benachrichtigung hier einfügen
m_Ausgabe += "6";
UpdateData(FALSE);        
}

void CTaschenrechner4Dlg::OnButton7() //Zahl7
{
    // TODO: Code für die Behandlungsroutine der Steuerelement-Benachrichtigung hier einfügen
m_Ausgabe += "7";
UpdateData(FALSE);    
}

void CTaschenrechner4Dlg::OnButton8() //Zahl8
{
m_Ausgabe += "8";
UpdateData(FALSE);        // TODO: Code für die Behandlungsroutine der Steuerelement-Benachrichtigung hier einfügen
    
}

void CTaschenrechner4Dlg::OnButton9() //Zahl9
{
m_Ausgabe += "9";
UpdateData(FALSE);        // TODO: Code für die Behandlungsroutine der Steuerelement-Benachrichtigung hier einfügen
    
}

void CTaschenrechner4Dlg::OnButton10() //Plus-Button
{
    // TODO: Code für die Behandlungsroutine der Steuerelement-Benachrichtigung hier einfügen
m_Ausgabe += "+";
UpdateData(FALSE);    
}

void CTaschenrechner4Dlg::OnButton11() //Minus-Button
{
    // TODO: Code für die Behandlungsroutine der Steuerelement-Benachrichtigung hier einfügen
m_Ausgabe += "-";
UpdateData(FALSE);        
}

void CTaschenrechner4Dlg::OnButton12() //geteilt-Button
{
m_Ausgabe += "/";
UpdateData(FALSE);        // TODO: Code für die Behandlungsroutine der Steuerelement-Benachrichtigung hier einfügen
    
}

void CTaschenrechner4Dlg::OnButton13() //Multi-Button
{
m_Ausgabe += "*";
UpdateData(FALSE);        // TODO: Code für die Behandlungsroutine der Steuerelement-Benachrichtigung hier einfügen
    
}

void CTaschenrechner4Dlg::OnButton15() //"eis zurück-Button"
{
m_Ausgabe = m_Ausgabe.Left(m_Ausgabe.GetLength()-1);
UpdateData(FALSE);
    // TODO: Code für die Behandlungsroutine der Steuerelement-Benachrichtigung hier einfügen
    
}

void CTaschenrechner4Dlg::OnButton16() //alles zurück-setzten-Button
{

    
}

void CTaschenrechner4Dlg::OnButton14() //Ergebnis-Button
{
    // TODO: Code für die Behandlungsroutine der Steuerelement-Benachrichtigung hier einfügen
    
}


So, dass ist mein Hauptqueelcode. Was muss ich jetzt bei dem Ergebnis-Button hin schreiben?
Echt nett dass du dir Zeit für meine Anfängerprobs nimmst!

Dieser Post wurde am 20.04.2003 um 17:16 Uhr von Uwe editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ VC++ / MFC ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: