hilfe gesucht: problem bei ausgabe eines prozentwertes
-
hiho!
als erstes: ich bin n totaler noob im bereich c++. für die berufsschule muss ich allerdings ein paar kleinere Programme schreiben. Ich möchte versuchen, das mir eine funktion einen prozentwert ausgibt. die ausgabe soll den wert hochzählen, soweit kein thema, allerdings wird dabei jeweils die komplette zeile ersetzt. und es wird auch viel zu schnell gezählt, ich habe bereits versucht das zählen durch eine schleife zu verlangsamen, jedoch ohne nennenswerten erfolg. das ganze ist für die berechnung des PI-wertes nach der formel von leibniz. der prozent wert ergibt sich aus der eingegebenen zahl an schleifendurchläufen. der quelltext:int main()
{
long double ce=0, ze=0;
int ie;
cout << "Schleifenzahl: ";
cin >> ze;
cout << "Status der Berechnung: ";
for (ie=1; ie<=ze; ie++)
{if (ie % 100 == 0)
{
ce=(ie/ze)*100;
clrscr();
cout << fixed << setprecision(2) << setw(10) << ce << "%";
}
}getchar();
return 0;
}ich weiss leider nicht wie ich das zum laufen bekomme, dass mir der wert (xx.xx%) immer nur den zahlenwert überschreibt (windows-user kennen das vom formatieren der festplatte im DOS :)) die ausgabe sollte im besten fall so aussehn: Status der Berechnung: xx.xx%
und dabei soll nun nur der wert ersetzt/erneuert werden, nicht jedoch der Satz und das %-zeichen.kann mir da jmd helfen?? ich steh da echt vor nem riesen baum! ihr seht ja selbst an den befehlen wie wenig ich weis über die befehle, etc.
bitte bei erklärungen ohne fremdwörter und spezialbegriffesonst komm ich nichmehr mit^^
PS: ich schreibe mit Borland C++-builder 4 bzw. DEVc++ 4.9.9.2
mfg
matthias
-
in Standard-C++ geht das gar nicht, weil das keine Cursorbewegungen möglich macht (C++ ist es egal, wohin es seine Daten schreiben soll). Aber du kannst dich ja mal nach gotoxy() umsehen (damit kannst du deinen Cursor immer wieder an den Zeilenanfang zurücksetzen).
-
ja ich habe das bereits versucht, habe mich auch durch die hilfe vom borland-builder geackert, aber für einen anfänger wie mich ist das alles recht schwer zu verstehn...
könntest du mir vll ein kleines beispiel schreiben??? nur wie ich den befehl anwenden muss und welchen befehl ich in die zeile reinsetzen muss damit er das dann überschreibt...
wäre echt klasse..vielen dank im vorraus!!
mfg
matthias
-
Bin gerade zu faul dazu
Aber wenn du oben auf "Suchen" klickst, findest du bestimmt ein paar Threads mit Beispielen.
(PS: gotoxy ist übrigens keine Standard-Funktion, also mußt du selber herausfinden, ob und in welcher Form dein Compiler sowas unterstützt)
-
damit kannst dir das viell mal anschauen
int main(int argc, char* argv[]) { for(int i=0;i<100;i++) { clrscr(); gotoxy(5,1); cout<<i; Sleep(100); //pause, damit du das besser siehst } getch(); return 0; }
[EDIT]
hiermit verstehst es vielleicht besser, einfach mal code anschauen, und ausführenint main(int argc, char* argv[]) { int a,b =0; int ca,cb=0; cout<<"Zahl1: "; cout<<endl; cout<<"Zahl2: "; for(int i=0;i<100;i++) { if(i%2==0) { ++ca; gotoxy(10,1); cout<<ca; } if(i%3==0) { ++cb; gotoxy(10,2); cout<<cb; } Sleep(100); } getch(); return 0; }
-
CStoll schrieb:
in Standard-C++ geht das gar nicht, weil das keine Cursorbewegungen möglich macht (C++ ist es egal, wohin es seine Daten schreiben soll).
Im Prinzip ja, aber einige Konsolen reagieren auf CR (bzw. "\r"). Versuch' mal
int main() { long double ce=0, ze=0; int ie; cout << "Schleifenzahl: "; cin >> ze; cout << "Status der Berechnung: " << endl; // hier Zeilenende for (ie=1; ie<=ze; ie++) { if (ie % 100 == 0) { ce=(ie/ze)*100; // +-- CR: zurück zum Zeilenanfang cout << "\r" << fixed << setprecision(2) << setw(10) << ce << "%"; } } getchar(); return 0; }
:xmas2: Werner
-
was muss man für gotoxy includen?
-
Dieser Thread wurde von Moderator/in HumeSikkins aus dem Forum C++ in das Forum DOS und Win32-Konsole verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.