domingo, 8 de dezembro de 2013

Intersecção - União e Diferença entre dois Vetores

Conjunto interseção são os elementos 
comuns entre conjuntos relacionados.
Dados dois conjuntos A e B,
chama-se conjunto diferença
ou diferença entre A e B
o conjunto formado pelos elementos de A
que não pertencem a B.
Conjunto união são todos os elementos
dos conjuntos relacionados.

Acompanhe mais no link abaixo:

http://www.brasilescola.com/matematica/operacoes-com-conjuntos.htm

Partindo destas lógicas, criei este programa,
que é o terceiro de uma série sobre o assunto.
No primeiro mostrei apenas união de vetores.
No segundo programa, ele já vem mais evoluído,
já consegue mostrar o conjunto união corretamente,
a intersecção, dos conjuntos, se não há elementos 
iguais nos dois conjuntos ele tem o poder de informar
que são vetores distintos.
E neste último, tomei o cuidado de envolver,
tudo que mostrei nos outros dois programas anteriores.

Veja algumas imagens do programa em execução:












Veja abaixo o código do programa:



#include <stdio.h>
#include <conio.h>
#define tam 5
void got_color ( int tam_lin_ini, int tam_lin_fim, int tam_ini_col,
         int tam_fim_col, int a, int b ) {
     int i, c;
     if ( a >= 1 && a <= 16 ) {
         textcolor ( a );
     }
     if ( b >= 1 && b <= 16 ) {
         textbackground ( b );
     }
     for ( i = tam_lin_ini; i < tam_lin_fim; i++ ) {
         for ( c = tam_ini_col; c < tam_fim_col; c++ ) {
              gotoxy ( c, i );
              printf ( " " );
         }
     }
}
int main ( void ) { // Interseccao e difereca entre vetores
     int V = 10;
     system ( "title INTERSECÇÃO UNIÃO E DIFERENÇA ENTRE VETORES" );
     system ( "cls" );
     int a = 0, i, j = 0, k = 0, h = 0, aux = 0, auxin = 0, vezes, temp;
     int Vetor [ tam ], Vet_or [ tam ], Vet [ tam ], Ve_t [ tam ],
              Vet_o_r [ tam ];
     for ( i = 0; i < tam; i++ ) {
         got_color ( 2, 25, 3, 79, 2, 15 );
         textcolor ( LIGHTRED );
         gotoxy ( 19, 3 );
         printf ( "INTERSECÇÃO UNIÃO E DIFERENÇA ENTRE VETORES" );
         textcolor ( LIGHTBLUE );
         gotoxy ( 32, 5 );
         printf ( "Preenchendo o vetor A" );
         textcolor ( LIGHTBLUE );
         gotoxy ( 19, 7 );
         printf ( "Informe o " );
         textcolor ( LIGHTRED );
         printf ( "%do", i + 1 );
         textcolor ( LIGHTBLUE );
         printf ( " número para o vetor A " );
         textcolor ( LIGHTRED );
         scanf ( "%d", &Vetor [ i ] );
         fflush ( stdin );
     }
     for ( i = 0; i < tam; i++ ) {
         clrscr ( );
         system ( "Color C6" );
         got_color ( 2, 25, 3, 79, 2, 15 );
         textcolor ( LIGHTRED );
         gotoxy ( 19, 3 );
         printf ( "INTERSECÇÃO UNIÃO E DIFERENÇA ENTRE VETORES" );
         textcolor ( LIGHTBLUE );
         gotoxy ( 32, 5 );
         printf ( "Preenchendo o vetor B" );
         textcolor ( LIGHTBLUE );
         gotoxy ( 19, 7 );
         printf ( "Informe o " );
         textcolor ( LIGHTRED );
         printf ( "%do", i + 1 );
         textcolor ( LIGHTBLUE );
         printf ( " número para o vetor B " );
         textcolor ( LIGHTRED );
         scanf ( "%d", &Vet_or [ i ] );
         fflush ( stdin );
     }
     clrscr ( );
     system ( "Color B5" );
     got_color ( 2, 25, 3, 79, 2, 15 );
     textcolor ( LIGHTRED );
     gotoxy ( 19, 3 );
     printf ( "INTERSECÇÃO UNIÃO E DIFERENÇA ENTRE VETORES" );
     textcolor ( LIGHTBLUE );
     gotoxy ( 25, 5 );
     printf ( "Abaixo os dois vetores preenchidos" );
     textcolor ( LIGHTBLUE );
     gotoxy ( 29, 7 );
     printf ( "Vetor A " );
     textcolor ( LIGHTRED );
     gotoxy ( 29, 9 );
     for ( i = 0; i < tam; i++ ) {
         printf ( " %d ", Vetor [ i ] );
     }
     getche ( );
     textcolor ( LIGHTBLUE );
     gotoxy ( 29, 11 );
     printf ( "Vetor B " );
     textcolor ( LIGHTRED );
     gotoxy ( 29, 13 );
     for ( j = 0; j < tam; j++ ) {
         printf ( " %d ", Vet_or [ j ] );
         Vet_o_r [ a ] = Vet_or [ j ];
         a++;
     }
     getche ( );
     i = 0;
     aux = 0;
     auxin = 0;
     for ( i = 0; i < tam; i++ ) {
         for ( j = 0; j < tam; j++ ) {
              if ( Vetor [ i ] != Vet_or [ j ] ) {
                   auxin++;
              }
         }
         if ( auxin == tam ) {
              Ve_t [ aux ] = Vetor [ i ];
         } else {
              Ve_t [ aux ] = 0;
         }
         aux++;
         auxin = 0;
     }
     textcolor ( LIGHTBLUE );
     gotoxy ( 20, 15 );
     printf ( "Abaixo, a diferença entre os dois vetores " );
     textcolor ( LIGHTRED );
     gotoxy ( 29, 17 );
     for ( i = 0; i < tam; i++ ) {
         if ( Ve_t [ i ] != 0 ) {
              printf ( " %i ", Ve_t [ i ] );
         }
     }
     getche ( );
     for ( i = 0; i < tam; i++ ) {
         Vet [ i ] = Vetor [ i ];
         Vet [ i + 5 ] = Vet_or [ i ];
     }
     for ( i = 0; i <= V; i++ ) {
         vezes = 1;
         j = i + 1;
         while ( j <= V )
              if ( Vet [ j ] != Vet [ i ] )
                   j++;
              else {
                   vezes++;
                   V--;
                   Vet [ j ] = Vet [ V + 1 ];
              }
     }
     for ( i = 0; i <= V; i++ ) {
         temp = i;
         aux = Vet [ i ];
         for ( j = ( i + 1 ); j <= V; j++ )
              if ( Vet [ j ] <= aux ) {
                   temp = j;
                   aux = Vet [ temp ];
                   Vet [ temp ] = Vet [ i ];
                   Vet [ i ] = aux;
              }
     }
     textcolor ( LIGHTBLUE );
     gotoxy ( 20, 19 );
     printf ( "Abaixo, a união dos dois vetores já ordenados" );
     textcolor ( LIGHTRED );
     gotoxy ( 16, 21 );
     for ( i = 0; i <= V; i++ )
         printf ( " %d ", Vet [ i ] );
     textcolor ( BLACK );
     gotoxy ( 31, 23 );
     printf ( "PRESSIONE QUALQUER TECLA " );
     getche ( );
     clrscr ( );
     system ( "Color 10" );
     got_color ( 2, 25, 3, 79, 2, 15 );
     textcolor ( LIGHTRED );
     gotoxy ( 19, 3 );
     printf ( "INTERSECÇÃO UNIÃO E DIFERENÇA ENTRE VETORES" );
     textcolor ( LIGHTBLUE );
     gotoxy ( 25, 5 );
     printf ( "Abaixo os dois vetores preenchidos" );
     textcolor ( LIGHTBLUE );
     gotoxy ( 29, 7 );
     printf ( "Vetor A " );
     textcolor ( LIGHTRED );
     gotoxy ( 29, 9 );
     for ( i = 0; i < tam; i++ ) {
         printf ( " %d ", Vetor [ i ] );
     }
     getche ( );
     textcolor ( LIGHTBLUE );
     gotoxy ( 29, 11 );
     printf ( "Vetor B " );
     textcolor ( LIGHTRED );
     gotoxy ( 29, 13 );
     for ( a = 0; a < tam; a++ ) {
         printf ( " %d ", Vet_o_r [ a ] );
     }
     getche ( );
     for ( i = 0; i < tam; i++ ) {
         for ( j = 0; j < tam; j++ ) {
              if ( Vetor [ i ] == Vet_o_r [ j ] ) {
                   Vet [ h ] = Vet_o_r [ j ];
                   h++;
              }
         }
     }
     textcolor ( LIGHTBLUE );
     gotoxy ( 23, 15 );
     printf ( "Números comuns entre os dois Vetores " );
     textcolor ( LIGHTRED );
     gotoxy ( 29, 17 );
     k = h;
     if ( k == 0 ) {
         textcolor ( LIGHTGREEN );
         printf ( " Vetores distintos" );
     }
     for ( h = 0; h < k; h++ )
         printf ( " %i ", Vet [ h ] );
     textcolor ( LIGHTBLUE );
     gotoxy ( 17, 19 );
     printf ( "Por: " );
     textcolor ( LIGHTMAGENTA );
     printf ( "Samuel Lima" );
     textcolor ( BLACK );
     gotoxy ( 17, 20 );
     printf ( "sa_sp10@hotmail.com" );
     Sleep ( 1800 );
     textcolor ( LIGHTRED );
     gotoxy ( 36, 23 );
     printf ( "MUITO OBRIGADO" );
     getche ( );
     exit ( 0 );
}


Nenhum comentário:

Postar um comentário

Observação: somente um membro deste blog pode postar um comentário.