Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Offene fussgesteuerte Schleife (do while)

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
20.02.2004, 22:20 Uhr
~Dr_Joschi
Gast


Hallo Leute,

kann mir irgendjemand sagen, für welche Zwecke man die do-while Schleife in c++ gebrauchen kann.
Nur als Abbruchkriterium, dass man z.B. eine 0 eingibt, wenn das bzw. die Schleife beendet werden soll, kann doch nicht alles sein.

Für Beispielanwendungen bzw. Beispielprogramme aus dem kaufmännischen Bereich wäre ich sehr dankbar!

Joschi
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
20.02.2004, 22:23 Uhr
Pablo
Supertux
(Operator)


Für die selbe Zwecke, die jede andere Programmiersprache eine do-while Schleife hat.

Deine Frage verstehe ich allerdings nicht ganz, denn ich bin nicht sicher, ob du weißt, was überhaupt eine do-while Schleife ist.
--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!

Dieser Post wurde am 20.02.2004 um 22:24 Uhr von Pablo editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
20.02.2004, 22:33 Uhr
~Dr_Joschi
Gast


Vielleicht hätte ich meine Frage etwas genauer formuliren sollen.

C++ die erste Programmiersprache die ich lerne.

Von der Programmierlogik her ist mir der Unterschied zwischen der while-Schleife und der do-while-Schleife, wohl bekannt, dass nähmlich die Bedingungsprüfung bei der while Schleife vor Eintritt in die Schleife erfolgt und bei der do-while-Schleife erts danach.

Die Beispeilprogramme die man in Büchern findet, sind alle der Natur, dass dort ein Programm beendet wird, wenn eine 0 oder ein X oder so eingegeben wird.

Für einen C++ Kurs bin ich nun auf der Suche nach sinnvollen und wirklich guten Beispielaufgabe, bzw. Beispielprogrammen, die im kaufmännischen Bereich liegen sollten.

Wenn jemand welche hat, bitte melden oder hier Posten!
Würde mir sehr helfen!

Joschi
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
20.02.2004, 23:00 Uhr
Pablo
Supertux
(Operator)


Ja, ich glaube, du hast das Prinzip solchen Schleifen nicht verstanden.

Du weißt, dass die Anweisungen immer einer nach der anderen ausgeführt werden, sogan wir mal, von oben nach unten. In C, C++, Java und viele andere Sprachen kann man mehrere Anweisungen in einer einzigen Zeile schreiben. In diesem Fall werden die Anwesiungen von links nach rechts ausgeführt.

Wenn eine Anweisung vollständig ausgeführt ist, wird dann unmittelbar die nächste ausgeführt. Es gibt aber manche Fälle, bei denen wir einige Anweisungen wiederholen wollen. Um Nicht 100 Mal die gleichen Anweisungen schreiben zu müssen, gibt es Schleifen, die ausgeführt werden, solange eine Bedingung erfüllt ist. Beispiele gibt es genügend, jedoch ist es manchmal auch schwer Beispiele zu nennen.

Machen wir ein Beispiel für eine While Schleife.

Algorithmus-zählen
Gegeben seien 2 natürliche Zahlen a und b, mit a!=b (ungleich) und a<b.
Gesucht ist eine Zahl x, für die gilt: a+x-b=0. x muss mindestens 0 sein. Wenn für x==1 die Bedingung nicht erfüllt ist, dann wird x um 1 erhöht. Eine zweite Zahl y gleich null soll dabei um den aktuellen x Wert addiert werden, falls die Bedingnung nicht erfüllt ist.

Den Algorithmus habe ich grad erfunden, er berechnet b-a. Und y ist 1+2+3+...+x

In Worten wäre:

Solange a+x-b ungleich null, dann erhöhe x um 1 und y um x


Wie du siehst, ich will 2 Anwisungen ständig wiederholen, nämlich

C++:
x++;
y+=x; // äquivalent zu y=y+x;



Wir könnten da eine For-Schleife benutzen, leider wissen wir nicht, wie oft sie ausgeführt werden soll. Also, benutzen wir eine while-Schleife.

In C++

C++:
#include <iostream>
int main()
{
    std::cout << "Geben Sie die Zahl a ein: " << std::endl;
    int a;
    std::cin >> a;
    if (a<0) {
       std::cout << "a muss eine natürliche Zahl sein." << std::endl;
       return 1;
    }
    int b;
    std::cin >> b;
    if (b<0) {
       std::cout << "b muss eine natürliche Zahl sein." << std::endl;
       return 1;
    }

    if (b<=a) {
       std::cout << "a muss kleiner als b sein" << std::endl;
       return 1;
    }

    // Anfang des Algorithmus
    int x=0, y=0;
    while(a+x-b!=0) {
        x++;
        y+=x;
    }

    // wenn die while-Schleife terminiert, dann haben wir dir gesuchte Zahl x gefunden.
    std::cout << "Ergebnis: b-a = " << x << " und die Summe von 1 bis x ist: " << y << std::endl;

    return 0;
}



