C++ Stunde 2

Seite 1 von 1 - Forum: Coding Stuff auf overclockers.at

URL: https://www.overclockers.at/coding-stuff/c_stunde_2_68074/page_1 - zur Vollversion wechseln!


moidaschl schrieb am 20.02.2003 um 11:36

C++ Stunde 2:
geschrieben für Borland Builder

nach längerem warten folgt jetz die 2te Stunde unseres C++ Kurses!

Hier geht es um Auswahlen!

Vorerst einmal die zwei Auswahlstrukturen

Zweifachauswahl: Es wird ein logischer Wert berechnet ( true oder false ). Aufgrund des Ergebnisses wird
dann ein bestimmter Zweig ausgeführt (näheres bei der if-Anweisung).

Mehrfachauswahl: Ein Wert wird bestimmt und es werden beliebig viele Anweisungen durchlaufen (switch-Anweisung)

2.1 if-Anweisung
Gleich am Anfang wieder das selbe Beispiel wie in der 1.Stunde, nur erweitert!


#include <iostream.h>
#include <conio.h>

int main()
{
int Zahl1, Zahl2, Ergebnis;
cout<<"Bitte eine Zahl eingeben!: ";
cin>>Zahl1;
cout<<"Bitte noch eine Zahl eingeben!: ";
cin>>Zahl2;
Ergebnis=Zahl1+Zahl2;
if(Ergebnis > 100)
cout<<"Das Ergebnis ist groesser als 100 und lautet: "<<Ergebnis;
else
cout<<"Das Ergebnis ist kleiner als 100 und lautet: "<<Ergebnis;
getch();
return 0;
}

Die if-Anweisung wird so geschrieben:

if (Anweisung)
{

}
else
{

}

Wenn nur ein Code in der if Anweisung steht kann man die Klammern weglassen ( ad. Bsp. ).
Es wäre auch möglich nur den if-Teil zu schreiben, dann darf aber kein else stehen!
Wenn der if-Teil nicht erfüllt ist, wird der else-Teil ausgeführt.

2.2 switch-Anweisung

Bei der switch-Anweisung haben wir die Möglichkeit mehrere if-Bedingungen in eine andere
Bedingung zu verschmelzen!

Beispiel ( ich lasse jetz den rest weg, der wird dann so wie oben geschrieben! ):

if(x==1)
cout<<"1";
if(x==2)
cout<<"2";
if(x==3)
cout<<"3";
...

das geht auch einfacher!

switch(x)
case 0: cout<<"0";break;
case 1: cout<<"1";break;
case 2: cout<<"3";break;
default: cout<<"garnichts!";

mit der break; Anweisung wird zum Ende der switch Anweisung gesprungen!
die default Anweisung wird ausgeführt, wenn kein case zutrifft!

Das waren die Auswahlen kurz und prägnant zusammengefasst! Gar nicht viel zu lernen :D!
Wenns fragen gibt ( wahrscheinlich ) einfach posten ich oder andre können sicher helfen!
in diesem Sinne
moidaschl


atrox schrieb am 20.02.2003 um 14:32

praktisches beispiel: (weil case 0: cout<<"0"; nicht wahnsinnig anschaulich ist)
lcoaltime liefert eine struktur, in dem unter anderem der wochentag enthalten ist. man kann switch/case verwenden, deutsche namen dazu auszugeben:

Code:
switch (tm->tm_wday) {
  case 0: 
    cout << "Sonntag";
    break;
  case 1: 
    cout << "Montag"
    break;
  case 2: 
    cout << "Dienstag";
    break;
  case 3: 
    cout << "Mittwoch";
    break;
  case 4: 
    cout << "Donnerstag";
    break;
  case 5: 
    cout << "Freitag";
    break;
  case 6: 
    cout << "Samstag";
    break;
}


Vivo schrieb am 20.02.2003 um 20:09

hmm ...
also ich find das von moidaschl netter ...
am Anfang kann niemand etwas mit dem "->" Operator bzw. mit Strukturen anfangen ...
Ausserdem wird das Beispiel ja auch mit :

Code:
if(x==1)
cout<<"1";
if(x==2)
cout<<"2";
if(x==3)
cout<<"3";
verglichen und dadurch näher erläutert ...


wodie schrieb am 20.02.2003 um 20:29

erstmal ein großes danke an moidaschl für die fortsetzung :)

2.

Code:
if(x==1)
cout<<"1";
if(x==2)
cout<<"2";
if(x==3)
cout<<"3";

steht in diesem bsp "x" für das ergebnis?
falls ja...dann geh ich davon aus dass die sinnhaftigkeit hierbei eher zweitrangig ist und es hauptsächlich um das verständniss geht; denn wenn "x" für das ergebnis steht, ist es unlustig jede reele zahl einzugeben ;)
(ich hoff ich steh da nicht völlig auf der leitung...falls doch stellts das bitte richtig :))

bei mir schaut das dann so aus (wie gesagt: auf 3 ergebniss beschränkt hehe):
Code:
#include <iostream.h>
#include <conio.h>

