Um comando de declaração determina as características de uma variável matriz em um programa Borland C. A declaração determina quatro características:
O local para armazenar um valor particular em uma matriz é chamado elemento da matriz. O número de elementos em uma matriz depende do número de dimensões e o comprimento de cada uma delas.
Sintaxe:
tipo variável[comprimento];
Exemplo:
int list[10];
Neste exemplo a matriz list tem comprimento 10, o que significa que pode armazenar uma lista de 10 valores do tipo int.
Os elementos individuais dessa matriz são representados como se segue:
list[0]
list[1]
list[2]
list[3]
....
list[9]
O número incluído entre colchetes após o nome da matriz é chamado índice. Em geral, se uma matriz tem n elementos, o primeiro elemento tem índice igual a zero e o último elemento tem um índice igual a n - 1.
Um programa utiliza esse sistema de índices para referir-se aos valores individuais na matriz. Um nome de matriz indexado pode aparecer em qualquer comando que normalmente utiliza uma variável simples, incluindo a entrada, a saída e os comandos de atribuição.
/* ex28.c */ #include < stdio.h > /* diretiva */ void imprime(); /* indica uso de função */ main() /* função principal */ { int valor [3]; char parada; clrscr(); valor[0] = 1; valor[1] = 2; valor[2] = 3; imprime (valor); parada = getche(); } void imprime (dado) /* função secundaria */ int *dado; { printf ("dado [0] = %d\n", *dado); printf ("dado [1] = %d\n", *(dado + 1)); printf ("dado [2] = %d\n", *(dado + 2)); }Poderia dizer qual é o resultado colocado na tela do computador?
1
2
3
Concorda?
Matriz de caracteres
Uma matriz de valores do tipo char é um caso especial em C, e nos referimos a ela como uma variável string. Em uma variável string cada valor é um caracter.Ao declarar uma variável string, sempre conceda espaço para o caracter nulo. C automaticamente anexa um caracter nulo no final de cada string de entrada ou valor de string literal.
/* ex35.c F. Albuquerque pag. 226 */ #include < stdio.h > #include < alloc.h > #include < string.h > #define SUCESSO 1 #define FALHA 0 #define VERDADEIRO 1 struct val { int dado; struct val *próxim; } *primeiro = (struct val*)NULL, *último = (struct val*)NULL; main() { char escolha[10]; int dado; clrscr(); while (VERDADEIRO) { printf ("Escolha: insere ou remove\n"); scanf ("%s", escolha); if (strcmp (escolha, "insere")) { printf ("Qual o valor a inserir? "); scanf ("%d", &dado); printf ("\n"); if (insere_fila(&dado)) printf ("Dado inserido\n"); else printf ("Não foi possível inserir\n"); } else { if (remove_fila(&dado)) printf ("Dado removido = %d\n", dado); else printf ("Não foi possível remover\n"); } } } insere_fila(valor) int valor; { struct val *ptr; ptr = malloc((unsigned) sizeof(struct val)); if (ptr == (struct val*)NULL) return FALHA; if (último == (struct val*)NULL) { primeiro = ptr; ultimo = ptr; } else último-> próximo = ptr; ultimo = ptr; ultimo-> dado = valor; ultimo-> próximo = (struct val *)NULL; return SUCESSO; } remove_fila(valor) int *valor; { struct val*ptr; if (primeiro == (struct val*)NULL) return FALHA; *valor = primeiro-> dado; ptr = primeiro; primeiro = primeiro-> próximo; if (primeiro == (struct val*)NULL) ultimo = (struct val*)NULL; free(ptr); return SUCESSO; }
Matriz bidimensional
Uma matriz bidimensional armazena uma tabela de dados, com linhas e colunas de valores especificando o comprimento de cada dimensão.
Sintaxe:
tipo variável[comprimento1] [comprimento2];
Exemplo:
int table[3] [4];
Essa matriz pode armazenar 3 linhas por 4 colunas de dados, para um total de 12 valores ao todo.
/* ex42.c matriz bidimensional */
#include < stdio.h > /* diretivas */
#include < conio.h >
#define TAXRATE .065
#define DOLLARS 10
#define CENTS 100
main () /* função principal */
{
float taxtable[dollars][cents];
int i, j;
for (i = 0; i < DOLLARS; i ++)
for (j = 0 j < CENTS; j++)
taxtable[i][j] = (i + j / 100.0) * TAXRATE;
clrscr();
printf ("Imposto de venda sobre $5.40 é $%4.2f\n", taxtable[5][40] );
printf ("Imposto de venda sobre $0.85 é $%4.2f\n", taxtable[0][85] );
printf ("Imposto de venda sobre $9.53 é $%4.2f\n", taxtable[9][53] );
}
Classificar é o processo de organizar um conjunto de dados em ordem alfabética ou numérica. Numa classificação simples, a chave é a lista de itens de dados pela qual a classificação é executada.
Os programadores utilizam uma variedade de algoritmos diferentes para classificação. Um algoritmo é uma seqüência de passos projetados para executar uma tarefa particular.
Uma das mais simples é chamada ordenação de bolhas. Essa técnica compara cada elemento de uma matriz com todos os itens localizados abaixo dele na lista, e troca as posições de qualquer par de valores que estiver fora de ordem. Quando o processo atingir o final da lista, os dados estão ordenados. Ordenação de bolhas trabalha com um conjunto pequeno de dados.
A grande vantagem da ordenação de bolhas é sua simplicidade - a tarefa é executada em poucas linhas de código.
C não permite comandos de atribuição operando diretamente com valores string. Utilizamos a função strcpy para copiar strings de uma variável para outra.
/* ex43.c classificação de matriz */
#include < stdio.h > /* diretivas */
#include < string.h >
main() /* função principal */
{
char holds[4]; /* matriz */
char alphstr[10][4] = /* matriz de strings */
{
"MNO", "JKL", "ABC", "XYZ", "PQR", "TUV",
"GHI", "STU", "DEF", "VWX"
};
int i, j;
for (i = 0; i < 9; i++)
for (j = i + 1; j < 10; j ++) /* as funções de strings serão descritas nas páginas seguintes */
if (strcmp(alphstr[i], alphstr[j]) > 0) /* comando de comparação de strings */
{
strcpy(holds, alphstr[i]); /* comando de transferência de string */
strcpy(alphstr[i], alphstr[j]);
strcpy(alphstr[j], holds);
}
for (i = 0; i < 10; i ++)
printf ("%s\n", alphstr[i]);
}
Uma matriz pode ter todos ou parte dos seus valores inicializados quando da sua declaração.
Sintaxe:
tipo variável[comprimento] = { valor1, valor2, valor3, ...};
Exemplo:
int dados[4] = { 1, 3, 6, 2};
Se não especificamos o número do comprimento, C assume que o comprimento é igual ao número de valores relacionados na inicialização.
![]() Voltar à HomePage |
![]() Ir para o topo da Página |
![]() Ir para a Aula 6 Subtema 02 |
|---|