União, Intersecção e Diferença de dois vetores em C/C++

#include <stdio.h>
#include <stdlib.h>


  //Autor: Mathias Santos Assis

 main(){
  
   /*O vetor A e B pode armazenar até 10 elementos*/
  
   /*Considerando a hipótese de que todos os elementos
   do vetor A seja diferente do vetor B, o vetor
   união é declarado com 20 posições*/

  
   /*Considerando a hipótese de que todos os elementos
   do vetor A seja iguais do vetor B, o vetor
   interseccao é declarado com 10 posições*/

  
   /*Considerando a hipótese de que todos os elementos
   do vetor A seja diferentes do vetor B, o vetor
   Diferenca é declarado com 10 posições*/

  
   int A[10],B[10], Uniao[20], interseccao[10], Diferenca[10];
   int op, aux, preenchimento_A, preenchimento_B;
  
     preenchimento_A = preenchimento_B = 0;
  
    // Menu de opção
    printf("<1> Inserir Novo vetor A\n");
    printf("<2> Inserir Novo vetor B\n");
    printf("<3> Uniao de A e B\n");
    printf("<4> Interseccao de A e B\n");
    printf("<5> Diferenca de A e B\n");
    printf("<6> Sair\n");

 
  /* Laço infinito (será repetido o bloco
      permanentemente até que o comando
      break seja utilizado)*/
 
  for (int repeat=0; repeat<1; --repeat){ 
 
    op = 0; // Garante que ocorra o laço abaixo
    while ((op<1) || (op>6)){
      printf("\nA opcao deve esta entre 1 e 6.\n");
      printf("Digite opcao: ");
      scanf("%d",&op);
    } printf("\n"); // Quebra de linha
   
   

    
     int Dif,Ok; // Declarando novas variáveis
     


     /*Tanto o vetor A como o B, que é preenchido
       escolhendo as repectivas opções 1 e 2,
       não é permitido a inserção de valores
       repetidos dentro do vetor. Ex.: A[0]=4;
       Nenhuma outra posição dentro do vetor
       alocará o número
4.*/


     if (op == 1){
       for (int i=0; i<10; ++i){
            
         printf("A[%d]: ",i);
         scanf("%d",&A[i]);
        
        
         Ok=0; // Inicializando a variável
         if (i>0){ while (Ok != 1){       
         Dif=0;
                
           for (int j=0; j<i; ++j)
               if (A[i]!=A[j]) Dif++;
          
           /* Caso o valor digitado ainda não
            persista no vetor, este será alocado.*/
   
           if (Dif==i) Ok=1; // Quando Ok é igual a 1, o laço while é finalizado
              else{
               printf("A[%d]: ",i);
               scanf("%d",&A[i]);
              }
         }}
       }
      
       printf("\n");
         // Ordenando o vetor A em ordem crescente
         for (int i=0; i<10; ++i){
           for (int j=0; j<10; ++j){
             if (A[j]>A[i]){
               aux=A[j];
               A[j]=A[i];
               A[i]=aux;
             }
           }
         }
        
         // Exibindo o vetor A para o usuário
         for (int i=0; i<10; ++i)
          printf("%d\t",A[i]);
        
         /* A variável abaixo ao assumir valor 1,
         indica que o vetor A já foi preenchido */

         preenchimento_A = 1;
     }
    



     if (op == 2){
       for (int i=0; i<10; ++i){
            
         printf("B[%d]: ",i);
         scanf("%d",&B[i]);
        
        
         Ok=0;
         if (i>0){ while (Ok != 1){       
         Dif=0;
                
           for (int j=0; j<i; ++j)
               if (B[i]!=B[j]) Dif++;
              
           if (Dif==i) Ok=1;
              else{
               printf("B[%d]: ",i);
               scanf("%d",&B[i]);
              }
         }}
       }
      
       printf("\n");
         // Ordenando o vetor B em ordem crescente
         for (int i=0; i<10; ++i){
           for (int j=0; j<10; ++j){
             if (B[j]>B[i]){
               aux=B[j];
               B[j]=B[i];
               B[i]=aux;
             }
           }
         }
        
         // Exibindo o vetor B para o usuário
        for (int i=0; i<10; ++i)
          printf("%d\t",B[i]);
        
         /* A variável abaixo ao assumir valor 1,
         indica que o vetor B já foi preenchido */

         preenchimento_B = 1;
     }
    
    
    
    
    
     /* Quando a opção 3 é escolhida será
     gerado o vetor união do vetor A e B,
     que é formado por todos os elementos do
     vetor A ou B, excluindo as repetições*/


     int cont=10;  int cont_Igualdade;
     if (op == 3){
       /* Se os vetores A e B estiverem preenchido
       os comandos abaixo seram realizados*/

       if ((preenchimento_A ==1)&&(preenchimento_B ==1)){

         /* Como os elementos do vetor A são todos
         diferentes entre si, as 10 primeiras posições
         do vetor União seram ocupadas respectivamente
         pelas 10 primeiras posições do vetor A. */


         for (int i=0; i<10; ++i)
           Uniao[i]=A[i];
        
         for (int i=0; i<10; ++i){
             cont_Igualdade=0;
            
           for (int j=0; j<10; ++j)
             if (B[i] == A[j]) cont_Igualdade++;
          
             if (cont_Igualdade==0) Uniao[cont++]=B[i];
         }
        
         // Ordenando o vetor Uniao em ordem crescente
         for (int i=0; i<cont; ++i){
           for (int j=0; j<cont; ++j){
             if (Uniao[j]>Uniao[i]){
               aux=Uniao[j];
               Uniao[j]=Uniao[i];
               Uniao[i]=aux;
             }
           }
         }
        
         // Exibindo o vetor Uniao para o usuário
         for (int i=0; i<cont; ++i)
           printf("%d\t",Uniao[i]); 
          
       } else printf("Operacao invalida"); 
     }
    
    
    
    
     /* Quando a opção 4 é selecionada será
     gerado o vetor da interseccao do vetor A e B,
     que são os elementos comuns a ambos*/

     if (op == 4){
       if ((preenchimento_A ==1)&&(preenchimento_B ==1)){
         for (int i=0; i<10; ++i){
           for (int j=0; j<10; ++j){
             if (A[i] == B[j])
               // Exibindo o vetor Interseccao para o usuário
               printf("%d\t",A[i]);
           }
         }
       } else printf("Operacao invalida");
     }
    
    
    
    
    

     /*Quando a opção 5 é escolhida será
     gerado o vetor da diferença entre
     o vetor A e B.
     O vetor formado é constituido pelos elementos
     de A que não pertencem a B*/


     if (op == 5){
       if ((preenchimento_A ==1)&&(preenchimento_B ==1)){
                          
         for (int i=0; i<10; ++i){
             cont_Igualdade=0;
            
           for (int j=0; j<10; ++j)
             if (A[i] == B[j]) cont_Igualdade++;
          
             // Exibindo o vetor Diferenca para o usuário
             if (cont_Igualdade==0) printf("%d\t",A[i]);
         }
       } else printf("Operacao invalida");
     }
    
    
    
    
    
     /* Ao escolher a opção 6 o programa será
     encerrado, pois o laço for irá ser quebrado*/

     if (op == 6)
       break;    
    
 
    
     /* Ao fim de cada opção as duas
     linhas abaixo será executadas*/

     printf("\n");
       system("pause");
    
  }
    
 }




