Rafals Temat założony przez niniejszego użytkownika |
Wartości logiczne w C » 2012-11-01 23:28:04 Witam. Dla np sumy logicznej mamy "||". Czy istnieje takie coś dla implikacji itd? Czy tylko 3 podstawowe suma, iloczyn i negacja? |
|
DejaVu |
» 2012-11-01 23:51:35 Jeszcze jest xor i not. |
|
Rafals Temat założony przez niniejszego użytkownika |
» 2012-11-02 00:24:02 Pytałem dlatego, że dostaliśmy zadanie z podstaw programowania. Oto treść: Napisz program wypisujący tablice logiczne poniższych wyrażeń logicznych (jeżeli wyrażenie jest prawdziwe to napisz 1, jeżeli jest fałszywe to wypisz 0): p||q, p&&q, p->q, p<->q, ~(p&&q)||(r->p) Moja twórczość: #include <stdio.h> #include <stdlib.h> #include <stdbool.h>
void wyrazenia( int p, int q, int r ) { int PimpQ, RimpP, ProwQ; if( p == 1 && q == 0 ) PimpQ = 0; else PimpQ = 1; if( p == 1 && q == 0 ) RimpP = 0; else RimpP = 1; if( p == 1 && q == 1 || p == 0 && q == 0 ) ProwQ = 1; else ProwQ = 0; printf( "%i | %i | %i | %i | %i | %i | %i | %i\n", p, q, r, p || q, p && q, PimpQ, ProwQ,( ~( p && q ) ) ||( RimpP ) ); }
int main( int argc, char * argv[] ) { printf( "p | q | r | p||q | p&&q | p->q | p<->q | ~(p&&q)||(r->p)\n" ); wyrazenia( 1, 1, 1 ); wyrazenia( 1, 1, 0 ); wyrazenia( 1, 0, 1 ); wyrazenia( 1, 0, 0 ); wyrazenia( 0, 1, 1 ); wyrazenia( 0, 1, 0 ); wyrazenia( 0, 0, 1 ); wyrazenia( 0, 0, 0 ); return 0; }
Oraz pytanie, czy w przypadku wartości logicznych wbić sobie do głowy pisanie true/false oraz zmienne i funkcja typu bool, czy jedynki i zera a typ integer? Wiem jeszcze, że wartość ma stan false tylko w przypadku "0", a każda inna (ujemne też?) stanu true. W sumie wniosek z ostatniego zdania wyciągnąłbym, że w przypadku wartości logicznych lepiej jest operować na wartościach true/false oraz typach bool. @Savail Zadanie dobrze wykonane? Czy można to jakoś usprawnić/inaczej napisać kod odpowiedzialny za implikację i równoważność? |
|
Savail |
» 2012-11-02 00:52:19 Dokładnie. Typ bool zajmuje mniej miejsca niż int a poza tym program staje się czytelniejszy gdy go używasz bo wiesz, że zawsze masz tylko 2 drogi do wyboru: true albo false. |
|
DejaVu |
» 2012-11-02 00:58:30 Ja bym napisał jeszcze osobne funkcje do implikacji i równoważności :) bool czyImplikuje( bool a, bool b ); bool czyRownowazne( bool a, bool b );
Wówczas komentarze w kodzie są raczej zbędne no i masz narzędzie 'wielokrotnego' użytku :) |
|
Rafals Temat założony przez niniejszego użytkownika |
» 2012-11-02 01:02:06 @DeJavu Masz rację, z narzędziem wielokrotnego użytku. Jak najbardziej korzystam z takich rozwiązań, aczkolwiek póki co poklepie trochę ręcznie, aby wbić sobie podstawy itp., itd. Czyli zadanie dobrze wykonane, ciesze się z mojego sukcesu. Dziękuję wam za pomoc. Zamykam. |
|
« 1 » |