Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

04.01.2005, 01:38

kleine frage

bin grad bei der Aufgabe 3.10 angekommen und hab sie auch erfolgreich gelöst, doch etwas anders als der Lösungsvorschlag.

Meine Lösung:

#include <iostream>

using namespace std;

//Hauptprogramm

int main ()
{
//Variablen
int Startwert;

cout << "bei welcher Zahl soll angefangen werden zu zählen: ";
cin >> Startwert;

if ((Startwert%2 == 0) || (Startwert == 0))
{
cout << "Zahl nicht zulässig\n";
}

else
{
//Zählen bis zur hälfte
for (int e=Startwert; e>Startwert/2; e--)
{
cout << "Countdown " << e << endl;
}

cout << "Hälfte erreicht" << endl;

//Zählen ab der Hälfte
for (int i=Startwert/2; i!=-1; i--)
{
cout << "Countdown " << i << endl;
}
}

return 0;
}

jetzt wollt ich wissen, ob diese lösung irgendwelche nachteile mit sich bringt, die für mich im moment noch nicht ersichtlich sind. die bildschirmausgabe is genau die selbe.

felix

Frischling

Beiträge: 73

Wohnort: Solingen

Beruf: Schüler

  • Private Nachricht senden

2

04.01.2005, 11:08

Ich hatte auch ne andere Lösung!
Aber bei so nem kleinen Programm gibt es wohl dbaie keine Nachteile oder Vorteile geben oder??

Leonb

Frischling

Beiträge: 29

Wohnort: Berlin

Beruf: Schüler (leider)

  • Private Nachricht senden

3

23.01.2005, 17:50

C-/C++-Quelltext

1
2
3
4
if ((Startwert%2 == 0) || (Startwert == 0))
{
cout << "Zahl nicht zulässig\n";
} 


also hier könnte man ne Schleife machen, dass wenn man was falsches eingibt, dass Programm nicht gleich beendet wird ;p

z.B:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
bool Wiederholung;

do
{
      if ((Startwert%2 == 0) || (Startwert == 0))
      {
      cout << "Zahl nicht zulässig\n";
      Wiederholung = true;
      } 

} while (Wiederholung == true);


ansonsten: gute Arbeit! ;)

edit: bei der Variable "Wiederholung das "bool" weggelassen!
Dancke Osram :wirbel:

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

4

23.01.2005, 17:55

So ist es noch kürzer:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
int Startwert;

while(true)
{
    cout << "Bei welcher Zahl soll angefangen werden zu zählen? ";
    cin >> Startwert; 

    if(!(Startwert % 2) || !Startwert) cout << "Zahl nicht zulässig\n";
    else break;
}

Osram

Alter Hase

Beiträge: 889

Wohnort: Weissenthurm

Beruf: SW Entwickler

  • Private Nachricht senden

5

23.01.2005, 19:34

LeonB schrieb:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
bool Wiederholung;

do
{
      if ((Startwert%2 == 0) || (Startwert == 0))
      {
      cout << "Zahl nicht zulässig\n";
      bool Wiederholung = true;
      }

} while (Wiederholung == true);



Das wird nicht gehen, da Du zwei verschiedene Variablen "Wiederholung" hast. Beim zweiten das "bool" weglassen und schon sollte es gehen.
"Games are algorithmic entertainment."

Anonymous

unregistriert

6

23.01.2005, 20:10

Man kann viele möglichkeiten abgeben, nur diese variante mit bool ist noch nicht im Buch drann und kommt später! ;)

Wie du gemerkt hast, ist Deine möglichkeit auch richtig.
Schaust Du Dir aber die Lösung an, ist die Schleife kürzer und somit verbraucht sie weniger Speicherkapazität.

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

7

23.01.2005, 20:18

Zitat von »"Gorty"«

und somit verbraucht sie weniger Speicherkapazität.

Was für Speicherkapazität?
Der Compiler wird wahrscheinlich alle Varianten gleich übersetzen.

Anonymous

unregistriert

8

23.01.2005, 20:19

Wenn er das macht, ist es ja gut.
Wobei ich mir das aber nicht direkt vorstellen kann.
Aber ich stecke da ja nicht drinn! ;)

Leonb

Frischling

Beiträge: 29

Wohnort: Berlin

Beruf: Schüler (leider)

  • Private Nachricht senden

9

23.01.2005, 21:03

Naja hab den Quellcode weder selbst getestet (Compiliert) noch mir die Stelle
im Buch angesehen :P

Steven77

Alter Hase

Beiträge: 515

Wohnort: Münster - Gievenbeach

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

10

25.01.2005, 10:57

Der Test, ob Startwert gleich 0 ist, ist übrigens überflüssig. Denn wenn Startwert wirklich 0 ist, dann ist der Modulo von Startwert längst 0.
Aufgrund der Short-Circuit-Evaluation findet der Test auf Startwert == 0 sowieso niemals statt, denn vorher ist dann nämlich Startwert % 2 == 0 bereits true. Es steht "weiter links" im Gesamtausdruck und ist im Falle von true aussagekräftig genug für das Ergebnis des ||-Operators ;)

Werbeanzeige