 |
JLI Spieleprogrammierung
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
nixkoenner Mini JLI'ler

Alter: 32 Anmeldedatum: 15.02.2007 Beiträge: 36
Medaillen: Keine
|
Verfasst am: 18.02.2007, 15:59 Titel: Problem beim weieren ausführen von Programmmen |
|
|
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.
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  |
|
Nach oben |
|
 |
manu Super JLI'ler

Alter: 35 Anmeldedatum: 09.03.2006 Beiträge: 327 Wohnort: allgäu (DE) Medaillen: Keine
|
Verfasst am: 18.02.2007, 16:33 Titel: |
|
|
Bitte mal den Code posten. ich habe gerade das Buch, welches auch immer, nicht zu Hand |
|
Nach oben |
|
 |
nixkoenner Mini JLI'ler

Alter: 32 Anmeldedatum: 15.02.2007 Beiträge: 36
Medaillen: Keine
|
Verfasst am: 18.02.2007, 18:59 Titel: |
|
|
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  |
|
Nach oben |
|
 |
The Lord of Programming Living Legend

Alter: 37 Anmeldedatum: 14.03.2003 Beiträge: 3122
Medaillen: Keine
|
Verfasst am: 18.02.2007, 19:11 Titel: Re: Problem beim weieren ausführen von Programmmen |
|
|
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. |
Hmm, deine Beschreibung finde ich sehr missverständlich
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  _________________ 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 |
|
 |
nixkoenner Mini JLI'ler

Alter: 32 Anmeldedatum: 15.02.2007 Beiträge: 36
Medaillen: Keine
|
Verfasst am: 18.02.2007, 19:22 Titel: |
|
|
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"
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
ich hoffe das war verständlicher |
|
Nach oben |
|
 |
The Lord of Programming Living Legend

Alter: 37 Anmeldedatum: 14.03.2003 Beiträge: 3122
Medaillen: Keine
|
Verfasst am: 18.02.2007, 19:31 Titel: |
|
|
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 |
|
 |
nixkoenner Mini JLI'ler

Alter: 32 Anmeldedatum: 15.02.2007 Beiträge: 36
Medaillen: Keine
|
Verfasst am: 18.02.2007, 19:58 Titel: |
|
|
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!  |
|
Nach oben |
|
 |
Jonathan_Klein Living Legend

Alter: 37 Anmeldedatum: 17.02.2003 Beiträge: 3433 Wohnort: Siegerland Medaillen: Keine
|
Verfasst am: 18.02.2007, 21:01 Titel: |
|
|
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 |
|
 |
Blubb-Tec JLI'ler

Alter: 34 Anmeldedatum: 29.03.2005 Beiträge: 171 Wohnort: Düsseldorf Medaillen: Keine
|
Verfasst am: 18.02.2007, 21:43 Titel: |
|
|
und benutz dafür am besten cin.get(JaNein) (könnte auch &JaNein) gewesen sein... das liest nur ein einzelnes zeichen ein  _________________ www.planlos.de |
|
Nach oben |
|
 |
The Lord of Programming Living Legend

Alter: 37 Anmeldedatum: 14.03.2003 Beiträge: 3122
Medaillen: Keine
|
Verfasst am: 19.02.2007, 03:24 Titel: |
|
|
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  _________________ 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 |
|
 |
nixkoenner Mini JLI'ler

Alter: 32 Anmeldedatum: 15.02.2007 Beiträge: 36
Medaillen: Keine
|
Verfasst am: 19.02.2007, 15:36 Titel: |
|
|
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
vg |
|
Nach oben |
|
 |
|
|
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
|