quarta-feira, 9 de setembro de 2015

Inteiros - pesquisando e removendo ocorrências

Grande é a eficiência deste programa, no qual usa um vetor dinâmico para armazenar
a quantidade de inteiros que são inseridos pelo usuário, dentro de limitações
estabelecida pela #Macro tam, apoiado por um if onde a condição não deixa ultrapassar,
Já na declaração deste if temos as mensagens de advertência ao usuário, onde são apagadas
após suas exibições pela função clreol(); que por sua vez trabalha apontada pela função gotoxy();
Más nada disto teria sentido se não fosse o repetidor do{}while(); que confirma as condições do if
e força a repetição do bloco.
Passando pelas condições estabelecidas, um bloco comandado por um único laço for(); colhe a quantidade de números escolhido pelo usuário e armazena num vetor estático que foi declarado
e está pronto para isto, más paro por aqui nos meus comentários, e deixo por conta dos interessados no código procurar entender como tudo foi feito.

Veja abaixo imagens do programa em execução:




Veja abaixo o código do programa:

#include <stdio.h>
#include <conio.h>
#define tam 50
void Janela5 ( ) {
     int lin, col;
     col = 0;
     system ( "Color 00" );
     for ( lin = 2; lin < 25; lin++ )
         for ( col = 2; col < 80; col++ ) {
              gotoxy ( col, lin );
              textbackground ( WHITE );
              printf ( " " );
         }
}
int continuando ( ) {
     int nr;
     do {
         system ( "Color 90" );
         Janela5 ( );
         textcolor ( LIGHTRED );
         gotoxy ( 20, 3 );
         printf ( "INTEIROS - PESQUISANDO E REMOVENDO OCORRÊNCIAS " );
         textcolor ( BROWN );
         gotoxy ( 25, 7 );
         printf ( "Programa desenvolvido por:" );
         textcolor ( GREEN );
         gotoxy ( 52, 7 );
         printf ( "Samuel Lima" );
         textcolor ( BLACK );
         gotoxy ( 34, 9 );
         printf ( "sa_sp10@hotmail.com" );
         textcolor ( LIGHTBLUE );
         gotoxy ( 23, 11 );
         printf ( "Digite " );
         textcolor ( LIGHTRED );
         printf ( " 0 " );
         textcolor ( LIGHTBLUE );
         printf ( " para sair ou " );
         textcolor ( LIGHTRED );
         printf ( " 1 " );
         textcolor ( LIGHTBLUE );
         printf ( " para continuar " );
         textcolor ( LIGHTRED );
         gotoxy ( 24, 13 );
         scanf ( "%d", &nr );
         fflush ( stdin );
         if ( nr == 0 ) {
              textcolor ( LIGHTRED );
              gotoxy ( 36, 18 );
              printf ( "MUITO OBRIGADO" );
              getche ( );
              exit ( 0 );
         } else if ( nr == 1 ) {
              return 1;
         }
         textcolor ( BLACK );
         gotoxy ( 36, 16 );
         printf ( "\aopcão errada!" );
         getche ( );
     } while ( 1 );
     return 0;
}
int main ( ) {
     system ( "title INTEIROS - PESQUISANDO E REMOVENDO OCORRÊNCIAS" );
     continuando ( );
     Janela5 ( );
     unsigned int cont, i, j, p;
     int *Ve_t;
     Ve_t = ( int* ) malloc ( tam * sizeof(int) );
     int Vet [ tam ];
     textcolor ( LIGHTRED );
     gotoxy ( 20, 3 );
     printf ( "INTEIROS - PESQUISANDO E REMOVENDO OCORRÊNCIAS " );
     do {
         textcolor ( LIGHTBLUE );
         gotoxy ( 20, 5 );
         printf ( "Quantos números deseja inserir ? " );
         textcolor ( LIGHTRED );
         scanf ( "%d", &p );
         fflush ( stdin );
         textcolor ( BLACK );
         gotoxy ( 28, 9 );
         if ( p < 1 || p > tam ) {
              printf ( "\aNúmero acima de 0 e menor que %d ", tam );
              Sleep ( 1800 );
              textcolor ( LIGHTRED );
              gotoxy ( 20, 23 );
              printf ( "Pressione qualquer tecla para tentar outra vez" );
              getche ( );
              gotoxy ( 7, 13 );
              clreol ( );
              gotoxy ( 20, 9 );
              clreol ( );
              gotoxy ( 52, 5 );
              clreol ( );
              gotoxy ( 20, 23 );
              clreol ( );
         }
     } while ( ( p < 1 ) || ( p > tam ) );
     for ( i = 0; i < p; i++ ) {
         textcolor ( LIGHTBLUE );
         gotoxy ( 20, 7 );
         printf ( "Insira o " );
         textcolor ( LIGHTRED );
         gotoxy ( 28, 7 );
         printf ( " %do", i + 1 );
         textcolor ( LIGHTBLUE );
         gotoxy ( 32, 7 );
         printf ( " número : " );
         textcolor ( LIGHTRED );
         scanf ( "%d", &Vet [ i ] );
         fflush ( stdin );
     }
     textcolor ( LIGHTBLUE );
     gotoxy ( 7, 9 );
     printf ( "Números digitados ==> " );
     for ( i = 0; i < p; i++ ) {
         textcolor ( BLACK );
         printf ( " %d", Vet [ i ] );
     }
     getche ( );
     do {
         textcolor ( LIGHTBLUE );
         gotoxy ( 7, 11 );
         printf ( "Digite um número para ser removido ==> " );
         i = 0;
         textcolor ( LIGHTRED );
         scanf ( "%d", &Ve_t [ i ] );
         fflush ( stdin );
         cont = 0;
         for ( i = 0; i < p; i++ )
              for ( j = 0; j < p - 1; j++ )
                   if ( Vet [ i ] == Ve_t [ j ] && Vet [ i ] != 0 )
                        cont++;
         if ( cont == 0 ) {
              textcolor ( LIGHTBLUE );
              gotoxy ( 7, 13 );
              printf ( "Não há Nenhuma ocorrência de " );
              textcolor ( LIGHTRED );
              printf ( "%d", Ve_t [ cont ] );
              textcolor ( LIGHTBLUE );
              printf ( " entre os números digitados" );
              Sleep ( 1800 );
              textcolor ( LIGHTRED );
              gotoxy ( 7, 15 );
              printf ( "Pressione qualquer tecla para tentar outra vez" );
              getche ( );
              gotoxy ( 46, 11 );
              clreol ( );
              gotoxy ( 7, 13 );
              clreol ( );
              gotoxy ( 7, 15 );
              clreol ( );
         }
     } while ( cont == 0 );
     textcolor ( LIGHTBLUE );
     gotoxy ( 7, 13 );
     printf ( "Entre os números ==> " );
     for ( i = 0; i < p; i++ ) {
         textcolor ( BLACK );
         printf ( "%d ", Vet [ i ] );
     }
     textcolor ( LIGHTBLUE );
     gotoxy ( 7, 15 );
     printf ( "Foram encontrados " );
     textcolor ( LIGHTRED );
     printf ( " %d ", cont );
     textcolor ( LIGHTBLUE );
     printf ( " números" );
     i = 0;
     textcolor ( LIGHTRED );
     printf ( " %d ", Ve_t [ i ] );
     textcolor ( LIGHTBLUE );
     gotoxy ( 7, 17 );
     printf ( "Mostrando abaixo os números ==> " );
     for ( i = 0; i < p; i++ ) {
         textcolor ( BLACK );
         printf ( "%d ", Vet [ i ] );
     }
     textcolor ( LIGHTBLUE );
     gotoxy ( 7, 19 );
     printf ( "Sem seus " );
     textcolor ( LIGHTRED );
     printf ( " %d ", cont );
     textcolor ( LIGHTBLUE );
     printf ( " dígitos " );
     i = 0;
     textcolor ( LIGHTRED );
     printf ( " %d ", Ve_t [ i ] );
     textcolor ( LIGHTBLUE );
     printf ( " que foram removidos " );
     textcolor ( BLACK );
     gotoxy ( 7, 21 );
     for ( i = 0; i < p; i++ ) {
         for ( j = 0; j < p - 1; j++ )
              if ( Vet [ i ] == Ve_t [ j ] )
                   break;
         if ( j == p - 1 ) {
              printf ( " %d", Vet [ i ] );
         }
     }
     Sleep ( 1000 );
     textcolor ( LIGHTRED );
     gotoxy ( 36, 23 );
     printf ( "MUITO OBRIGADO" );
     getche ( );
     free ( Ve_t );
     return ( 0 );
}

Nenhum comentário:

Postar um comentário

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