Добавить в корзинуПозвонить
Найти в Дзене

Логическая задача на Си

#include <stdio.h> #include <stdlib.h> /* Логическая задача A - оля приедет B - Ксюша приедет C - Настя приедет D - Маша приедет Если Оля и Ксюша приедет, то Настя не приедет Если Ксюша не приедет, то приедет Настя и Маша Наста приедет операция импликация (если А то В) ~A || B */ int Not(int a) { return a==0?1:0;} int To(int a, int b){ return (Not(a) || b)!=0; } int A(int d) { return (d & (1<<0))!=0; } int B(int d) { return (d & (1<<1))!=0; } int C(int d) { return (d & (1<<2))!=0; } int D(int d) { return (d & (1<<3))!=0; } int Usloviye(int d){ return  (To(A(d)||B(d), Not(C(d)))  && To(Not(B(d)), C(d)&&D(d))  && C(d)) != 0; } int main(){ int d; for(d=0;d<16;d++){ if(Usloviye(d)){ if(A(d)) puts("A"); if(B(d)) puts("B"); if(C(d)) puts("C"); if(D(d)) puts("D"); if(1)    puts("---"); } } return 0; }

Логическая задача на Си

#include <stdio.h>

#include <stdlib.h>

/*

Логическая задача

A - оля приедет

B - Ксюша приедет

C - Настя приедет

D - Маша приедет

Если Оля и Ксюша приедет, то Настя не приедет

Если Ксюша не приедет, то приедет Настя и Маша

Наста приедет

операция импликация (если А то В)

~A || B

*/

int Not(int a) { return a==0?1:0;}

int To(int a, int b){ return (Not(a) || b)!=0; }

int A(int d) { return (d & (1<<0))!=0; }

int B(int d) { return (d & (1<<1))!=0; }

int C(int d) { return (d & (1<<2))!=0; }

int D(int d) { return (d & (1<<3))!=0; }

int Usloviye(int d){

return  (To(A(d)||B(d), Not(C(d)))  &&

To(Not(B(d)), C(d)&&D(d))  &&

C(d)) != 0;

}

int main(){

int d;

for(d=0;d<16;d++){

if(Usloviye(d)){

if(A(d)) puts("A");

if(B(d)) puts("B");

if(C(d)) puts("C");

if(D(d)) puts("D");

if(1)    puts("---");

}

}

return 0;

}