Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Umfang eines Kreises berechnen??? Hilfe!!!

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 < [ 2 ]
000
02.02.2004, 16:55 Uhr
~Cebinem
Gast


Hallo!!!
Ich bin totaler Programmieranfänger und hab es grad mal geschafft einen Text (im DOS-Fenster Format) auf den Bildschirm zu bringen. Jetzt hab ich in so einem C++ Kurs (nach ANSI Standard) gelesen, wie man den "Umfang eines Kreises berechnen" kann. Nun hab ich den Quellcode folgendermaßen in meinen Compiler ("DEV-C++ 4.9.8.0") eingegeben:


C++:
#include <iostream>
using namespace std;
int main()

{
float radius;
cout << "Bitte geben sie den Radius ein: " << endl;
cin >> radius;
cout << "Der Umfang des Kreises betraegt: " << 2 * 3.14 * radius << endl;

cin.get();
return 0;
}


Anschließend hab ich den Quellcode kompiliert und es stand "Done" da, also hat es ja funktioniert.
ABER: Es erscheint im DOS-Fenster nur die Zeile: "Bitte geben sie den Radius ein: " (ohne die Anführungszeichen) und weiter passiert nichts. Ich wollte eigentlich, dass das Programm den Umfang des Kreises berechnet, aber ich kann lediglich eine Zahl eingeben oder das Fenster schließen.

Nun meine Fragen: Was hab ich falsch gemacht bzw. eingegeben? Muss ich noch eine Zeile hinzufügen? BITTE helft mir, ich würde mich sehr freuen!!!!!

DANKE schon mal im vorraus!!!!!
MFG Cebinem

Bearbeitung von Pablo:

Naja, der Code geht innerhalb der cpp TAGS!


Dieser Post wurde am 02.02.2004 um 18:51 Uhr von Pablo editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
02.02.2004, 17:18 Uhr
0xdeadbeef
Gott
(Operator)


Das return hängt noch im Input-Stream, deswegen bringt das cin.get() nichts. Am einfachsten wäre es wohl, ein

C++:
cin.ignore();


vor das cin.get() zu schreiben.
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
02.02.2004, 19:36 Uhr
~Cebinem
Gast



Zitat:
0xdeadbeef postete
Das return hängt noch im Input-Stream, deswegen bringt das cin.get() nichts. Am einfachsten wäre es wohl, ein

C++:
cin.ignore();


vor das cin.get() zu schreiben.



An: Oxdeadbeef
Vielen vielen vielen ... Dank!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Das Programm funktioniert jetzt!!!!! Angenommen, ich möchte etwas ausrechnen mit zwei Unbekannten, z. B. a * b. Wie mache ich das dann mit "cin >>" und "float"? Auf was muss ich achten?
DANKE schon im vorraus!!!!!!!!!

MFG Cebinem
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
02.02.2004, 19:38 Uhr
~Cebinem
Gast


DANKE auch an Pablo!!!!!!!!

MFG Cebinem
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
02.02.2004, 19:47 Uhr
0xdeadbeef
Gott
(Operator)


Die einfachste Möglichkeit wäre

C++:
float a, b;
cin >> a >> b;


Zwischen den einzelnen Zahlen muss dann eine beliebige Anzahl whitespaces (leertaste, tab oder newline) sein.
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
02.02.2004, 22:14 Uhr
~Cebinem
Gast


An Oxdeadbeef:

DANKE!!!!!!!!!!!!! Es hat funktioniert, ich habs dann noch versucht und ungefähr so eingegeben und es ging!
DAAAAAAAANNNNNNNNNKKKKKKKKKEEEEEEEEE!!!!!!!!!!!!
Hab nochmal eine Frage: Wenn ich jetzt einmal den Umfang des Kreises berechnet hab (das Programm hat es berechnet) und drücke dann Enter (oder Return wenn das so heißt) beende ich das Programm. Kann ich auch mehrmals hintereinander den Umfang berechnen (lassen)?

Hoffe du kannst mir noch helfen!

DANKE schon im vorraus!!!

