domingo, 13 de setembro de 2015

Pesquisando e apagando ocorrências de string em matriz

Este é mais um programa onde trabalho com remoção em estrutura de dados,
e neste algo mais avançado foi aplicado, a remoção da string procurada
acontece na própria impressão da matriz, isto é se for encontrada.
A função responsável pela remoção da string encontrada é a memset();
Da biblioteca padrão string.h;
Estudem esta incrível função, todo programador deve estudar memset();
Usando o raciocínio e a lógica muitas outra coisas se podem fazer
usando esta poderosa função.
Na matriz, usei um poema de  "Carlos Drummond de Andrade".

Veja abaixo imagens do programa em execução:



Veja abaixo o código do programa:

#include <stdio.h>
#include <string.h>
#include <conio.h>
#define lin  12
#define col 43
void Janela5 ( ) {
     int n, c;
     c = 0;
     system ( "Color 00" );
     for ( n = 2; n <= 33; n++ )
         for ( c = 2; c <= 78; c++ ) {
              gotoxy ( c, n );
              textbackground ( WHITE );
              printf ( " " );
         }
}
int main ( ) {
     system ( "title PESQUISANDO E APAGANDO OCORRÊNCIAS"
              " DE STRING EM MATRIZ" );
     char texto [ lin ] [ col ] = {
              "No Meio do Caminho                        ",
              "Carlos Drummond de Andrade                ",
              "No meio do caminho tinha uma pedra        ",
              "Tinha uma pedra no meio do caminho        ",
              "Tinha uma pedra                           ",
              "No meio do caminho tinha uma pedra.       ",
              "Nunca me esquecerei desse acontecimento   ",
              "Na vida de minhas retinas tão fatigadas.  ",
              "Nunca me esquecerei que no meio do caminho",
              "Tinha uma pedra                           ",
              "Tinha uma pedra no meio do caminho        ",
              "No meio do caminho tinha uma pedra.       " };
     int i, j, k, cont = 0, lenv;
     char *pt;
     int a = 0;
     pt = ( char * ) malloc ( 28 );
     Janela5 ( );
     textcolor ( LIGHTRED );
     gotoxy ( 13, 3 );
     printf ( "PESQUISANDO E APAGANDO OCORRÊNCIAS"
              " DE STRING EM MATRIZ" );
     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" );
     Sleep ( 1800 );
     textcolor ( LIGHTRED );
     gotoxy ( 30, 23 );
     printf ( "PRESSIONE QUALQUER TECLA" );
     getche ( );
     gotoxy ( 25, 7 );
     clreol ( );
     gotoxy ( 52, 7 );
     clreol ( );
     gotoxy ( 34, 9 );
     clreol ( );
     gotoxy ( 30, 23 );
     clreol ( );
     textcolor ( LIGHTBLUE );
     gotoxy ( 29, 5 );
     printf ( "Abaixo a matriz imprimida" );
     for ( i = 0; i < lin; i++ ) {
         gotoxy ( 13, i + 7 );
         textcolor ( BLACK );
         for ( j = 0; j < col; j++ ) {
              printf ( "%c", texto [ i ] [ j ] );
         }
     }
     getche ( );
     textcolor ( LIGHTBLUE );
     gotoxy ( 13, 20 );
     printf ( "Digite uma palavra para procurar ==> " );
     textcolor ( LIGHTRED );
     gets ( pt );
     lenv = strlen ( pt );
     for ( i = 0; i < lin; i++ ) {
         for ( j = 0; j < col; j++ ) {
              k = 0;
              while ( texto [ i ] [ j + k ] == pt [ k ] && pt [ k ] != '\0'
                        && texto [ i ] [ j + k ] != '\0' )
                   k++;
              if ( pt [ k ] == '\0' ) {
                   textbackground ( LIGHTGRAY );
                   ++cont;
                   gotoxy ( 22, a + 22 );
                   a++;
                   textcolor ( LIGHTBLUE );
                   printf ( "linha " );
                   textcolor ( LIGHTRED );
                   printf ( "%d", i + 1 );
                   textcolor ( LIGHTBLUE );
                   printf ( " a partir da coluna " );
                   textcolor ( LIGHTRED );
                   printf ( "%d", j + 1 );
                   memset ( &texto [ i ] [ j ], 0, lenv );
              }
         }
     }
     textcolor ( LIGHTBLUE );
     gotoxy ( 13, 23 + cont );
     textbackground ( WHITE );
     printf ( "Encontrado " );
     textcolor ( LIGHTRED );
     printf ( "%d", cont );
     textcolor ( LIGHTBLUE );
     printf ( " ocorrência ( s ) da palavra " );
     textcolor ( LIGHTRED );
     printf ( "%s", pt );
     if ( cont == 0 ) {
         Sleep ( 1000 );
         textcolor ( LIGHTRED );
         gotoxy ( 34, 32 );
         printf ( "MUITO OBRIGADO" );
         getche ( );
         exit ( 0 );
     }
     Sleep ( 1800 );
     textcolor ( LIGHTRED );
     gotoxy ( 30, 32 );
     printf ( "PRESSIONE QUALQUER TECLA" );
     getche ( );
     Janela5 ( );
     textcolor ( LIGHTRED );
     gotoxy ( 13, 3 );
     printf ( "PESQUISANDO E APAGANDO OCORRÊNCIAS"
              " DE STRING EM MATRIZ" );
     textcolor ( LIGHTBLUE );
     gotoxy ( 13, 5 );
     printf ( "Matriz imprimida sem as " );
     textcolor ( LIGHTRED );
     printf ( "%d", cont );
     textcolor ( LIGHTBLUE );
     printf ( " ocorrências da palavra" );
     textcolor ( LIGHTRED );
     printf ( " %s", pt );
     textcolor ( BLACK );
     for ( i = 0; i < lin; i++ ) {
         gotoxy ( 13, i + 7 );
         for ( j = 0; j < col; j++ ) {
              printf ( "%c", texto [ i ] [ j ] );
         }
     }
     Sleep ( 1000 );
     textcolor ( LIGHTRED );
     gotoxy ( 34, 32 );
     printf ( "MUITO OBRIGADO" );
     getche ( );
     return 0;
}

Nenhum comentário:

Postar um comentário

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