Ir para conteúdo
Fórum Script Brasil
  • 0

Manipulação de vetor


gravetu

Pergunta

Boas!

percebo muito pouco de c, e tenho o seguinte problema pra resolver:

/* Incluir os headers do sistema necessários */

#include <stdlib.h>

#include <stdio.h>

/* Incluir o nosso header */

#include "vector.h"

/* Definir a nossa struct para os vectores */

struct _vector_t {

size_t size;

int *data;

};

/* Criar um novo vector com tamanho 1*/

vector_t *vector_new() {

vector_t *retval;

/* Temos que primeiro alocar memória para a nossa estrutura de dados */

retval = (vector_t *)malloc(1 * sizeof(vector_t));

/* Verificar o valor devolvido para ter a certeza que obtivemos a memória pedida */

if(retval == NULL)

return NULL;

/* Temos agora que inicializar os dados */

retval->size = 1;

retval->data = (int *)malloc(retval->size * sizeof(int));

/* Verificar o valor devolvido para ter a certeza que obtivemos a memória pedida */

if(retval->data == NULL) {

free(retval);

return NULL;

}

retval->data[0]= 0;

/* Note que 'retval->size' poderia escrever-se '(*retval).size',

* mas a notação '->' é mais prática

*/

/* e terminamos com o ponteiro para o que se criou... */

return retval;

}

/* Libertar a memória alocada para o vector passado à função */

void vector_delete(vector_t *v) {

/* Não esquecer, tem que libertar TODA a memória que está alocada para este vector*/

/* --- ESCREVA O SEU CÓDIGO AQUI --- */

}

/* Devolver o valor de um elemento do vector */

int vector_get(vector_t *v, size_t loc) {

/* Se foi passado um ponteiro NULL pointer para o vector

* protestar e devolver 0.

*/

if(v == NULL) {

fprintf(stderr, "vector_get: passed a NULL vector. Returning 0.\n");

return 0;

}

/* Se a posição do elemento pretendido for maior que o tamanho alocado

* devolver 0, senão devolver o valor do elemento pretendido.

*/

if(loc < v->size) {

return v->data[loc];

} else {

return 0;

}

}

/* Colocar um valor no vector */

void vector_set(vector_t *v, size_t loc, int value) {

/* vector deve ter um comportamento dinâmico, aceitando sempre mais elementos.

* O que fazer quando a localização do elemento a colocar é maior que o tamanho já alocado?

* Não esquecer que elemntos não inicializados devem ficar a 0.

*/

/* --- ESCREVA O SEU CÓDIGO AQUI --- */

}

Os comentários no código indicam o funcionamento pretendido das diversas funções a

implementar. Analisando o código já implementado poderá ver como devem ser utilizadas as

estruturas de dados definidas. Não esquecer que o malloc() não coloca a zero a zona de

memória que aloca, e que neste caso pretende-se que os valores iniciais dos vectores sejam

todos 0.

se alguém poder ajudar desde já agradeço

abraço

Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,2k
    • Posts
      652k
×
×
  • Criar Novo...