MFG Cebinem
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
02.02.2004, 22:23 Uhr
0xdeadbeef
Gott
(Operator)


Klar. Zum Beispiel:

C++:
#include <iostream>
#include <cctype> // für tolower

using namespace std;
int main()

{
  char c;
  do {
    cin.clear(); //für den Fall, dass jemand Mist eingegeben hat.
    cin.ignore(cin.rdbuf()->in_avail()); //löscht alle im Stream noch vorhandenen Zeichen

    float radius;
    cout << "Bitte geben sie den Radius ein: " << endl;
    cin >> radius;
    cout << "Der Umfang des Kreises betraegt: " << 2 * 3.14 * radius << endl;

    cout << "Nochmal? ";
    c = cin.get(); //jetzt enthält c das eingegebene Zeichen
  } while(tolower(c) == 'j'); //solange du J oder j eingibst, weitermachen
  return 0;
}


--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
03.02.2004, 18:50 Uhr
~Cebinem
Gast


HI!!!

Also ich hab den Quellcode, den dur mir freundlicherweise aufgeschrieben hast (DANKE!!!) in einen Editor kopiert und anschließend den gesamten Quellcode in meinen Compiler eingefügt und kompilert. Das hat auch so weit funktioniert (es stand Done. da). Aber wenn ich das Programm starte kommt: "Bitte geben sie den Radius ein: " und dann drücke ich Enter (oder Return) und das Programm wird beendet. So, dann hab ich mir gedacht, ich schreib vor die Zeile: return 0; noch cin.ignore(); und darunter cin.get(); und das hab ich dann auch getan. Danach konnte ich das Programm starten und 1x die Zahl für den Radius eingeben (Ergebnis wurde ermittelt). Du sagtest, wenn ich J oder j eingebe kann ich nochmal rechnen lassen, aber leider geht es nicht.

Meine Frage(n):
Hab ich "J" oder "j" falsch eingegeben oder zum falschen Zeitpunkt oder in der falschen Zeile im DOS-Fenster?
Hast du vielleicht irgendetwas in dem Quellcode weggelassen oder falsch eingetippt?
Was muss ich tun um eine erneute Rechnung durchführen zu können?
Gibt es auch andere Wege?

PS: Trotzdem danke, dass du dir die Zeit nimmst mir zu helfen!!!!!!!!!!

MFG Christoph
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
03.02.2004, 19:08 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


probier mal so

C++:
#include <iostream>
#include <cctype> // für tolower

using namespace std;
int main(){

  char c='j';
  while(tolower(c) == 'j'){
    float radius;
    cout << "Bitte geben sie den Radius ein: " << endl;
    cin >> radius;
    cout << "Der Umfang des Kreises betraegt: " << 2 * 3.14 * radius << endl;
    cout << "Nochmal? ";
    cin.clear(); //für den Fall, dass jemand Mist eingegeben hat.
    cin.ignore(cin.rdbuf()->in_avail()); //löscht alle im Stream noch vorhandenen Zeichen
    c = cin.get(); //jetzt enthält c das eingegebene Zeichen
  }
  return 0;
}


--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
03.02.2004, 19:42 Uhr
0xdeadbeef
Gott
(Operator)



C++:
#include <iostream>
#include <cctype> // für tolower

using namespace std;
int main()

{
  char c;
  do {
    cin.clear(); //für den Fall, dass jemand Mist eingegeben hat.
    cin.ignore(cin.rdbuf()->in_avail()); //löscht alle im Stream noch vorhandenen Zeichen

    float radius;
    cout << "Bitte geben sie den Radius ein: " << endl;
    cin >> radius;
    cout << "Der Umfang des Kreises betraegt: " << 2 * 3.14 * radius << endl;

    cout << "Nochmal? ";
    [b]cin.ignore(); //Jepp, hier hängt auch noch ein newline im stream[/b]
    c = cin.get(); //jetzt enthält c das eingegebene Zeichen
  } while(tolower(c) == 'j'); //solange du J oder j eingibst, weitermachen
  return 0;
}


--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 < [ 2 ]     [ C / C++ (ANSI-Standard) ]  


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: