Informando ao compilador uma dimensão, a da direita para ser mais preciso,
numa matriz não-dimensionada, a dimensão da esquerda pode ficar vazia
ficando por conta do compilador indexar a matriz de forma correta.
É perfeitamente possível alterar os valores da dimensão da direita
sem que prejudique as dimensões da matriz.
Neste exemplo trago um excelente exemplo de manipulação de matriz
não dimensionada, o programa imprime a matriz e em seguida pede
que se escolha uma linha e uma coluna, dentro de restrições que foram
aplicadas por mim mesmo.Feito tudo certo, o programa pede que se escolha um número para introduzir na posição escolhida em linhas x colunas, más se engana o usuário que tentar repetir o mesmo número que se encontra na posição, o programa não aceita.
Veja abaixo imagens do programa em execução:
Veja abaixo o código do programa:
numa matriz não-dimensionada, a dimensão da esquerda pode ficar vazia
ficando por conta do compilador indexar a matriz de forma correta.
É perfeitamente possível alterar os valores da dimensão da direita
sem que prejudique as dimensões da matriz.
Neste exemplo trago um excelente exemplo de manipulação de matriz
não dimensionada, o programa imprime a matriz e em seguida pede
que se escolha uma linha e uma coluna, dentro de restrições que foram
aplicadas por mim mesmo.Feito tudo certo, o programa pede que se escolha um número para introduzir na posição escolhida em linhas x colunas, más se engana o usuário que tentar repetir o mesmo número que se encontra na posição, o programa não aceita.
Veja abaixo imagens do programa em execução:
Veja abaixo o código do programa:
#include <stdio.h>
#include <conio.h>
void Janela5 ( ) {
int lin, col;
col = 0;
for ( lin = 2; lin <= 24 ; lin++ )
for ( col = 2; col <= 78 ; col++ ) {
gotoxy ( col , lin );
textattr ( 70 );
printf ( " " );
}
}
#define tam 10
int main ( ) {
system ( "title MATRIZ
NÃO DIMENSIONADA" );
int Y [ ] [ 10 ] = {
{ 1, 9 }, { 2, 1 }, { 3, 8 },
{ 4, 7 }, { 5, 3 }, { 6, 5 },
{ 7, 2 }, { 8, 4 }, { 9, 6 }, { 0, 0 } };
int i, j, n;
do {
Janela5 ( );
textcolor ( LIGHTRED );
gotoxy ( 32 , 3 );
printf ( "MATRIZ NÃO
DIMENSIONADA" );
textcolor ( LIGHTBLUE );
gotoxy ( 10 , 5 );
printf ( "Abaixo a
matriz original" );
textcolor ( LIGHTGREEN );
for ( i = 0; i < 10 ; i++ ) {
gotoxy ( 15 , i + 7 );
for ( j = 0; j < 2 ; j++ ) {
printf ( " %d " , Y [ i ] [ j ] );
}
}
getche ( );
textcolor ( LIGHTBLUE );
gotoxy ( 10 , 18 );
printf ( "Escolha uma
linha " );
textcolor ( LIGHTRED );
scanf ( "%d" , &i );
fflush ( stdin );
if ( i < 0 || i > tam - 1 ) {
textcolor ( LIGHTBLUE );
gotoxy ( 10 , 20 );
printf ( "\aO Número da
linha não Pode Ser Negativo" );
textcolor ( LIGHTBLUE );
gotoxy ( 10 , 21 );
printf ( "Nem Maior que
%d" , tam - 1 );
Sleep ( 1000 );
gotoxy ( 10 , 23 );
textcolor ( YELLOW );
printf ( "PRESSIONE QUALQUER TECLA" );
getche ( );
gotoxy ( 10 , 20 );
clreol ( );
gotoxy ( 10 , 21 );
clreol ( );
gotoxy ( 10 , 23 );
clreol ( );
gotoxy ( 28 , 18 );
clreol ( );
}
} while ( ( i < 0 ) || ( i > tam - 1 ) );
do {
textcolor ( LIGHTBLUE );
gotoxy ( 10 , 19 );
printf ( "Escolha uma
Coluna " );
textcolor ( LIGHTRED );
scanf ( "%d" , &j );
fflush ( stdin );
if ( j < 0 || j > 1 ) {
textcolor ( LIGHTBLUE );
gotoxy ( 10 , 21 );
printf ( "\aO Número da
coluna não Pode Ser Negativo" );
textcolor ( LIGHTBLUE );
gotoxy ( 10 , 22 );
printf ( "Nem Maior que
%d" , 1 );
Sleep ( 1000 );
gotoxy ( 10 , 23 );
textcolor ( YELLOW );
printf ( "PRESSIONE QUALQUER TECLA" );
getche ( );
gotoxy ( 10 , 21 );
clreol ( );
gotoxy ( 10 , 22 );
clreol ( );
gotoxy ( 10 , 23 );
clreol ( );
gotoxy ( 28 , 19 );
clreol ( );
}
} while ( ( j < 0 ) || ( j > 1 ) );
n = Y [ i ] [ j ];
do {
textcolor ( LIGHTBLUE );
gotoxy ( 10 , 20 );
printf ( "Digite o
valor a ser inserido " );
textcolor ( LIGHTRED );
scanf ( "%d" , &Y [ i ] [ j ] );
fflush ( stdin );
if ( Y [ i ] [ j ] == n ) {
textcolor ( LIGHTBLUE );
gotoxy ( 10 , 22 );
printf ( "Tente outro !
o número" );
textcolor ( LIGHTRED );
printf ( " %d" , n );
textcolor ( LIGHTBLUE );
printf ( " já está
nesta posição " );
getche ( );
gotoxy ( 10 , 22 );
clreol ( );
gotoxy ( 40 , 20 );
clreol ( );
}
} while ( Y [ i ] [ j ] == n );
textcolor ( LIGHTBLUE );
gotoxy ( 47 , 5 );
printf ( "Veja abaixo a
matriz alterada" );
textcolor ( WHITE );
for ( i = 0; i < 10 ; i++ ) {
gotoxy ( 60 , i + 7 );
for ( j = 0; j < 2 ; j++ ) {
printf ( " %d " , Y [ i ] [ j ] );
}
}
textcolor ( LIGHTBLUE );
gotoxy ( 48 , 20 );
printf ( "Matriz
alterada com sucesso" );
Sleep ( 1800 );
textcolor ( LIGHTRED );
gotoxy ( 36 , 23 );
printf ( "MUITO
OBRIGADO" );
getche ( );
exit ( 0 );
}
Nenhum comentário:
Postar um comentário
Observação: somente um membro deste blog pode postar um comentário.