segunda-feira, 7 de setembro de 2015

Caracter - pesquisa em matriz

Em linguagem c matrizes de strings são matrizes bidimensionais e sua forma geral é:
tipo_nome_da_variavel [ dimensão da esquerda ] [ dimensão da direita ];
onde a dimensão da esquerda indexa as linhas e a da direita indexa as colunas.
Em linguagem C, ao contrário de outras linguagens, não existe um tipo de dados string original, por isso devemos criar vetores de caracteres ou matriz bidimensional para armazenamento de strings.
Neste programa a matriz de string é lida caracter por caracter e é imprimida em duas dimensões, isto facilitou na busca de um caracter dentro da matriz.
A função responsável pela busca de caracters dentro da matriz de string é a função
int Pesq_let ( char Mat [ 11 ] [ 16 ], char *di );onde recebe dois parâmetros no protótipo, a matriz de char e um ponteiro para char.
Este código pode ser adaptado para trabalhar com inteiros ou floats, basta um pouco de esforço
e o futuro programador consegue fazer pesquisa dentro de uma matriz de inteiros ou float com sucesso.
As configurações do cmd para esta janela estão na imagem abaixo, onde temos também  imagens
do funcionamento do programa:





Veja abaixo o código do programa:

#include<stdio.h>
#include<conio.h>
void Janela5 ( ) {
     int lin, col;
     col = 0;
     for ( lin = 2; lin <= 24; lin++ )
         for ( col = 2; col <= 103; col++ ) {
              gotoxy ( col, lin );
              textbackground ( WHITE );
              printf ( " " );
         }
}
int Pesq_let ( char Mat [ 11 ] [ 16 ], char *di ) {
     int i, j, oc = 0;
     for ( i = 0; i < 11; i++ ) {
         for ( j = 0; j < 16; j++ ) {
              if ( Mat [ i ] [ j ] == *di )
                   oc++;
         }
     }
     return ( oc );
}
int main ( ) {
     system ( "title CARACTER - PESQUISA EM MATRIZ" );
     int a = 7, i, j, nr;
     char di [ 16 ];
     char Mat [ 11 ] [ 16 ] = { { "César Eugênio" }, { "Átila Antônio" }, {
              "Irene Patrícia" }, { "Mônica Simões" }, { "Ester Büeno" }, {
              "Graça Núbia" }, { "Fábio Césoi" }, { "Ozéias Gonçalo" }, {
              "Lúcia Píres" }, { "Ulisses Antônio" }, { "Ítalo Guimarães" } };
     Janela5 ( );
     textbackground ( WHITE );
     textcolor ( LIGHTRED );
     gotoxy ( 42, 3 );
     printf ( "CARACTER - PESQUISA EM MATRIZ" );
     textcolor ( LIGHTBLUE );
     gotoxy ( 5, 5 );
     printf ( "Imprimindo abaixo a Matriz de string" );
     textcolor ( BLACK );
     for ( i = 0; i < 11; i++ ) {
         gotoxy ( 3, i + 7 );
         for ( j = 0; j < 16; j++ ) {
              printf ( " %c ", Mat [ i ] [ j ] );
         }
     }
     textcolor ( LIGHTBLUE );
     gotoxy ( 60, 5 );
     printf ( "Digite uma letra para pesquisar " );
     textcolor ( LIGHTRED );
     gets ( di );
     fflush ( stdin );
     textcolor ( LIGHTBLUE );
     nr = Pesq_let ( Mat, di );
     for ( i = 0; i < 11; i++ ) {
         for ( j = 0; j < 16; j++ )
              if ( Mat [ i ] [ j ] == *di ) {
                   gotoxy ( 50, a );
                   a = a + 1;
                   printf ( "O caractere " );
                   textcolor ( LIGHTRED );
                   printf ( "%c", *di );
                   textcolor ( LIGHTBLUE );
                   printf ( " foi encontrado na linha " );
                   textcolor ( LIGHTRED );
                   printf ( "%d", i );
                   textcolor ( LIGHTBLUE );
                   printf ( " e coluna " );
                   textcolor ( LIGHTRED );
                   printf ( "%d ", j );
                   Sleep ( 500 );
                   textcolor ( LIGHTBLUE );
              }
     }
     if ( nr == 0 ) {
         textcolor ( LIGHTBLUE );
         gotoxy ( 57, 15 );
         printf ( "Nenhuma ocorrência do caractere digitado" );
     }
     if ( nr > 1 ) {
         textcolor ( LIGHTBLUE );
         gotoxy ( 57, 23 );
         printf ( "O Caractere " );
         textcolor ( LIGHTRED );
         printf ( "%c", *di );
         textcolor ( LIGHTBLUE );
         printf ( " ocorre " );
         textcolor ( LIGHTRED );
         printf ( "%d", nr );
         textcolor ( LIGHTBLUE );
         printf ( " vêzes na matriz" );
     }
     Sleep ( 1800 );
     textcolor ( LIGHTBLUE );
     gotoxy ( 5, 19 );
     printf ( "Programa desenvolvido por:" );
     textcolor ( BLACK );
     gotoxy ( 12, 21 );
     printf ( "Samuel Lima" );
     textcolor ( LIGHTMAGENTA );
     gotoxy ( 8, 23 );
     printf ( "sa_sp10@hotmail.com" );
     getche ( );
     return ( 0 );
}

Nenhum comentário:

Postar um comentário

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