Prob mit Programm



  • 1. soll ich also chose auf, sagen wir mal, [8] erweitern?
    2.ich brauch doch eigentlich windows.h für system("PAUSE"); (wenn ich das überhaupt brauche, was ich langsam bezweifele.),
    wofür bräuchte ich string.h? Und stdio.h benutz ich eigentlich auch immer, war nur ne Ausnahme.
    3.was ist der unterschied zwischen print formatted und cout ?
    4.wie gesagt, ich hab es nur mal kurz zwischendurch getestet.
    ps.: sorry wenn das jetzt zu unordentlich war, hab ich eben mal auf die Schnelle gepostet



  • Wenn du die Sachen von CStoll umgesetzt hast:
    Bei scanf auf Arrays darfst du kein & mit angeben.

    scanf("%s", chose);
    

    Abgesehen davon wird dann immer noch das 'Enter' im Tastaturpuffer sein.



  • Dieser Thread wurde von Moderator/in volkard aus dem Forum C++ (auch C++0x) in das Forum C (C89 und C99) verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • Hacker schrieb:

    1. soll ich also chose auf, sagen wir mal, [8] erweitern?

    Das wäre ein Anfang, aber eigentlich benötigst du dort überhaupt kein Array, wenn du nur einzelne Zeichen einlesen willst

    2.ich brauch doch eigentlich windows.h für system("PAUSE"); (wenn ich das überhaupt brauche, was ich langsam bezweifele.),

    system() ist in der <cstdlib> definiert - und eigentlich gibt es bessere Wege, das selbe zu erreichen. die windows.h ist kein Standard-Header, sondern hat etwas mit der WinAPI zu tun.

    wofür bräuchte ich string.h? Und stdio.h benutz ich eigentlich auch immer, war nur ne Ausnahme.

    In deinem Code verwendest du die strcmp() aus <cstring> und printf()/scanf() aus <cstdio>.

    3.was ist der unterschied zwischen print formatted und cout ?

    printf() ist der C-Weg zur Datenausgabe - kompliziert in der Handhabung, unsicher, schlecht erweiterbar. cout ist der C++-Weg für das selbe Ziel und vermeidet die typsichen Schwachstellen von printf().



  • Ich habs jetzt abgeändert (jedenfalls teilweise.):

    #include <iostream>

    using namespace std;

    int main()
    {
    int Grenze, Zahl=Grenze/2,KleinZahl,GrossZahl;

    char chose[8];

    cout<<"Guten Tag!\nDies ist ein kleines Spiel. Denken Sie sich bitte eine Zahl von 1 bis(Sie können wählen):";
    cin>>Grenze;

    Zahl=Grenze/2;
    KleinZahl=Zahl/2;
    GrossZahl=Zahl+Zahl/2;

    cout<<"Ist ihre Zahl "<<Zahl<<"?\ng=groesser,\nk=kleiner,\n'='=Ja\n";

    for(;;)
    {
    KleinZahl=Zahl/2;
    GrossZahl=Zahl+Zahl/2;

    cin>>chose;

    if (strcmp(chose,"k")==0)
    {
    cout<<"ist ihre Zahl "<<KleinZahl<<"?";
    Zahl=KleinZahl;
    continue;
    }
    if (strcmp(chose,"g")==0)
    {
    cout<<"ist ihre Zahl "<<GrossZahl<<"?";
    Zahl=GrossZahl;
    continue;
    }
    if (strcmp(chose,"=")==0)
    {
    cout<<"Ihre Zahl war "<<Zahl<<"\n\n\a";return 0;
    }

    }}

    Jetzt gehts, die sache mit dem chose-array hat gestimmt ...



  • Und wie, CStoll, meintest du funktioniert intervall-halbieren ...?
    Es geht zwar, ich komme aber in eine endlos-schleife wenn ich versuche meine Zahl zu definieren (er geht am ende immer zurück zum ausgangspunkt)...



  • Das Problem mit dem einelementigen char-Array hast du immer noch nicht gelöst. Ich würde an der Stelle einen einfachen char chose; verwenden und dann den normalen Zeichenvergleich per if(chose=='k')... etc verwenden (oder ein switch()).

    PS: Und das mit der Code-Formatierung üben wir auch noch

    @volkard: War es wirklich nötig, den Thread ins C-Board zu verschieben?

    Edit:

    Hacker schrieb:

    Und wie, CStoll, meintest du funktioniert intervall-halbieren ...?

    Etwa so: Intervall-Halbierung



  • oukei danke schon mal



  • Danke für den Link.



  • #include <iostream>
    
    using namespace std;
    
    int main()
    {
    
    int Zahl,KleinZahl=1,GrossZahl, temp;
    char chose;
    Zahl=GrossZahl-(GrossZahl-KleinZahl)/2;
    cout<<"Guten Tag!\nDies ist ein kleines Spiel. Denken Sie sich bitte eine Zahl von 1 bis(Sie können wählen):";
    cin>>GrossZahl;
    
    cout<<"Ist ihre Zahl "<<Zahl<<"?\ng=groesser,\nk=kleiner,\n'='=Ja\n";
    
    for(;;)
    {
    
    Zahl=GrossZahl-(GrossZahl-KleinZahl)/2;
    
    cout<<"Ist ihre Zahl "<<Zahl<<"?\ng=groesser,\nk=kleiner,\n'='=Ja\n";
    cin>>chose;
    
    if (chose=='k')
    {
    if(Zahl==KleinZahl)
    {cout<<"Verarsch mal nicht!!";return 0;}
    GrossZahl=Zahl;
    continue;
    }
    if (chose=='g')
    {
    if(Zahl==GrossZahl||Zahl==GrossZahl)
    {cout<<"\nVerarsch mal nicht!!\n\a\a\a";return 0;}
    KleinZahl=Zahl;
    continue;
    }
    if (chose=='=')
    {
    cout<<"Ihre Zahl war "<<Zahl<<"\n\n\a";return 0;
    }
    
    }}
    

    übrigens - braucht man für else if(z.B.:if(..){..}
    else if (..){..}
    )
    Ne bestimmte #include? weil, als ich es probieren wollte, ein "missing declaration" error kam-...



  • Hacker schrieb:

    übrigens - braucht man für else if(z.B.:if(..){..}
    else if (..){..}
    )
    Ne bestimmte #include? weil, als ich es probieren wollte, der"missing declaration" error kam-...

    Nein, else und if sind Anweisungen von C/C++, die kennt der Compiler auch ohne Hilfestellung. Du solltest nur nicht versuchen, sie zusammenzukleben - elseif ist nicht gültig, also sucht der Compiler nach einer Funktion mit diesem Namen.



  • Schaumal unterm dem Editorfenster sind diese hübschen Smilies 🙂 😃 😉
    Und darunter ist ein Button C/C++.
    Wenn du jetzt deinen Text markierst und da drauf drückst erscheint er hübsch formatiert (die Einrückungen bleiben erhalten) und in Farbe und bunt.

    #include <iostream>
    
    using namespace std;
    
    int main()
    {
    
      int Zahl,KleinZahl=1,GrossZahl, temp;
      char chose;
    
      Zahl=GrossZahl-(GrossZahl-KleinZahl)/2;
    
    ...
    

    if und else gehören zur Sprache. Dafür gibt es kein include



  • ey cool dirk ich probiers gleich aus höhä

    #include <iostream>
    using namespace std;
    
    int main()
    {
    unsigned int Grenzwert, Anfangswert(0);
    printf("Dieses Programm kann alle Zahlen bis zu einer von ihnen Angegebenen Zahl\nAnzeigen."
    "Zahl eingeben:\n");
    scanf("%i", &Grenzwert);
    for(;; )
    {
    ++Anfangswert;
    printf("%1.i\n",Anfangswert);
    if(Grenzwert<=Anfangswert)
    break;
    
    }
    
    main();
    }
    

    Oh NAIN es funktioniert nicht... 😮



  • Aber die Smileys sind so WITZIG!



  • Ist bei dir BBCode deaktiviert?



  • Tja, Jetzt nicht mehr.

    #include <iostream>
    using namespace std;
    
    int main()
    {
        unsigned int Grenzwert, Anfangswert(0);
        cout << "Dieses Programm kann alle Zahlen bis zu einer von ihnen     Angegebenen Zahl Anzeigen.\n"
        "Zahl eingeben:\n";
        cin >> Grenzwert;
        for(;;)
        {
            ++Anfangswert;
            cout<< Anfangswert << ".i\n";
            if(Grenzwert<=Anfangswert)
            break;
        }
    
        main();
    }
    


  • Tja dann...
    danke



  • Hacker schrieb:

    #include <iostream>
    using namespace std;
    
    int main()
    {
    unsigned int Grenzwert, Anfangswert(0);
    printf("Dieses Programm kann alle Zahlen bis zu einer von ihnen Angegebenen Zahl\nAnzeigen."
    "Zahl eingeben:\n");
    scanf("%i", &Grenzwert);
    for(;;)
    {
    ++Anfangswert;
    printf("%1.i\n",Anfangswert);
    if(Grenzwert<=Anfangswert)
    break;
    
    }
    
    main();
    }
    

    Welcher C Compiler compiliert diesen Code?



  • using namespace?
    #include <iostream>?
    cout...

    Ich befinde den Angeklagten für schuldig. Bitte wieder in C++ schieben 🙂


Anmelden zum Antworten