Página 1 de 1

Dúvida com Vetor ou Matriz !!!

MensagemEnviado: 17 Jan 2010 22:02
por Andre_Cruz
Estou trabalhando com um 16F628A, em C com o compilador Hitech.
Criei uma matriz ou vetor(acho que são as mesmas coisas) do tipo inteira com 250 posições, inicie as posições, ai me veio a dúvida, como pegar o valor da posição da matriz e colocar ela em uma variavel ?

Por exemplo:

Código: Selecionar todos
//Valores para exemplo
unsigned int
 teste [250] = {0,10,20,30,40,50,60,70,80};

//Variavel que recebera o valor da matriz teste.
unsigned int
 valor = 0;

//Preciso atribuir o valor "10" que esta na posição 1 na matriz na var "valor"
//valor = teste[1];


Pesquisei na internet e em livros mas não consegui, por isso estou recorendo ao pessoal aqui do forum.

Agradeço a ajuda e participação de todos.

Abraço

André

MensagemEnviado: 18 Jan 2010 06:28
por ze
tente:
const unsigned int teste [250] = {0,10,20,30,40,50,60,70,80};
int ... lá se vai 1/4 da flash do chip...

MensagemEnviado: 18 Jan 2010 06:41
por RobL
Você quer o índice do elemento da matriz ?
Dado um valor da matriz, qual o seu índice?

Crie um looping com um contador iniciando em zero. Teste o valor, no seu exemplo, até encontrar o valor 10. Ao encontrar o valor o contador tem o índice.

Se sua matriz não tiver valores iguais com índices diferentes fica simples.

Conforme observação do Lelis, se seus elementos não ultrapassarem 255 e positivo, use algo como unsigned char, ou seja algo com 1 byte que tenha no seu compilador.

MensagemEnviado: 18 Jan 2010 09:04
por Andre_Cruz
lellis,

Vou testar com o const na hora de declarar a matriz.

RobL,
Eu preciso, colocar o valor armazenado na posição X (Que é o indice) da matriz, em uma variavel inteira.

O indice eu vou passar para a matriz.

Estou tentando assim:

valor = &teste[1];

Mas não esta funcionando.

Gostaria de saber como fazer.

Abraço a todos

MensagemEnviado: 18 Jan 2010 10:29
por RobL
Matriz é um ponteiro, então:
var_int = (teste + 0) ; // endereço de teste[0]
var_int = *(teste + 0) ; // valor de teste[0] var_int = 0
var_int = *(teste + 1) ; // valore de teste[1] var_int = 10...etc

Definindo ponteiro apontado para a matriz teste:
Você quer o endereço de um elemento da matriz. Supondo que seja isso:
int endereco ;
int *pointer ;
pointer = teste ;
Abaixo vai andando pelos elementos sem deferenciar:
endereco =(int *) pointer + 0; // endereço de teste[0]
endereço = (int *) pointer + 1 // etc
Dependendo de suas definições pode precisar cast.

Se preciso for pegar o endereço de cada elemento int da matriz veja a seguir:
Se voce criar um outro ponteiro, int, que aponta para o ponteiro criado acima (o pointer que aponta para teste) ao deferenciar esse novo ponteiro você obtem o endereço de cada inteiro da matriz.

Eu preciso, colocar o valor armazenado na posição X (Que é o indice) da matriz, em uma variavel inteira.


Creio que não seja isto, pois isto estás cansado de fazer :
valor = teste[n] ;
ou com ponteiros
valor = *pointer; // para o elemento que o ponteiro está apontando
vai pegaro valor inteiro de sua matriz e associar a int valor.
Abaixo pega o valor e aponta para o próximo.
valor = *(pointer+n) ; // n índice da matriz
ou ainda passando um numero para um elemento:
*(pointer + n) = valor ;

Rapaz penso que ainda não entendí sua dúvida.
Está dando algum tipo de erro? Poste aí

Seja lá o que for, não esqueça que "teste"não é uma variável mas um endereço fixo. Com ponteiros você pode pegar o valor, de cada elemento da matriz, ou o endereço de cada elemento.

MensagemEnviado: 18 Jan 2010 20:45
por barboza
Andre_Cruz escreveu:lellis,

Estou tentando assim:

valor = &teste[1];

Mas não esta funcionando.

Gostaria de saber como fazer.




O certo é:

Código: Selecionar todos
valor = teste[1];


Pois o que esta fazendo é pegar o valor do endereço ao invés do conteudo.

MensagemEnviado: 18 Jan 2010 22:35
por Sergio38br
Senhores uma duvida? por que teste[1] e não teste[0], uma matriz não começa no end. 0 até o limite??

[ ]`s
Sergio

MensagemEnviado: 19 Jan 2010 10:14
por RobL
Está com índice 1, penso ser como exemplo. Ele quer ler todos de zero até o último.

MensagemEnviado: 21 Jan 2010 20:46
por Andre_Cruz
Obrigado pessoal era

valor = teste[1];

Mesmo.

Agradeço a todos !!!

Abraço

André