Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (WinAPI, Konsole) » Erstes if-else Programm

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 ] > 3 <
020
26.10.2016, 23:34 Uhr
Hans
Library Walker
(Operator)


Hi,

sowas hier

C++:
if (zahl1 < zahl2, zahl3, zahl4, zahl5)

funktioniert nicht. Das müsste der Compiler eigentlich anmeckern, bzw. eine Warnung dazu ausgeben.
Da musst Du so ähnlich wie oben schon alle Zahlen miteinander vergleichen und dabei entscheiden welche die gerade grössere oder kleinere ist.


Zitat:
Nun ja, das Problem hierbei ist das ich eben nicht jede Zahl miteinander vergleichen, sondern nur die höchste bzw. kleinste Zahl merken, und diese mit den "neuen" Zahlen abgleichen und anschließend ausgeben soll.


Um die grösste bzw. kleinste Zahl zu finden, musst Du sie aber alle miteinander vergleichen. - Was machst Du denn im Kopf, wenn Du einen Zettel 5 Zahlen drauf vor Dir liegen hast, und die selbe Aufgabe lösen sollst? Nehmen wir an, der folgende Abschnitt sei der Zettel:

Code:
789
17
456
2
99

Was machst Du jetzt im Kopf um die Aufgabe zu lösen?
Antwort: Die Zahlen alle miteinander vergleichen, oder etwa nicht?


Zitat:
Wie ich aber mit den vorhandenen Mitteln das jeweilige minimum bzw. maximum "speichern" soll ist mir unbegreiflich.

Wenn in diesem Zusammenhang von "speichern" die Rede ist, dann ist damit gemeint, dass irgendwelche Daten im Arbeitsspeicher der Computers gehalten werden, so dass das Programm damit arbeiten kann. Dateien auf Datenträgern wie Festplatten, etc. sind eine andere Sache und haben damit nichts zu tun. Hier werden Daten in Variablen gespeichert, also irgendwo im Arbeitsspeicher des Computers abgelegt. Mit Hilfe der Namen, die man den Variablen gibt, erhalten diese Speicherplätze eine Bedeutung für den Programmierer (m/w) , so das er oder sie damit arbeiten kann; bzw. das Programm damit arbeiten lassen kann.

Hans
--
Man muss nicht alles wissen, aber man sollte wissen, wo es steht. Zum Beispiel hier: Nachdenkseiten oder Infoportal Globalisierung.

Dieser Post wurde am 26.10.2016 um 23:40 Uhr von Hans editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
021
27.10.2016, 00:33 Uhr
CNoob



Danke für die Erläuterung!
Vielleicht verstehe ich die Aufgabe einfach falsch, ich zitiere mal:

"Schreiben Sie ein C++ Hauptprogramm, welches nacheinander fünf ganze
Zahlen (int) einliest und zum Abschluss die kleinste und die größte der
eingegebenen Zahlen wieder ausgibt. Ferner soll ausgegeben werden, an
wievielter Stelle der eingegeben Zahlen diese beiden Zahlen eingegeben wurden.
Ihr Programm soll dabei so vorgehen, dass es die Eingabe-Zahlen nacheinander
einliest und sich dabei immer die kleinste und die größte der bisher
eingegebenen Zahlen merkt. Die gerade neu eingegebene Zahl soll mit den
beiden gespeicherten „Extremwerten“ verglichen werden.
Auf diese Art vermeidet Ihr Programm, am Ende alle fünf eingegebenen Zahlen
(jede mit jeder) miteinander vergleichen zu müssen."

Wenn also nicht jede Zahl einzeln miteinander vergleichen werden soll, wie dann?

Dieser Post wurde am 27.10.2016 um 00:33 Uhr von CNoob editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
022
27.10.2016, 07:51 Uhr
Tommix




Zitat von Hans:

... sowas hier

C++:
if (zahl1 < zahl2, zahl3, zahl4, zahl5)

funktioniert nicht. Das müsste der Compiler eigentlich anmeckern, bzw. eine Warnung dazu ausgeben.



