Ausgeben von ungeraden Zahlen (VS 2005 Express)


anonew1984

Grünschnabel
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:

Code:
#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 :)
 
Zuletzt bearbeitet:
J

jsendrow

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

Das Programm gibt mir nun ja die Zahlen 0-20 aus

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

Grünschnabel
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 :)
 
Zuletzt bearbeitet:

deepthroat

Erfahrenes Mitglied
Hi.
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

Erfahrenes Mitglied
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.
 

SGSSGene

Erfahrenes Mitglied
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 :D
 

vop

Erfahrenes Mitglied
Also ich fasse noch einmal für dich zusammen:
Code:
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.
 

Forum-Statistiken

Themen
272.355
Beiträge
1.558.612
Mitglieder
187.829
Neuestes Mitglied
AlDi31