diogoazevedo Posted March 20, 2012 Report Share Posted March 20, 2012 Boa tarde, Estou a fazer um trabalho para uma cadeira de programação e tenho uma dificuldade num exercício. Resolvi pedir a vossa ajuda. A estrutura de dados vetor é a base da biblioteca e tem a seguinte declaração: typedef struct { int tamanho; char** elementos; } vetor; int vetor_insere (vetor *vec, const char *valor, int pos) insere um elemento na posição especificada Parâmetros: vec apontador para vetor valor string a inserir pos índice do elemento onde se pretende inserir a string se pos=-1 insere no fim do vetor Retorna: -1 se ocorrer algum erro (p.ex. se valor pos indicar uma posição inválida) ou pos se bem sucedido Esse é o enunciado dado. Tenho que escrever a função vetor_insere. O que fiz foi isto: int vetor_insere(vetor* vec, const char* valor, int pos) { int i; if(pos>=(*vec).tamanho || pos<-1) return -1; else if(pos==-1) { (*vec).elementos=(char**)realloc((*vec).elementos,sizeof(char*)*((*vec).tamanho+1)); strcpy((*vec).elementos[((*vec).tamanho)+1],valor); return pos; } else { (*vec).elementos=(char**)realloc((*vec).elementos,sizeof(char*)*(*vec).tamanho+1); i=(*vec).tamanho; while(i>pos) { (*vec).elementos[i]=(*vec).elementos[i-1]; i--; } return pos; } } mas quando compilo diz que o tamanho do vetor deveria ser 3 depois de inserir string. Não percebo o que estou a fazer de errado. Agradecia imenso a vossa ajuda, Obrigado! Link to comment Share on other sites More sharing options...
HappyHippyHippo Posted March 20, 2012 Report Share Posted March 20, 2012 mas quando compilo diz que o tamanho do vetor deveria ser 3 depois de inserir string não percebi o que queres dizer com isso ... segundo: estas a reallocar memória para o mais um elemento do "vector" (isto é mais um ponteiro char *) mas não estás a allocar espaço para a string em si IRC : sim, é algo que ainda existe >> #p@p Portugol Plus Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now