'Morgen,
nein, das ist syntaktisch völlig korrekt:
https://de.wikibooks.org/wiki/C-Programmierung:_Ausdr%C3%BCcke_und_Operatoren#Komma-Operator_.2C

Gruß, Tommix
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
023
27.10.2016, 09:22 Uhr
ao

(Operator)


CNoob, eigentlich ist es ganz einfach und schon in der Aufgabe genau beschrieben:

1. Zahl einlesen.
minimum = zahl1
maximum = zahl1
(wenn es erst eine Zahl gibt, ist sie gleichzeitig minimum und maximum).

2. Zahl einlesen.
Wenn zahl2 kleiner als das bisherige Minimum ist, was muss dann passieren?
Wenn zahl 2 größer als das bisherige Maximum ist, was muss dann passieren?

3. Zahl einlesen

und so weiter.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
024
27.10.2016, 17:25 Uhr
Hans
Library Walker
(Operator)


@Tommix,

Zitat von Hans:

... sowas hier

C++:
if (zahl1 < zahl2, zahl3, zahl4, zahl5)

funktioniert nicht. Das müsste der Compiler eigentlich anmeckern, bzw. eine Warnung dazu ausgeben.



Zitat von Tommix:

'Morgen,
nein, das ist syntaktisch völlig korrekt:
https://de.wikibooks.org/wiki/C-Programmierung:_Ausdr%C3%BCcke_und_Operatoren#Komma-Operator_.2C

Gruß, Tommix

ja stimmt, es ist syntaktisch korrekt, tut aber nicht das, was der Fragesteller sich davon verspricht bzw. erhofft. Insofern funktioniert es nicht, nämlich nicht so, wie es soll.

Gemäss der von Dir verlinkten Erklärung wid

C++:
if (zahl1 < zahl2, zahl3, zahl4, zahl5)

zu

C++:
if (zahl1 < zahl5)

Und die Compiler geben auch entsprechende Warnungen aus:

Zitat von OpenWatcom:

C:\Daten\Watcom\Forum>wcl386 -q -d2 strangeif-b.cpp
strangeif-b.cpp(37): Warning! W628: col(15) expression is not meaningful
strangeif-b.cpp(37): Warning! W628: col(22) expression is not meaningful
strangeif-b.cpp(37): Warning! W628: col(29) expression is not meaningful


Und

Zitat von g++:

C:\Daten\Watcom\Forum>g++ -Wall -S strangeif.cpp
strangeif.cpp: In function 'int main()':
strangeif.cpp:36:15: warning: left operand of comma operator has no effect [-Wun
used-value]
if (zahl1 < zahl2, zahl3, zahl4, zahl5)
^
strangeif.cpp:36:31: warning: right operand of comma operator has no effect [-Wu
nused-value]
if (zahl1 < zahl2, zahl3, zahl4, zahl5)
^
strangeif.cpp:36:38: warning: right operand of comma operator has no effect [-Wu
nused-value]
if (zahl1 < zahl2, zahl3, zahl4, zahl5)
^

C:\Daten\Watcom\Forum>


Wäre noch anzumerken, dass die angegebenen Zeilennummern hier nicht stimmen. Ich hab in dem Quelltext noch einen Kommentar voran stehen, den ich aber nicht hier ins Forum kopiert habe.
--
Man muss nicht alles wissen, aber man sollte wissen, wo es steht. Zum Beispiel hier: Nachdenkseiten oder Infoportal Globalisierung.

Dieser Post wurde am 27.10.2016 um 17:30 Uhr von Hans editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
025
02.11.2016, 23:02 Uhr
~somebody
Gast



Zitat:

Gemäss der von Dir verlinkten Erklärung wid

C++:
if (zahl1 < zahl2, zahl3, zahl4, zahl5)

zu

C++:
if (zahl1 < zahl5)



Nein.

Less than hat eine höhere Priorität als der Komma-Operator.

if(2 < 1, 1) evaluiert zu if(false, true) wiederum zu if(true) und wird somit ausgeführt.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: [ 1 ] [ 2 ] > 3 <     [ C / C++ (WinAPI, Konsole) ]  


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: