четверг, 31 июля 2025 г.

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


 

#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;

}




Комментариев нет:

Отправить комментарий