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:
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.