| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 
 | #include <stdio.h>
#include <time.h>
#include <math.h>
#include <stdlib.h>
#include <string.h>
 
#define NDOOR 3 
#define NOBJECTS 3
 
enum quizmaster {cabrio=0,cow1,cow2};
 
int myrand (void)
{
	static int first=0;
	if ( first ==0 )
	{
		srand((unsigned)time(NULL));
		first=1;
	};
	return (rand());
};
 
 
int main (void)
{
	enum quizmaster  door[NDOOR];
	enum boolean icase[NDOOR][NDOOR][NDOOR];
	int random=0;
	int i,j,k,l=0,m,t;
	for( t=0;t<=40;t++)
	{
		while ( ( random==0 )|| ( random==27) )
			random=myrand()%( (int)pow(NOBJECTS,NDOOR) ); // with this i get a number between   0 and 27
		// that tells us which case in the 3*3 table is to choose
 
		for ( i=0 ; i<NDOOR ; i++)				// the cases all door=cow or all=cabrio can not happen ( random!=(27||0)
			for ( j=0; j < NDOOR ; j++)
				for ( k=0; k< NDOOR ; k++ )
				{
					l++;
					if ( l==random )
					{
						door[0]=i;
						door[1]=j;
						door[2]=k;
						i=NDOOR;
						j=NDOOR;
						k=NDOOR;
					};
				};
		random=myrand()%2+1;
		for ( i=0;i<NDOOR;i++)		//  in order never to have two cabrio
			for ( j=NDOOR-1;j>=0;j--)
			{
				if ( i!=j)
					if ( (door[i]==0) && (door[j]==0) )
					{
						if ( random==1 )
							door[i]=cow1;
						else door[i]=cow2;
						i=NDOOR;j=0;
					}
 
			}; 
		printf(" %d-----%d    %d     %d\n",random,door[0],door[1],door[2]);
		scanf("%d",&m);
	}
	exit (0);
}; | 
Partager