quinta-feira, 19 de novembro de 2015

Frase - separando dígitos

Neste programa a matriz dinâmica de char *frase recebe
uma frase híbrida contendo dígitos e caracteres digitada pelo usuário.
O vetor de char Num [ 10 ]; inicializado com dígitos
de 0 a 9 serve de espelho para char *frase; fazendo comparações um por um
e os que forem iguais, isto é, estiverem presentes em char Num [ 10 ]; são separados.
Então *frase é imprimida sem os dígitos que possuiia originalmente;
Más ainda não está tudo terminado, temos que imprimir
somente os dígitos da frase original digitada pelo usuário.
O primeiro passo foi descobrir o tamanho dos dois vetores de char que são: *frase e Num [ ];
Agora que já sabemos o tamanho de *frase e de Num [ ];
graças a função strlen(); Fizemos mais uma comparação,
e copiamos no vetor dinâmico de char *Vet; os resultados que foram os dígitos extraídos de *frase.
E como é obrigação nossa, bons programadores de linguagem C,
usamos a função free(); para liberar as memórias alocadas dinamicamente.

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


Veja abaixo o código do programa:




#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
void Moldura ( int a, int c, int b, int d, int e, int f ) {
     textbackground ( 0 );
     for ( a = e; a <= c; a++ )
         for ( b = f; b <= d; b++ ) {
              gotoxy ( b, a );
              textbackground ( 15 );
              printf ( " " );
         }
}
int main ( ) {
     system ( "title FRASE - SEPARANDO DÍGITOS" );
     char *Vet;
     Vet = ( char* ) malloc ( 50 );
     int h = 0, k, i, j, lenv, len_v, t;
     char *frase = 0;
     frase = ( char* ) malloc ( 50 );
     char Num [ 10 ] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9' };
     Moldura ( 2, 24, 2, 78, 2, 3 );
     textcolor ( 12 );
     gotoxy ( 28, 3 );
     printf ( "FRASE - SEPARANDO DÍGITOS" );
     textcolor ( 9 );
     gotoxy ( 16, 5 );
     printf ( "Digite uma frase ==> " );
     textcolor ( 12 );
     scanf ( "%50[^\n]s", frase );
     t = strlen ( frase );
     textcolor ( 9 );
     gotoxy ( 16, 7 );
     printf ( "Frase digitada ==> " );
     textcolor ( 12 );
     for ( i = 0; i < t; i++ ) {
         printf ( "%c", frase [ i ] );
     }
     lenv = strlen ( Num );
     len_v = strlen ( frase );
     textcolor ( 9 );
     gotoxy ( 16, 9 );
     printf ( "Imprimindo abaixo só os caracteres da frase" );
     textcolor ( 12 );
     gotoxy ( 16, 11 );
     for ( i = 0; i < len_v; i++ ) {
         for ( j = 0; j < lenv; j++ )
              if ( frase [ i ] == Num [ j ] )
                   break;
         if ( j == lenv )
              printf ( "%c", frase [ i ] );
     }
     getche ( );
     for ( i = 0; i < len_v; i++ ) {
         for ( j = 0; j < lenv; j++ ) {
              if ( Num [ j ] == frase [ i ] ) {
                   Vet [ h ] = frase [ i ];
                   h++;
              }
         }
     }
     k = h;
     textcolor ( 9 );
     gotoxy ( 16, 13 );
     printf ( "Imprimindo abaixo só os dígitoss da frase" );
     textcolor ( 12 );
     gotoxy ( 26, 15 );
     for ( h = 0; h < k; h++ ) {
         printf ( " %c ", Vet [ h ] );
     }
     getche ( );
     textcolor ( 9 );
     gotoxy ( 20, 17 );
     Sleep ( 1800 );
     printf ( "Por: " );
     textcolor ( 5 );
     printf ( "Samuel Lima" );
     textcolor ( 0 );
     gotoxy ( 20, 18 );
     printf ( "sa_sp10@hotmail.com" );
     Sleep ( 1800 );
     textcolor ( 12 );
     gotoxy ( 37, 22 );
     printf ( "MUITO OBRIGADO" );
     getche ( );
     free ( frase );
     free ( Vet );
     return 0;
}

Nenhum comentário:

Postar um comentário

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