Naja, ich hoffe damit hast du verstanden, wozu man eine while Schleife auch benutzen kann.
--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!

Dieser Post wurde am 21.02.2004 um 17:15 Uhr von Pablo editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
20.02.2004, 23:10 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


wenn du beispielaufgaben aus dem investmentbereich haben willst helfen dir vielleicht diese threads hier
www.fun-soft.de/showtopic.php?threadid=5745
www.fun-soft.de/showtopic.php?threadid=4652&post_start=10&time=
kann man auch mit schleifen proggen ich ziehe aber die performantere expliziete Lösung vor...
--
...fleißig wie zwei Weißbrote

Dieser Post wurde am 20.02.2004 um 23:11 Uhr von Windalf editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
21.02.2004, 17:07 Uhr
~Dr_Joschi
Gast


Nun habe ich nur noch eine Frage:
Welche Probleme lassen sich mit einer do-while-Schleife lösen, die sich nicht auch mit einer while-Schleife lösen lassen?

Das war mein eigentliches Problem:

Ich habe beispielsweise folgendes Beispielprogramm:

Ein Unternehmen, das heute einen Umsatz von 500.000 hat, möchte seinen Umsatz verdoppeln. Es wird mit einem jährlichen Umsatzzuwachs von 8% gerechnet. Nach wie vielen Jahren hat das Unternehmen sein Ziel erreicht?

Der dazugehörige Quellcode:


C++:
#include <iostream.h>
#include <conio.h>
//---------------------------------------------------------------------
int main()
{
  double Umsatz = 500000.0;
  int Jahre = 0;
  do
  {
    Umsatz = Umsatz + Umsatz * 8 / 100.0;
    Jahre++;
  } while (Umsatz < 1000000.0);
  cout << " Nach " << Jahre << " Jahren hat sich der Umsatz auf 1 Million"
       << " EUR verdoppelt";
  getch();
  return 0;
}
//---------------------------------------------------------------------




Programmiere ich diese Programm mit einer einfachen while-Schleife, tut es genau das selbe, oder??
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
21.02.2004, 17:12 Uhr
Pablo
Supertux
(Operator)


Alle Probleme, die man mit einer While-Schliefe schrieben kann, kann man sie in do-schleifen umwandeln, nur dass es bisschen schwer ist.

Wenn du eine while-schleife hast, ist weil du willst, dass die Schleife nur dann ausgeführt wird, wenn die bedingung gilt. Eine do-schleife dagegen, wenn du willst, dass die Schleife mind. einmal ausgeführt wird, unabhängig davon, ob die Bedingung gilt oder nicht.

Man kann nicht sagen, welche Schleife welche Probleme löst. Das hängt eingentlich nur von dem gewählten Algorithmus und wie du es implementieren willst.
--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
21.02.2004, 17:43 Uhr
kronos
Quotenfisch
(Operator)



Zitat:
~Dr_Joschi postete
Welche Probleme lassen sich mit einer do-while-Schleife lösen, die sich nicht auch mit einer while-Schleife lösen lassen?


es gibt drei schreibweisen für schleifen in C: while, do und for. im prinzip würde eine reichen, da man sie sich immer irgendwie austauschen lassen. manchmal ist eine davon besonderes praktisch, meistens ist es geschmackssache.
--
main($)??<-$<='?'>>2?main($-!!putchar(
(("$;99M?GD??(??/x0d??/a:???;a"+'?'/4)
??($??)+'?'/3-2-1+$%2)??''?')):'?';??>
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
21.02.2004, 17:45 Uhr
0xdeadbeef
Gott
(Operator)


Du kannst zwar in den meisten Fällen eine do-while-Schleife auch in eine while-Schleife umschreiben, aber wozu solltest du die Rechenzeit verschwenden? Eine do-while-Schleife unterscheidet sich von einer while-Schleife darin, dass sie mindestens einmal ausgeführt wird. Wenn du weißt, dass der Code mindestens einmal ausgeführt wird, kannst du dir damit eine Überprüfung sparen, was je nachdem, wie kompliziert die Abbruchbedingung ist, schon ein wesentlicher Vorteil sein kann.
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
23.02.2005, 12:00 Uhr
~lol
Gast


hallo wir haben eine frage und zwar haben wir Informatik folgende aufgabe gestellt gekriegt:
"Erkläre die Umwandlung von einer Schleifenart in eine andere Schleifenart in TP"
(Möglichkeiten und Grenzen)
es wäre schön wenn uns jemand helfen könnte
danke 10d
 
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: