domingo, 26 de junho de 2016

Marcando caracteres em matriz

Matrizes de strings são matrizes bidimensionais,
onde uma sequencia de string armazenadas na memória
são acessadas individualmente através de um índice.
o índice da esquerda indexa as linhas e o da direita,
indexa as colunas.
Neste exemplo imprimimos os  caracteres um por um, até o término,
e na procura, fizemos o mesmo, o programa pede um caractere
para a entrada, e encontrando-o na matriz vai marcando um por um,
num efeito que deixa claro a impressão individual dos mesmos.

Veja abaixo uma imagem do programa em execução:

Veja abaixo o código do programa:


#include <stdio.h>
#include <conio.h>
#include <string.h>
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 ( ) {
     system ( "title MARCANDO CARACTERES EM MATRIZ" );
     system ( "Color D7" );
     got_color ( 2, 34, 3, 79, 2, 0 );
     int i, j, n;
char Vet [ 20 ] [ 43 ] = {
              "Q O B G C O H O P P N A Y G B D F R H O",
              "O C V W M L W A U P W G K I S J G A U A",
              "O I I J V I P I D F Q N I O K Z Z Z Y C",
              "T T W S S C P A X B L I G S O R V I O A",
              "N S O J E A M B I N D T H T Y H F L O E",
              "G I H T J B M K J Z I A A G O K I A M T",
              "R L T P N W T Q Y F Y C O T Z W S B H E",
              "X A V C L E R G V W C H N G A J J A I C",
              "A B Z S L F M I K T H E I V O U K G L A",
              "Z A J I Z E A A R I M S A R K P N D F C",
              "R C Y B L B T W H A N A E E H C Z N L L",
              "R J N E D A V N H N L D J N X Z A F E B",
              "C D A U C C N L E O I V X J Q T S F H I",
              "L A T G L O U A R C J P O E V J U V O X",
              "M O J I Q B L A B M A W S U D W G R F D",
              "R Y D H R R C O C Q L J R E G A E D V F",
              "E T K O I R K L G H A K D J B J B T T B",
              "E V B C A H V B A O W D C A I A Z A Z J",
              "O A N B Y C U V G C A C O S Q S W I L N",
              "Y R X U J C V S T X B G K Y W J B M G I"};
     char num [ 3 ];
     textcolor ( LIGHTRED );
     gotoxy ( 27, 3 );
     printf ( "MARCANDO CARACTERES EM MATRIZ " );
     textcolor ( LIGHTBLUE );
     gotoxy ( 26, 5 );
     printf ( "Digite um caracter para marcar " );
     textcolor ( WHITE );
     for ( i = 0; i < 20; i++ ) {
         gotoxy ( 22, i + 7 );
         for ( j = 0; j < 43; j++ ) {
              Sleep ( 40 );
              printf ( "%1c", Vet [ i ] [ j ] );
         }
     }
     Sleep ( 800 );
     do {
         textcolor ( LIGHTBLUE );
         gotoxy ( 22, 28 );
         printf ( "Para sair digite " );
         textcolor ( LIGHTRED );
         printf ( "[ - 1 ] " );
         gets ( num );
         fflush ( stdin );
         strupr ( num );
         n = atoi ( num );
         if ( n == -1 ) {
              textcolor ( LIGHTBLUE );
              gotoxy ( 22, 30 );
              printf ( "Por: " );
              textcolor ( LIGHTMAGENTA );
              printf ( "Samuel Lima" );
              textcolor ( BLACK );
              gotoxy ( 22, 31 );
              printf ( "sa_sp10@hotmail.com" );
              Sleep ( 1800 );
              textcolor ( LIGHTRED );
              gotoxy ( 37, 33 );
              printf ( "MUITO OBRIGADO" );
              getche ( );
              exit ( 0 );
         }
         for ( i = 0; i < 20; i++ ) {
              gotoxy ( 22, i + 7 );
              for ( j = 0; j < 43; j++ ) {
                   if ( Vet [ i ] [ j ] == *num ) {
                        Sleep ( 800 );
                        textcolor ( LIGHTRED );
                        printf ( "%c", Vet [ i ] [ j ] );
                   } else {
                        textcolor ( WHITE );
                        printf ( "%c", Vet [ i ] [ j ] );
                   }
              }
         }
         getche ( );
         gotoxy ( 33, 28 );
         clreol ( );
     } while ( 1 );
     return 0;
}



Nenhum comentário:

Postar um comentário

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