int main()
{

	int zahl1, zahl2, ergebnis,x;

cout<<"bitte eine zahl eingeben: ";
cin>>zahl1;

cout<<"bitte eine weitere zahl eingeben: ";
cin>>zahl2;
ergebnis=x=zahl1+zahl2;

if(x==1)
cout<<"1";
if(x==2)
cout<<"2";
if(x==3)
cout<<"3";

getch();
return 0;
}


3.
zudem (ist zwar nur form/layout...):
sagts ma bitte, wie krieg ich da
"cout<<"Das Ergebnis ist kleiner als 100 und lautet: "<<Ergebnis;"
das endl; rein? sprich dass nach der ausgabe des ergebnis das "press any key 2 continue" eine zeile drunter steht?


Oculus schrieb am 20.02.2003 um 20:31

<senf>
es gibt auch ein sehr kurzes "if"

Code:
...
richtig = myValue != 5 ? 5 : -1;
...

{ <vergleichsklausel> ? <zuzuweisender wert bei true> : <zuzuweisender wert bei false> }

kann auch mit anderen anweisungen geschachtelt werden, zb:
Code:
...
printf("ich bin eine %s zahl: %d", ((zahl%2) == 1 ? "ungerade" : "gerade"), zahl);
...
</senf>


that schrieb am 20.02.2003 um 22:54

Zitat von atrox
Code:
switch (tm->tm_wday) {
  case 0: 
    cout << "Sonntag";
    break;
  case 1: 
    cout << "Montag"
    break;
...
}

Das ist zwar richtig, aber trotzdem kein gutes Beispiel für "switch", weil sowas macht man natürlich mit einem Array (siehe C++ Stunde 3, 4 oder noch später.... ;) )


atrox schrieb am 20.02.2003 um 23:11

eh klar, das es bessere möglichkeiten gibt... deshalb hab ich ja geschrieben "...man kann switch/case verwenden...". ich wollte nur ein anderes beispiel als ich geb 1 rein und es kommt 1 raus, ich geb 2 rein, und es kommt 2 raus... vivo hat natürlich wieder recht, wenn er meint, im kurs würde keiner structs oder pointer verstehen, und dann bleibt wieder zu sagen, daß das zwar ein schönheitsfehler war, aber es sollte auch was anderes gezeigt werden. postet bessere beispiele, wenn ihr welche habt.
die array-geschichte finge ihr übrigens hier: http://www.overclockers.at/showthre...ght=lookuptable

man sollte halt nur drauf schaun, daß wir nicht zu sehr abheben und anfänger nicht mehr folgen können...


moidaschl schrieb am 23.02.2003 um 13:57

Zitat von wodie
erstmal ein großes danke an moidaschl für die fortsetzung :)

2.

Code:
if(x==1)
cout<<"1";
if(x==2)
cout<<"2";
if(x==3)
cout<<"3";

steht in diesem bsp "x" für das ergebnis?
falls ja...dann geh ich davon aus dass die sinnhaftigkeit hierbei eher zweitrangig ist und es hauptsächlich um das verständniss geht; denn wenn "x" für das ergebnis steht, ist es unlustig jede reele zahl einzugeben ;)
(ich hoff ich steh da nicht völlig auf der leitung...falls doch stellts das bitte richtig :))

bei mir schaut das dann so aus (wie gesagt: auf 3 ergebniss beschränkt hehe):
Code:
#include <iostream.h>
#include <conio.h>

int main()
{

	int zahl1, zahl2, ergebnis,x;

cout<<"bitte eine zahl eingeben: ";
cin>>zahl1;

cout<<"bitte eine weitere zahl eingeben: ";
cin>>zahl2;
ergebnis=x=zahl1+zahl2;

if(x==1)
cout<<"1";
if(x==2)
cout<<"2";
if(x==3)
cout<<"3";

getch();
return 0;
}


3.
zudem (ist zwar nur form/layout...):
sagts ma bitte, wie krieg ich da
"cout<<"Das Ergebnis ist kleiner als 100 und lautet: "<<Ergebnis;"
das endl; rein? sprich dass nach der ausgabe des ergebnis das "press any key 2 continue" eine zeile drunter steht?
aaachtung! du kannst kein ergebnis=x=irgendwas+irgendwas schreiben!

X war nur ein anschauliches BSP !


Vivo schrieb am 23.02.2003 um 16:01

Zitat von moidaschl
aaachtung! du kannst kein ergebnis=x=irgendwas+irgendwas schreiben!
achja ? warum nicht ?


atrox schrieb am 23.02.2003 um 16:22

= ist ein operator wie jeder andere, und wird von rechts nach links aufgelöst.

x=y=z=0; // ist völlig legal
und entspricht:
x=(y=(z=0)));

oder

if ( (i=a+b) > 0 ) {
cout << "das positive ergebnis ist: ";
cout << i;
} else {
cout << "ungültig da kleiner <= 0";
}


moidaschl schrieb am 09.03.2003 um 21:03

ja des geht atrox aber ned so
cout<<Ergebnis=x=a+b;
!




overclockers.at v4.thecommunity
© all rights reserved by overclockers.at 2000-2025