zezima Posted May 8, 2012 at 06:13 PM Report #453922 Posted May 8, 2012 at 06:13 PM boas tenho um problema que e o seguinte: void booking_code(unsigned int date,unsigned int rcode,unsigned int seat,char *bcode) { unsigned int i; for(i=0;i<5;i++,date=date/42) bcode[i] = (date%42)+((date%42)<10?'0':'A'-10); for(i=5;i<8;i++,rcode=rcode/42) bcode[i]=(rcode%42)+((rcode%42)<10?'0':'A'-10); for(i=8,seat--;i<10;i++,seat=seat/42) bcode[i]=(seat%42)+((seat%42)<10?'0':'A'-10); bcode[i]='\0'; printf("%s\n",bcode); } tenho esta funçao que gera uma string com numeros e letras...so que o meu problema e que quero guardar todas as strings geradas pela funçao,para que as possas depois usar...como e que faço isto sabendo que o numero limite e desconhecido(penso que irei ter que usar malloc ). typedef struct { char reserva[11]; }reservas; O meu objectivo era criar esta estrutura e ir pondo posiçao a posiçao a string gerada...so que o limite max nao e conhecido
pmg Posted May 8, 2012 at 06:23 PM Report #453924 Posted May 8, 2012 at 06:23 PM Pois, tens que usar malloc() (e free(), e, possivelmente realloc()). Basicamente, tens duas hipoteses: a) usas um array (que vai crescendo (duplicando) a medida das necessidades) b) usas uma lista ligada A opcao a) é, talvez, mais simples de programar ... mas necessita de mais copias de dados tornando-se por isso menos eficiente. What have you tried? Não respondo a dúvidas por PM A minha bola de cristal está para compor; deve ficar pronta para a semana. Torna os teus tópicos mais atractivos e legíveis usando a tag CODE para colorir o código!
bsccara Posted May 8, 2012 at 07:37 PM Report #453934 Posted May 8, 2012 at 07:37 PM Basicamente, tens duas hipoteses: a) usas um array (que vai crescendo (duplicando) a medida das necessidades) b) usas uma lista ligada Vais precisar de procurar reservas depois de inseridas ? Um array permite pesquisas muito mais eficientes (pesquisas binárias) do que uma lista ligada, apesar de se perder tempo a copiar dados nos redimensionamentos e/ou inserção no array. Podes no entanto reduzir o tempo perdido nos redimensionamentos fazendo-os por blocos em vez de elemento a elemento. Por exemplo, pré-alocas espaço para 10 e quando não chegar alocas para mais 10 de cada vez.
zezima Posted May 8, 2012 at 07:49 PM Author Report #453941 Posted May 8, 2012 at 07:49 PM obrigado pelas respostas...eu decidi fazer com arrays pq estou mais a vontade e o que fiz foi reservei memoria para um array e defeni tamanho maximo 100 e sempre que encher aumento mais 100 😉
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