# Ausgeben von ungeraden Zahlen (VS 2005 Express)



## anonew1984 (11. November 2008)

*Ausgeben von geraden Zahlen (VS 2005 Express)*

Hi.
Erstmal ein Hallo von mir.
Sitze gerade seit einiger Zeit an meinem Laptop, um eine Vorbereitungsaufgabe zu lösen. (Anbei: In Sachen C++ bin ich total grün hinter den Ohren )

Und zwar folgende:
Ich soll ein Programm schreiben, das alle geraden Zahlen in einem durch Konstanten festgelegten Bereich ausgibt. Zu nutzen sind dabei nur while-Schleifen.

Ich habe also den Zahlenbereich von 0-20 gewählt und mich an einem ersten "Gerüst" versucht:


```
#include <iostream>
using namespace std;

int main()
{
	int i=0;

	while(i<=20)
	{
		cout << "Gerade Zahlen von 0 bis 20 :\n" << i << endl;
		i++;
	}
	
}
```


Klar ist, dass ich hiermit nicht allzuviel anfangen kann.. Das Programm gibt mir nun ja die Zahlen 0-20 aus, jedoch auch die ungeraden.
Jetzt ist die Frage, wie ich es so umschreiben muss, um die ungeraden zu filtern..
Als erstes habe ich dabei an den Modulo-Operator gedacht. MIt dessen Hilfe kann ich immerhin festlegen, dass die Zahlen auf "gerade" geprüft werden.. z.b dass nur zahlen angezeigt werden, die %2 keinen Rest ergeben, also %2=0.

Kann mir einer von euch in der frühen Stunde einen Denksanstoss geben?

Ich hoffe ich habe bei meinem ersten Post richrig gepostet..

Liebe Grüße,
Andreas

//verbessert


----------



## jsendrow (11. November 2008)

anonew1984 hat gesagt.:


> Ich habe also den Zahlenbereich von 0-15 gewählt und mich an einem
> 
> ```
> while(i<=20)
> ...



6, setzen. Du solltest schon in der Lage sein, deine eigenen Vorgaben (0-15) auch korrekt umzusetzen  


Dein Problem hat nebenbei nichts mit C++ zu tuen sondern ist rein mathematisch. Stell Dir einfach mal die Frage: Wie groß ist die Differenz  zwischen zwei ungeraden Zahlen?


----------



## anonew1984 (11. November 2008)

Oh, entschuldige.. Oben Stand noch die 15, da sollte auch eine 20 stehen . War nur zu doof zu kopieren.. Nochwas.. Ich sollte vorallem lernen, die Aufgabenstellung ordentlich zu lesen.. So sind es nicht sie ungeraden Zahlen, sondern die geraden.

Vielleicht ist mein Problem nun besser zu verstehen.. Entschuldigt die Verwirrung, ist schon spät, nun früh


----------



## deepthroat (11. November 2008)

Hi.





anonew1984 hat gesagt.:


> Jetzt ist die Frage, wie ich es so umschreiben muss, um die ungeraden zu filtern..
> Als erstes habe ich dabei an den Modulo-Operator gedacht. MIt dessen Hilfe kann ich immerhin festlegen, dass die Zahlen auf "gerade" geprüft werden.. z.b dass nur zahlen angezeigt werden, die %2 keinen Rest ergeben, also %2=0.


Wo ist denn jetzt dein Problem? Du hast doch bereits einen völlig akzeptablen Lösungsansatz... 

Gruß


----------



## SGSSGene (11. November 2008)

Oder ein alternative Lösungansatzt(der vermutlich aber nicht im sinne des Aufgabengebers liegt), ist es einfach die Variable um 2 zu erhöhen, also anstatt i++ => i+= 2;
Oder an was du schon selber gedacht hast, die Modulo Überprüfung, in einem if, vor der ausgabe.


----------



## devDevil (11. November 2008)

wenn nur schleifen erlaubt sind kannste dir if sparen  also i += 2 und gut ist.


----------



## SGSSGene (11. November 2008)

devDevil hat gesagt.:


> wenn nur schleifen erlaubt sind kannste dir if sparen  also i += 2 und gut ist.



Achso, ich hatte das so verstanden, das er von den Schleifen nur den Typ  'while' benutzen darf. Bei 'if' handelt es sich ja nicht um eine Schleife, sondern um eine Verzweigung. Man könnte auch die while-schleife so einsetzten das sie wie eine "if" Verzeigung funktioniert


----------



## vop (14. November 2008)

Also ich fasse noch einmal für dich zusammen:

```
include <iostream>
using namespace std;

int main()
{
    int i=0;


    while(i<=20)
    {
             cout << "Gerade Zahlen von 0 bis 20 :\n" << i << endl;
                // mit der folgenden Zeile wird i um 2 erhöht
        i+= 2;
    }
    
}
```
Damit löst du die Aufgabe durch den Trick, dass du stets um 2 erhöhst. Dass funtkioniert natürlich nur, wenn du wie in diesem Beispiel mit einer geraden Zahl beginnst (hier 0).
Ansonsten solltest du doch auf den Modulo-Weg arbeiten.


----------

