domingo, 8 de junho de 2014

Matriz de ponteiros para strings


O mesmo código indicado no último post, foi reescrito usando ponteiros.Na verdade uma Matriz bi-dimensional é uma equivalência de um ponteiro para ponteiro e o acesso aos seus valores são obtidos com o uso duplo do operador asterisco.
O estudo sobre ponteiros é imenso, como também é suas aplicações que retorna com certeza um alto desepenho e eficiência nos programas em que se usa.
A finalidade deste código é de mostrar na prática como escrever Matrizes de caracteres usando ponteiros
do tipo char.

Veja imagens do programa em execução:



Veja o código abaixo:


#include <stdio.h>
#include <conio.h>
#include <string.h>
void Dimensao( int x, int y ){
/*declaração exemplo: void Dimensao(int x, int y);
 Dimensao(20,10);printf("Hello World!");*/
DWORD Tamanho = 2000;
DWORD Escritos;
COORD Pos = { x, y };
FillConsoleOutputCharacter( GetStdHandle ( STD_OUTPUT_HANDLE ),' ', Tamanho, Pos, &Escritos );
SetConsoleCursorPosition ( GetStdHandle ( STD_OUTPUT_HANDLE ), Pos );
}
void Janela5(){
int lin, col;
col = 0;system("color E3");
for ( lin = 0; lin <= 25; lin++ ){
for ( col = 0; col <= 80; col++ ){
gotoxy( col, lin );
if ( lin == 2 ){textbackground(BLACK);printf( " ");}
if ( col == 1 ){textbackground(BLACK);printf(" ");}
if ( lin == 25 ){textbackground(BLACK);}
if ( col == 80 ){textbackground(BLACK);printf(" ");}
}
}textbackground(BLACK);
}
int continuando( ){
int nr; do{system("cls");Janela5();
textcolor(LIGHTRED);gotoxy(28,3);printf("MATRIZ DE PONTEIROS PARA STRINGS");
textcolor(YELLOW);gotoxy(24,5);printf("Programa desenvolvido por:");
textcolor(LIGHTGRAY);gotoxy(51,5);printf("Samuel Lima");
textcolor(LIGHTGREEN);gotoxy(34,7);printf("sa_sp10@hotmail.com");
textcolor(LIGHTBLUE);gotoxy(22,9);printf ("Digite ");
textcolor(LIGHTRED);printf ("0");
textcolor(LIGHTBLUE);printf (" para sair ou " );
textcolor(LIGHTRED);printf ("1");
textcolor(LIGHTBLUE);printf (" para continuar : ");
textcolor(LIGHTRED);scanf ( "%d", &nr );fflush(stdin);
if( nr == 0 ){
textcolor(LIGHTRED);gotoxy(33,18);printf("O ROCCO AGRADECE!");
getche();exit(0);
}
else if( nr == 1 ){
return 1;
}
textcolor(YELLOW);gotoxy(37,16);printf ("\aopção errada!");
getche();
}while(1);
return 1;
}
int main(){system("title MATRIZ DE PONTEIROS PARA STRINGS");
continuando();system("cls");Janela5();
char *Frutas [ 6 ] = { "Melancia    ==> ", "Melão       ==> ", "Moranguinho ==> ",
"Pêra        ==> ", "Jaca        ==> ", "Banana      ==> " };
char **ptr_Fruta;unsigned int i;
ptr_Fruta = ( char ** ) malloc ( 80 *sizeof ( char* ) );
if (ptr_Fruta == NULL){
printf("\nNão foi possível alocar memória.\n");
exit(0);
}
ptr_Fruta = Frutas;
textcolor(LIGHTRED);gotoxy(28,3);printf("MATRIZ DE PONTEIROS PARA STRINGS");
textcolor(YELLOW);gotoxy(34,5);printf("sa_sp10@hotmail.com");
textcolor(LIGHTBLUE);gotoxy(36,7);printf("MULHERES FRUTAS");
for ( i = 0; i < strlen ( *ptr_Fruta ); i++){
Dimensao(25, i  + 9);
textcolor(LIGHTBLUE);printf(" Mulher ");
textcolor(YELLOW);printf(" %s", *ptr_Fruta );
textcolor(LIGHTBLUE);printf(" Posição " );
textcolor(LIGHTRED);printf(" %d", i );
Sleep(800);
ptr_Fruta++;
}
textcolor(LIGHTRED);gotoxy(30,17);printf("Banana ?? TOH FORA MANO ");
textcolor(LIGHTCYAN);gotoxy(36,23);printf("MUITO OBRIGADO");
getche();free( ptr_Fruta );exit(0);
}

Nenhum comentário:

Postar um comentário

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