Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (WinAPI, Konsole) » kleiner Denkanschubser bei WWW-Game

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
21.05.2010, 20:38 Uhr
~Kuma87
Gast


huhu ich hab leider ein kleines Problem (es handelt sich um Wer wird Millionär Variante^^)

Problem: Wenn ich bei Frage 2 irgendwelchen Buchstaben eingebe dann ist der dennoch richtig und Problem 2, ich möchte gern ne Bedingung einbauen, damit man nur 1 Buchstaben eingeben kann. Kann mir jemand nen kleinen Denkanstoß geben wo der Fehler ist? Ihr müsst es net lösen nur helfen, wo mein Denkfehler ist


C++:
#include "stdafx.h"
#include <iostream>
#include <vld.h>

using namespace std;


int i;                                                        
int z=0;                                            
int u=0;                                                    
bool StringAreEqual(const char* pcString1, const char* pcString2)
{
    int i;
    
    
    while(pcString1[z] !=0 && pcString2[z] !=0 && pcString1[z])
    {
        if (pcString1[z] != pcString2[z])
        {
            return false;
        }
        ++z;
    }
    return true;
}
int _tmain(int argc, _TCHAR* argv[])
{
    for(i=0; i<=0;)
    {
        const int iMaxinputSize =5;                            
        char acInput[iMaxinputSize] ;
        cout << " Was ist 2 + 2 ?" << endl;
        cout << "a fuer  3 " << endl;
        cout << "b fuer  4 " << endl;
        cout << "c fuer  7 " << endl;
        cout << "d fuer    10 " << endl;
        cin.getline(acInput, iMaxinputSize, ' \n');
    
    
        if(StringAreEqual(acInput,"b"))
        {
            cout << "" <<endl;
            cout << "Richtig" << endl;
            cout << "" <<endl;
            ++i;
        }

        else
        {
            return 0;
        }
        
    }    
        
    
    if(i=1);
    {
        const int iMaxinputSize =5;
        char acInput[iMaxinputSize] ;
        cout << "Was ist 5 + 5 ?" << endl;
        cout <<"a fuer 200" <<endl;
        cout <<"b fuer 300" <<endl;
        cout <<"c fuer what?" <<endl;
        cout <<"d fuer 10" << endl;
        cin.getline(acInput, iMaxinputSize, ' \n');
    
        
        if(StringAreEqual(acInput,"d"))
        {
            cout << "" <<endl;
            cout << "Richtig" << endl;
            cout << "" <<endl;
            ++i;
        }
        else
        {

            return 1;
                

        }
        

    }
    if(i=2);
    {
        
    
        const int iMaxinputSize =5;
        char acInput[iMaxinputSize] ;
        cout << "Was ist 3 + 2 ?" <<endl;
        cout <<"a fuer 10" <<endl;
        cout <<"b fuer 21" <<endl;
        cout <<"c fuer 5" <<endl;
        cout <<"d fuer 49" << endl;
        cin.getline(acInput, iMaxinputSize, ' \n' );
        
        if(StringAreEqual(acInput,"c"))
        {    
            cout << "" <<endl;
            cout <<"Richtig" <<endl;
            cout << "" <<endl;
            ++i;
        }

        else
        {
            return 0;
            
        }
        
    }


        
    return 0;
}




Kuma87 ^^

-----------
Edit: cpp-Tags eingefügt. - Nächstes mal bitte selber machen.

Dieser Post wurde am 21.05.2010 um 23:10 Uhr von Hans editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
21.05.2010, 21:58 Uhr
~f.-th.
Gast


Warum globale und lokale

C++:
int i;
?
Was sollte hier folgen

C++:
for(i=0; i<=0
?
Warum mal so

C++:
else
{
return 0;
}


mal so

C++:
else
{

return 1;


}

 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
22.05.2010, 13:49 Uhr
~toxic
Gast


hi

C++:
    if(i=1); <-- hier kein semikolon
    {
     ...
    }

    if(i=2); <-- das selbe hier
    {
     ...
    }

 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
22.05.2010, 14:50 Uhr
TOSHMAX



Der Grund, dass du beim 2. mal alles mögliche angeben kannst, liegt daran, dass z beim 2. Aufruf von StringAreEqual nicht mehr 0 ist und somit durch Zufall auf das Ende der Strings zeigt.

Entweder setzt du z immer wieder auf 0, oder du verwendest einfach "strcmp":

C++:
bool StringAreEqual(const  char* pcString1, const  char* pcString2)
{
    return strcmp(pcString1, pcString2) == 0;
}



Noch besser ist es aber, wenn du std::string anstatt den C-Strings verwendest.
Selbst wenn du sie noch nicht kennst, lohnt es sich sie mal anzusehen.
Sie sind einfacher zu benutzen und bei richtiger Anwendung auch sicherer!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (WinAPI, Konsole) ]  


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: