Добавил:
Studfiles2
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:СиАОД
.CPP#include<conio.h>
#include<stdlib.h>
#include<stdio.h>
#include<dos.h>
#include <time.h>
#define DEFAULT_LENGTH 10
typedef struct lst{
int data;
lst *next;
lst *prev;
}list;
// ARRRAY OF ELEMENTS
int *arrayelGenerate()
{
int *result;
int i, j = 0;
result = (int*)malloc(sizeof(int)*DEFAULT_LENGTH);
for( i = 0; i < DEFAULT_LENGTH; i++)
result[i] = -1;
for( i = 0; i < DEFAULT_LENGTH; i++ )
{
if( rand()%2)
{
result[j] = i;
j++;
}
}
return result;
}
void arrayelView( int *a )
{
int i = 0;
while( i < DEFAULT_LENGTH && a[i] != -1)
{
printf( "%d", a[i] );
i++;
}
}
int arrayelSearch( int *pArray, int iItem )
{
for( int i = 0; i < 10; i++ )
if( pArray[i] == iItem )
return 1;
return 0;
}
int *arrayelAND( int *A, int *B )
{
int *result;
int i,j = 0;
result = (int*)malloc(sizeof(int)*DEFAULT_LENGTH);
for( i = 0; i < DEFAULT_LENGTH; i++)
result[i] = NULL;
for( i = 0; i < DEFAULT_LENGTH; i++)
if( arrayelSearch( A , i) && arrayelSearch( B, i) )
{
result[j] = i;
j++;
}
return result;
}
int *arrayelOR( int *A, int *B )
{
int *result;
int i,j = 0;
result = (int*)malloc(sizeof(int)*DEFAULT_LENGTH);
for( i = 0; i < DEFAULT_LENGTH; i++)
result[i] = -1;
for( i = 0; i < DEFAULT_LENGTH; i++)
if( arrayelSearch( A , i) || arrayelSearch( B, i) )
{
result[j] = i;
j++;
}
return result;
}
int *arrayelModern( int *a, int *b, int *c, int *d)
{
int *oper1, *oper2, *result;
oper1 = arrayelAND( a, b);
oper2 = arrayelOR( oper1, c);
result = arrayelOR( oper2, d);
free(a);
free(b);
free(c);
free(d);
free(oper1);
free( oper2 );
return result;
}
//LIST OF ELEMENTS
void AddList( list **st, int data )
{
if( *st )
{
list *l = NULL, *temp = NULL;
temp = new list;
temp->data = data;
temp->next = NULL;
l = *st;
while( l->next )
l = l->next;
temp->prev = l;
l->next = temp;
}
else
{
list *l = NULL;
l = new list;
l->data = data;
l->next = NULL;
l->prev = NULL;
*st = l;
}
}
list *ListGenerate()
{
list *New = NULL;
int j = 0;
for( int i = 0; i < DEFAULT_LENGTH; i++ )
if( rand()%2 )
{
AddList( &New, i);
j++;
}
return New;
}
int SearchListEl( list *A, int elem )
{
do
{
if( A->data == elem )
return 1;
A = A->next;
}
while( A );
return 0;
}
list *ListAnd( list *A, list *B )
{
list *result = NULL;
int i;
for( i = 0; i < DEFAULT_LENGTH; i++ )
if( SearchListEl( A, i) && SearchListEl( B, i) )
AddList( &result, i );
return result;
}
list *ListOr( list *A, list *B )
{
list *result = NULL;
int i;
for( i = 0; i < DEFAULT_LENGTH; i++ )
if( SearchListEl( A, i) || SearchListEl( B, i) )
AddList( &result, i );
return result;
}
void ListDel( list **str )
{
list *l = NULL, *temp = NULL;
l = *str;
while( l )
{
temp = l;
l = l->next;
delete( temp );
}
str = NULL;
}
void ListView( list *Begin )
{
while( Begin )
{
printf( "%d", Begin->data );
Begin = Begin->next;
}
}
list *ListModern( list **A, list **B, list **C, list **D )
{
list *result, *oper1, *oper2;
oper1 = ListAnd( *A, *B);
oper2 = ListOr( oper1, *C);
result = ListOr( oper2, *D);
ListDel( A );
ListDel( B );
ListDel( C );
ListDel( D );
ListDel( &oper1 );
ListDel( &oper2 );
return result;
}
// BIT ARRAY
int *baGenerate()
{
int *result;
result = (int*)malloc(sizeof(int)*DEFAULT_LENGTH);
for( int i = 0; i < DEFAULT_LENGTH; i++ )
result[i] = random(2);
return result;
}
void baView( int *Ba)
{
for( int i = 0; i < DEFAULT_LENGTH; i++ )
if( Ba[i] == 1 )
printf( "%d", i );
}
int *baModern( int *A, int *B, int *C, int *D )
{
int *result = 0;
result = (int*)malloc(sizeof(int)*DEFAULT_LENGTH);
for( int i = 0; i < DEFAULT_LENGTH; i++ )
result[i] = 0;
for( i = 0; i < DEFAULT_LENGTH; i++)
result[i] = ( A[i] && B[i] ) || C[i] || D[i] ;
free( A );
free( B );
free( C );
free( D );
return result;
}
//BINERY WORD
long bwordGenerate()
{
long a = 0;
long lb = 0;
for( int i = 0; i < DEFAULT_LENGTH ; i++ )
{
lb = ( rand()%2 );
a<<= 1;
a|= lb;
}
return a;
}
void bwordView( long a )
{
long lb = 1;
for( int i = 0; i < 10; i++ )
{
if( a & lb )
printf( "%d", i );
lb <<= 1;
}
}
long bwordModern( long a, long b, long c, long d )
{
return (a&b)|c|d ;
}
void Menu()
{
clrscr();
printf("\n1. The array of elements\n\n");
printf("2. The list of elements\n\n");
printf("3. The array of bit\n\n");
printf("4. Binery words\n\n");
printf("5. Exit ! ! !");
}
void main ()
{
list *ListA = NULL, *ListB = NULL, *ListC = NULL, *ListD = NULL, *ListResult = NULL;
char Choise;
int *baA, *baB, *baC, *baD, *baResult;
int *arrayelA, *arrayelB, *arrayelC, *arrayelD, *arrayelResult;
long bwordA, bwordB, bwordC, bwordD, bwordResult;
randomize();
clrscr();
do
{
Menu();
Choise = getch();
switch( Choise )
{
case '1':
arrayelA = arrayelGenerate();
arrayelB = arrayelGenerate();
arrayelC = arrayelGenerate();
arrayelD = arrayelGenerate();
printf("\n\nA: ");
arrayelView( arrayelA );
printf("\nB: ");
arrayelView( arrayelB );
printf("\nC: ");
arrayelView( arrayelC );
printf("\nD: ");
arrayelView( arrayelD );
printf("\n\nRESULT: ");
arrayelResult = arrayelModern( arrayelA, arrayelB, arrayelC, arrayelD );
arrayelView( arrayelResult );
free( arrayelResult );
getch();
break;
case '2':
ListA = ListGenerate();
ListB = ListGenerate();
ListC = ListGenerate();
ListD = ListGenerate();
printf("\n\nA: ");
ListView( ListA );
printf("\nB: ");
ListView( ListB );
printf("\nC: ");
ListView( ListC );
printf("\nD: ");
ListView( ListD );
printf( "\n\nResult is: " );
ListResult = ListModern( &ListA, &ListB, &ListC, &ListD);
ListView( ListResult );
ListDel( &ListResult );
getch();
break;
case '3':
baA = baGenerate();
baB = baGenerate();
baC = baGenerate();
baD = baGenerate();
printf("\n\nA: ");
baView( baA );
printf("\nB: ");
baView( baB );
printf("\nC: ");
baView( baC );
printf("\nD: ");
baView( baD );
printf("\n\nResult is: ");
baResult = baModern( baA, baB, baC, baD );
baView( baResult );
free( baResult );
getch();
break;
case '4':
bwordA = bwordGenerate();
bwordB = bwordGenerate();
bwordC = bwordGenerate();
bwordD = bwordGenerate();
printf("\n\nA: ");
bwordView( bwordA );
printf("\nB: ");
bwordView( bwordB );
printf("\nC: ");
bwordView( bwordC );
printf("\nD: ");
bwordView( bwordD );
printf( "\n\nResult is: " );
bwordView( bwordModern( bwordA, bwordB, bwordC, bwordD) );
getch();
break;
}
}while( Choise != '5' );
printf( "\n\n\t\t\t \1 See you again! \1" );
getch();
}
Соседние файлы в предмете Программирование