WCM Forum

WCM Forum (http://www.wcm.at/forum/index.php)
-   Programmierung (http://www.wcm.at/forum/forumdisplay.php?f=17)
-   -   Frage Logik C-Code (http://www.wcm.at/forum/showthread.php?t=178620)

coolbininet 18.11.2005 14:11

Frage Logik C-Code
 
Hallo Leute

Schaut Euch mal folgenden C-Code an:

Code:

float a,b;
a=1;
b=1;
printf("***********************************************\n* Willkommen zum Quadrieren komplexer Zahlen! *\n***********************************************\n\n");
        while(a!=0 || b!=0) //Abbruchbedingung: für a UND b wird 0 eingegeben. Funktioniert aber mit ODER...
        {       
                printf("Realteil: ");
                scanf("%f",&a);
                printf("Imaginaer: ");
                scanf("%f",&b);
                printf("(%.3f + i * %.3f)^2 = %.3f + i * %.3f\n\n",a,b,real(a,b),imag(a,b)); werden aus den Funktionen aufgerufen
        }

Wichtig ist der Teil, bei dem da die while (a!=0 || b!=0). Was ich dabei nicht verstehe ist, warum ODER ich will doch dass es mit wenn a UND b ungleich 0 ist die Schleife wiederholen soll, es geht aber mit dem logischen und (&&) in C nicht, weshalb?

Grüsse Coolbininet

jak 18.11.2005 14:26

Die Abbruchbedingung ist, daß ((a == 0) && (b==0)), d.h. man könnte schreiben
while(!((a == 0) && (b==0))){
...
}
das ist aber das selbe wie
(a!=0) || (b!=0).
Beim verneinen von Aussagen wird alles umgekehrt, aus && wird also ||.
Tabelle
Code:

|A|B|(a == 0) && (b==0)|(a!=0) || (b!=0)
|1|0|(0)&&(1) = 0      |(1)||(0) = 1
|1|1|(0)&&(0) = 0      |(1)||(1) = 1
|0|0|(1)&&(1) = 1      |(0)||(0) = 0
|0|1|(1)&&(0) = 0      |(0)||(1) = 1

Wie du siehst ist also !((a == 0) && (b==0)) das selbe wie ((a!=0) || (b!=0)).

jak

pong 18.11.2005 15:28

Uiui da fehlen Grundlagen....

pong

hewlett 18.11.2005 18:37

Zitat:

Original geschrieben von pong
Uiui da fehlen Grundlagen....

pong

*g*


Alle Zeitangaben in WEZ +2. Es ist jetzt 12:52 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
© 2009 FSL Verlag