JLI Spieleprogrammierung Foren-Übersicht JLI Spieleprogrammierung

 
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen 
 medals.phpMedaillen   RegistrierenRegistrieren   ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

Problem beim weieren ausführen von Programmmen

 
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Fragen, Antworten und Kritik
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
nixkoenner
Mini JLI'ler


Alter: 32
Anmeldedatum: 15.02.2007
Beiträge: 36

Medaillen: Keine

BeitragVerfasst am: 18.02.2007, 15:59    Titel: Problem beim weieren ausführen von Programmmen Antworten mit Zitat

Ich habe ein Problem.

Ich habe das Listing 6.2 gemacht, und gemerkt, das mich das Programm fragt, ob eine weitere Berechnung durchgeführt werden soll, aber wenn man Ja eingibt steht wie am ende des Programmes "Press Enter to continue"!

Nun habe ich das Programm, aus den Beispielen gestartet und entdeckt:

Wenn ich es öffne und starte, passiert das selbe wie oben beschrieben
Wenn ich das Programm direkt starte, ohne das Projekt zu öffenen, steht da drücken sie eine bbeliebige Taste, und wenn, schließt sihc das Programm auch. Shocked

Nun meine Frage:

Ist das Programm in dem Fall noch nicht vollständig,, und es soll keine weitere Berechnung durchführen? Und warum steht wenn ich das Programm selbst schreibe " Press Enter to continue" und von den Beispielen "drücken sie eine belibige Taste"

Das letzte Problem ist zwar nicht wichtig, aberich wollt es nur dazugeschrieben haben.

Danke im Vorraus für die Antworten Wink
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
manu
Super JLI'ler


Alter: 35
Anmeldedatum: 09.03.2006
Beiträge: 327
Wohnort: allgäu (DE)
Medaillen: Keine

BeitragVerfasst am: 18.02.2007, 16:33    Titel: Antworten mit Zitat

Bitte mal den Code posten. ich habe gerade das Buch, welches auch immer, nicht zu Hand
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
nixkoenner
Mini JLI'ler


Alter: 32
Anmeldedatum: 15.02.2007
Beiträge: 36

Medaillen: Keine

BeitragVerfasst am: 18.02.2007, 18:59    Titel: Antworten mit Zitat

Das Buch ist "jetzt lerne ich Spieleprogrammierung mit DirectX und der code:

//CPP-Tags verwenden, TLoP

CPP:
// Berechnung der Kreisflaechen
// mit Tastaturabfrage und Funktionsaufrufen

#include <iostream>

const float PI = 3.141f;

// Funktionsprototypen

float RadiusEinlesen(void);
float FlaecheBerechnen(float Radius);
void FlaecheAusgeben(float Flaeche);

// Die folgende Funktion entcheidet, anhand
// einer Tastatureingabe, ob die Berechnung
// fortgesetzt werden soll.

bool Fortsetzen(void);

using namespace std;

int main(void)
{
    float Kreisflaeche = 0.0f;

    do{
        float Radius = RadiusEinlesen();
        Kreisflaeche = FlaecheBerechnen(Radius);
        FlaecheAusgeben(Kreisflaeche);

    }while(Fortsetzen());
}

float RadiusEinlesen(void)
{
    float Eingabe = 0.0f;

    cout << "Bitte geben Sie eine Zahl ein ";
    cin >> Eingabe;

    return Eingabe;
}

float FlaecheBerechnen(float Radius)
{
    return PI * Radius * Radius;
}

void FlaecheAusgeben(float Flaeche)
{
    cout << "Die Kreisflaeche ist " << Flaeche << '\n';
}

bool Fortsetzen(void)
{
    char JaNein = 'j';

    cout << "Weitere Berechnung durchfueren?";
    cin >> JaNein;

    if('j' == JaNein)
    {
        return true;
    }
    else
    {
        return false;
    }
}



Ich hoff des hilft Wink
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
The Lord of Programming
Living Legend


Alter: 37
Anmeldedatum: 14.03.2003
Beiträge: 3122

Medaillen: Keine

BeitragVerfasst am: 18.02.2007, 19:11    Titel: Re: Problem beim weieren ausführen von Programmmen Antworten mit Zitat

nixkoenner hat Folgendes geschrieben:
Nun habe ich das Programm, aus den Beispielen gestartet und entdeckt:

Wenn ich es öffne und starte, passiert das selbe wie oben beschrieben
Wenn ich das Programm direkt starte, ohne das Projekt zu öffenen, steht da drücken sie eine bbeliebige Taste, und wenn, schließt sihc das Programm auch. Shocked

Hmm, deine Beschreibung finde ich sehr missverständlich Razz

Wenn du ein Konsolenprogramm von Visual Studio aus ausführst, dann wird am Ende eine automatische Abfrage eingebaut, damit dir das Auswerten/Debuggen einfacher fällt. Führst du dasselbe Programm aus dem Explorer aus, gibt es keine Abfrage.
Mit system("pause"); kann man eine ähnliche Abfrage hervorrufen, die aber sowohl vom Explorer aus als auch von Visual Studio aus zu sehen ist Wink
_________________
www.visualgamesentertainment.net
Current projects: RDTDC(1), JLI-Vor-Projekt, Tetris(-Tutorial), JLI-Format
(1) Realtime Developer Testing and Debugging Console


Anschlag, Anleitung zum Atombombenbau, Sprengkörper...
Hilf Schäuble! Damit er auch was findet...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
nixkoenner
Mini JLI'ler


Alter: 32
Anmeldedatum: 15.02.2007
Beiträge: 36

Medaillen: Keine

BeitragVerfasst am: 18.02.2007, 19:22    Titel: Antworten mit Zitat

Ich hab mich da etwas verschrieben. Also auf der Cd ist doch so ein Index drin, wo man alle Beispiele die es im Buch gibt, öffnen kann. und wenn ich das programm von da direkt starte, steht da am schluss "drücken sie eine beliebige taste"

Wenn ich das programm aber selbst mit Code::Blocks schreibe, genauso wie vorgegeben (im Buch), dann steht da "press enter to continue"!

aber das ist eigentlich nicht das hauptproblem. Sondern das ich mit diesem programm zwar den Benutzer des Programmes frage, ob eine weitere Berechnung durchgeführt werden soll, aber wenn ich "ja" eingebe, endet das Programm TROTZDEM! Da steht trotzdem "press enter to continue" oder "drücken sie eine belibige taste" Shocked

Meine Frage war, ob das absicht ist, weil es ja unnötig ist, wenn man das Programm so macht, dass es fragt, aber so und so automatisch endet, egal ob ja oder nein Confused

ich hoffe das war verständlicher
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
The Lord of Programming
Living Legend


Alter: 37
Anmeldedatum: 14.03.2003
Beiträge: 3122

Medaillen: Keine

BeitragVerfasst am: 18.02.2007, 19:31    Titel: Antworten mit Zitat

Bin mir jetzt immer noch nicht ganz sicher, was du meinst.

Es ist egal, was du im Programm abfragst, diese automatische Abfrage kommt entweder oder kommt nicht, aber es hängt nicht von dem Code vorher ab, sondern wahrscheinlich vom Compiler. Visual Studio dichtet diese Abfrage am Schluss noch dazu, wenn dus von dort ausführst (ich weiß nicht, wie das bei Code::Blocks ist).

Wie gesagt, eine solche Abfrage kann man natürlich auch manuell einbauen. Wenn du die Beispiele von der CD aus ausführst, wird es wohl entweder manuell eingebaut sein oder man kann irgendwo bei Code::Blocks einstellen, dass es immer kommt und nicht nur, wenn dus aus der IDE aufrufst.
_________________
www.visualgamesentertainment.net
Current projects: RDTDC(1), JLI-Vor-Projekt, Tetris(-Tutorial), JLI-Format
(1) Realtime Developer Testing and Debugging Console


Anschlag, Anleitung zum Atombombenbau, Sprengkörper...
Hilf Schäuble! Damit er auch was findet...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
nixkoenner
Mini JLI'ler


Alter: 32
Anmeldedatum: 15.02.2007
Beiträge: 36

Medaillen: Keine

BeitragVerfasst am: 18.02.2007, 19:58    Titel: Antworten mit Zitat

ne ich glaub du verstehst net was i mein
des programm soll nachfragen, nach der ersten berechnung der kreisfläche, ob man noch eine 2. Berechnung durchführen will. das geht mit der "char JaNein" Funktion. Wenn "j" der erste buchstabe der eingabe ist, zählt es als true. dann sollte man noch einmal einen Radius eingeben können. Das funktioniert aber nicht. denn auch wenn man ja schreibt, folgt "press enter to continue". Nach dem drücken von enter ist das programm beendet. eine 2. berechnung kommt nicht! Sad
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Jonathan_Klein
Living Legend


Alter: 37
Anmeldedatum: 17.02.2003
Beiträge: 3433
Wohnort: Siegerland
Medaillen: Keine

BeitragVerfasst am: 18.02.2007, 21:01    Titel: Antworten mit Zitat

du darfst nicht "ja" schreiben, weil der cin nur ein einzelnes Z eichen erwartet. Probier mal einfach nur "j" einzugeben.
Es war z.b. auch so, dass wenn man "ein String" eingibt, nur das "ein" gezählt wurde und "string" für die nächste Eingabe direkt mitbenutzt wurde. Weiß jetzt bnicht woran das liegt.
Also, gibt einfach mal nur "j" ein.
_________________
https://jonathank.de/games/
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Blubb-Tec
JLI'ler


Alter: 34
Anmeldedatum: 29.03.2005
Beiträge: 171
Wohnort: Düsseldorf
Medaillen: Keine

BeitragVerfasst am: 18.02.2007, 21:43    Titel: Antworten mit Zitat

und benutz dafür am besten cin.get(JaNein) (könnte auch &JaNein) gewesen sein... das liest nur ein einzelnes zeichen ein Wink
_________________
www.planlos.de
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen MSN Messenger
The Lord of Programming
Living Legend


Alter: 37
Anmeldedatum: 14.03.2003
Beiträge: 3122

Medaillen: Keine

BeitragVerfasst am: 19.02.2007, 03:24    Titel: Antworten mit Zitat

Jonathan_Klein hat Folgendes geschrieben:
du darfst nicht "ja" schreiben, weil der cin nur ein einzelnes Z eichen erwartet. Probier mal einfach nur "j" einzugeben.
Es war z.b. auch so, dass wenn man "ein String" eingibt, nur das "ein" gezählt wurde und "string" für die nächste Eingabe direkt mitbenutzt wurde. Weiß jetzt bnicht woran das liegt.
Also, gibt einfach mal nur "j" ein.

Nur zum Klarstellen: cin hat liest grundsätzlich nicht nur ein Zeichen(Es zählt aber Whitespace-Zeichen als \0 - also auch Leerzeichen). In deinem Beispiel kann es nur ein Zeichen lesen, weil du nur einen char dafür angelegt hast.


Hast du denn wirklich nur einen Buchstaben eingegeben?
Wenn nicht, führt das denke ich zu undefiniertem Verhalten, da du eben nur Platz für einen char hast. Als ich es mit mehreren Buchstaben ausprobiert hab, gab es eine Endlosschleife...
Mit nur 'j' funktioniert dein Code bei mir jedenfalls Wink
_________________
www.visualgamesentertainment.net
Current projects: RDTDC(1), JLI-Vor-Projekt, Tetris(-Tutorial), JLI-Format
(1) Realtime Developer Testing and Debugging Console


Anschlag, Anleitung zum Atombombenbau, Sprengkörper...
Hilf Schäuble! Damit er auch was findet...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
nixkoenner
Mini JLI'ler


Alter: 32
Anmeldedatum: 15.02.2007
Beiträge: 36

Medaillen: Keine

BeitragVerfasst am: 19.02.2007, 15:36    Titel: Antworten mit Zitat

aja. jetzt hab ichs probiert und wenn man nur "j" eingibt klappts. Aber im Buch wurde es so beschrieben, dass die "char" Funktion nur den ersten Buchstaben erkennt, egal was nachher steht. naja. Danke jedenfalls. Jetzt ist mir das klar (obwohl ich da eigentlich auch allein draufkommen hätt konnen,aber...)

naja danke jedenfalls Wink

vg
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Fragen, Antworten und Kritik Alle Zeiten sind GMT
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.


Powered by phpBB © 2001, 2005 phpBB Group
Deutsche Übersetzung von phpBB.de

Impressum