terça-feira, 17 de fevereiro de 2015

Matriz de ponteiro

Podemos declarar um ponteiro como vetor ou matriz multidimensional
E se quisermos armazenar ou trabalhar com endereços de memória
recorremos aos ponteiros.
O símbolo * é uma referência ao compilador para que ele armazene numa variável um endereço de memória.
Este programa foi criado para a demonstração do funcionamento de uma
matriz de ponteiro.
O usuário pode escolher uma das linhas da matriz respeitando as limitações pois o programa está preparado para rejeitar que se escolha por exemplo um número de linha acima do limite ou inferior a zero, e o que chama mais a atenção é na escolha de uma posição dentro
da linha escolhida, o programa avisa se o usuáruio escolher um espaço
dentro da linha ou se for escolhido a última posição que é o '\0'.

Veja abaixo imagens do programa em execução:









Veja abaixo o código do programa:



#include <stdio.h>
#include <conio.h>
#define a 10
#define tam strlen ( Nomes [ num ] )
void Janela5 ( ) {
     system ( "title MATRIZ DE PONTEIRO " );
     int lin, col;
     col = 0;
     for ( lin = 2; lin <= 24; lin++ )
         for ( col = 2; col <= 78; col++ ) {
              gotoxy ( col, lin );
              textattr ( 700 );
              printf ( " " );
         }
}
void finaliza ( ) {
     Sleep ( 1800 );
     textcolor ( LIGHTRED );
     gotoxy ( 36, 23 );
     printf ( "MUITO OBRIGADO" );
     getche ( );
     exit ( 0 );
}
int main ( ) {
     char *Nomes [ ] = { "Éder Costa", "Humberto Gomes", "Dijalma Lacerda",
              "Caroline Silva", "Igor Gonçalves", "Bruna Carla ", "Fábio Quadros",
              "Geany Barros", "Jaqueline Vega", "Ana Célia" };
     int i, et = 0, num;
     unsigned int n;
     char ch = 0;
     system ( "Color 80" );
     Janela5 ( );
     textcolor ( BLACK );
     gotoxy ( 34, 3 );
     printf ( "MATRIZ DE PONTEIRO" );
     textcolor ( LIGHTBLUE );
     gotoxy ( 23, 5 );
     printf ( "Imprimindo abaixo a matriz de ponteiro" );
     textcolor ( GREEN );
     for ( i = 0; i < a; i++ ) {
         gotoxy ( 22, i + 7 );
         printf ( " %s", Nomes [ i ] );
     }
     Sleep ( 1800 );
     textcolor ( BLUE );
     gotoxy ( 31, 20 );
     printf ( "Programa criado por:" );
     textcolor ( BLUE );
     gotoxy ( 31, 21 );
     printf ( "Samuel Lima" );
     textcolor ( BLACK );
     gotoxy ( 31, 23 );
     printf ( "PRESSIONE QUALQUER TECLA" );
     getche ( );
     system ( "cls" );
     do {
         system ( "Color F0" );
         Janela5 ( );
         textcolor ( LIGHTRED );
         gotoxy ( 34, 3 );
         printf ( "MATRIZ DE PONTEIRO" );
         textcolor ( LIGHTBLUE );
         gotoxy ( 5, 5 );
         printf ( "Escolha uma linha digitando um número entre [ 0 ] e [ 9 ] " );
         textcolor ( LIGHTRED );
         scanf ( "%d", &num );
         fflush ( stdin );
         if ( num < 0 || num > a - 1 ) {
              textcolor ( LIGHTBLUE );
              gotoxy ( 25, 9 );
              printf ( "\aO Número da linha não Pode Ser Negativo" );
              textcolor ( LIGHTBLUE );
              gotoxy ( 25, 10 );
              printf ( "Nem Maior que %d", a );
              Sleep ( 1000 );
              gotoxy ( 25, 12 );
              textcolor ( YELLOW );
              printf ( "PRESSIONE QUALQUER TECLA" );
              getche ( );
              system ( "cls" );
         }
     } while ( ( num < 0 ) || ( num > a - 1 ) );
     textcolor ( LIGHTBLUE );
     gotoxy ( 5, 7 );
     printf ( "Abaixo o que está escrito na linha" );
     textcolor ( LIGHTRED );
     printf ( " %d", num );
     textcolor ( LIGHTBLUE );
     printf ( " da matriz de ponteiro" );
     textcolor ( LIGHTGREEN );
     gotoxy ( 5, 9 );
     printf ( "%s", Nomes [ num ] );
     textcolor ( LIGHTBLUE );
     gotoxy ( 5, 11 );
     printf ( "O nome " );
     textcolor ( LIGHTGREEN );
     printf ( "%s", Nomes [ num ] );
     textcolor ( LIGHTBLUE );
     printf ( " tem" );
     textcolor ( LIGHTRED );
     printf ( " %d", strlen ( Nomes [ num ] ) );
     textcolor ( LIGHTBLUE );
     printf ( " posições" );
     gotoxy ( 5, 12 );
     printf ( "contando com espaços e o \\Null " );
     do {
         textcolor ( LIGHTBLUE );
         gotoxy ( 5, 14 );
         printf ( "Agora escolha uma posição dentro deste nome " );
         textcolor ( LIGHTRED );
         scanf ( "%d", &n );
         fflush ( stdin );
         if ( n < 0 || n > tam ) {
              textcolor ( LIGHTBLUE );
              gotoxy ( 25, 16 );
              printf ( "\aA posição não pode ser negativa" );
              textcolor ( LIGHTBLUE );
              gotoxy ( 25, 17 );
              printf ( "nem maior que %d", tam );
              Sleep ( 1000 );
              gotoxy ( 25, 19 );
              textcolor ( YELLOW );
              printf ( "PRESSIONE QUALQUER TECLA" );
              getche ( );
              gotoxy ( 25, 16 );
              clreol ( );
              gotoxy ( 25, 17 );
              clreol ( );
              gotoxy ( 25, 19 );
              clreol ( );
              gotoxy ( 44, 14 );
              clreol ( );
         }
     } while ( n < 0 || n > tam );
     ch = Nomes [ num ] [ n ];
     if ( ch == ' ' ) {
         et++;
         textcolor ( LIGHTBLUE );
         gotoxy ( 5, 20 );
         printf ( "A" );
         textcolor ( LIGHTRED );
         printf ( " %d°", n );
         textcolor ( LIGHTBLUE );
         printf ( "posição é um espaço impossível exibir" );
         finaliza ( );
     }
     if ( n == tam ) {
         textcolor ( LIGHTBLUE );
         gotoxy ( 5, 20 );
         printf ( "A" );
         textcolor ( LIGHTRED );
         printf ( " %d°", n );
         textcolor ( LIGHTBLUE );
         printf ( "posição é o \\NULL impossível exibir" );
         finaliza ( );
     } else {
         textcolor ( LIGHTBLUE );
         gotoxy ( 5, 16 );
         printf ( "O caractere" );
         textcolor ( LIGHTGREEN );
         printf ( " %c", Nomes [ num ] [ n ] );
         textcolor ( LIGHTBLUE );
         printf ( " escolhido dentro da linha de número" );
         textcolor ( LIGHTRED );
         printf ( " %d", num );
         textcolor ( LIGHTBLUE );
         gotoxy ( 5, 18 );
         printf ( "ocupa o " );
         textcolor ( LIGHTRED );
         printf ( "%d°", n );
         textcolor ( LIGHTBLUE );
         printf ( " lugar dentro da linha" );
     }
     finaliza ( );
}



Nenhum comentário:

Postar um comentário

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