Palavras-Chaves: vetor_A, vetor_B, união, intersecção, Difirença, Ordem Crescente, C/C++.


Artigos relacionados em C/C++:






Feito no Dev C++ 4.9.9.2 | Executável

Barra de Carregamento em Java

import java.awt.Cursor;
import java.awt.FlowLayout;
import java.awt.Font;
import java.awt.Rectangle;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JProgressBar;

 /*Este programa simula o carregamento de uma página*/
 // Autor: João Matheus Santos Assis

public class Carregamento extends JFrame{
   
    private JProgressBar Barra_de_Carregamento = new JProgressBar();
    private JButton Iniciar = new JButton("Inicializar");
   
    // Fonte a ser utilizada no JLabel
    private Font Fonte = new Font("Lucida Console", Font.PLAIN, 18);
    private JLabel Status = new JLabel();
   
    public Carregamento(){
        super("Tela de carregamento...");
           
        // Layout do JFrame
            setLayout(new FlowLayout());
       
        // Propriedades da janela
        this.setSize(300,120);
        // Localização do programa na tela
        this.setLocation(100,100);
        this.setResizable(false);
        this.setVisible(true);
     
      // Quando true é exibido o percentual no carregamento
      Barra_de_Carregamento.setStringPainted(true);    
      this.add(Barra_de_Carregamento);
     
     
      this.add(Iniciar);
      Status.setFont(Fonte);
      this.add(Status);
   
   
    // Eventos que aconteceram ao click no botão Iniciar
    Iniciar.addActionListener(new ActionListener(){
       
        public void actionPerformed(ActionEvent event) {
           
            Rectangle progresso = Barra_de_Carregamento.getBounds();  
            progresso.x = 0;  
            progresso.y = 0;  
           
            Barra_de_Carregamento.setValue(0);  
            // Barra de carregamento tem valor mínimo igual a zero
            Barra_de_Carregamento.setMinimum(0);  
            // Barra de carregamento tem valor máximo igual a cem
            Barra_de_Carregamento.setMaximum(100);
         
           
          // Modifica o cursor para indicar carregamento
          setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));         
         
             for(int i=0 ; i <= 100 ; i++){
                // 0,1 segundos equivale a 1% da barra de carregamento
                try {Thread.sleep(100);} catch (InterruptedException Ig) {}
                // Atualizando o valor da barra de carregamento
                Barra_de_Carregamento.setValue(i);
                Barra_de_Carregamento.paintImmediately(progresso); 
             }
         
          // Devolve o cursor a forma inicial
          setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
          // Mensagem é exibida ao fim do primeiro carregamento
          Status.setText("Carregamento Concluido.");
         
        }
    });
     
    }
   
    public static void main(String[] args) {
        new Carregamento();
    }
   
}


Palavras-chaves: JProgressBar-Iniciar-Sleep-Cursor-Java.


Artigos relacionados em Java:



Feito no NetBeans-5.5.1 | Executável

Feito no NetBeans-5.5.1 | Executável