B@rney Posted June 6, 2012 Report Share Posted June 6, 2012 Ola a todos.Bom gente como todos vão notar sou novo aqui no forum e tambem estou começando a trabalhar agora com FW. Eu estou com um programa aqui e preciso implementar no mesmo uma fila(Queue),onde eu armazene dados como nome, numero de matricula,etc, e tenha uma variavel numerica de auto incremento para registrar sua posição na fila.Mas não estou conseguindo, porque até então eu trabalhava muito com C++ e la nos utilizamos o conceito de ponteiro(*) para indicar e localizar espoços de memoria dentro do array mas no FW não sei se isso funciona. Preciso de ajuda. Editado por - B@rney on 06/06/2012 09:55:35 Quote Link to comment Share on other sites More sharing options...
B@rney Posted June 6, 2012 Author Report Share Posted June 6, 2012 Ola a todos.Bom gente como todos vão notar sou novo aqui no forum e tambem estou começando a trabalhar agora com FW. Eu estou com um programa aqui e preciso implementar no mesmo uma fila(Queue),onde eu armazene dados como nome, numero de matricula,etc, e tenha uma variavel numerica de auto incremento para registrar sua posição na fila.Mas não estou conseguindo, porque até então eu trabalhava muito com C++ e la nos utilizamos o conceito de ponteiro(*) para indicar e localizar espoços de memoria dentro do array mas no FW não sei se isso funciona. Preciso de ajuda. Editado por - B@rney on 06/06/2012 09:55:35 Quote Link to comment Share on other sites More sharing options...
aferra Posted June 6, 2012 Report Share Posted June 6, 2012 Olá Barney, seja bem vindo... Não entendi muito bem qual o seu problema, mas neste topico existe uma discussão boa sobre o assunto, mas se mesmo assim não clarear as duvidas poste o que vc está tentando fazer... Sucessos Um grande Abraço Alessandroid=blue> FW9.07 + xHb121 + CDX Fico feliz com os Meus erros, pois eles me apontam a direção para o acerto.id=red> Quote Link to comment Share on other sites More sharing options...
vailtom Posted June 6, 2012 Report Share Posted June 6, 2012 Acredito que este comportamento pode ser obtido com o uso de um array, veja um exemplo: AAdd( aQueue, { "001", "Joao" } ) ? Len( aQueue ) AAdd( aQueue, { "002", "Maria" } ) ? Len( aQueue ) AAdd( aQueue, { "003", "Marcos" } ) ? Len( aQueue ) ? ? "Localizando numero 002:", aScan( aQueue, {|a| a[1] == '002' }) ? FOR i := 1 TO Len( aQueue ) IF ( aQueue[i,1] == '003' ) ? 'Achei o item 3:', aQueue[i,2] EXIT ENDIF NEXTid=code>id=code>Espero ter ajudado. Att, Vailton Renato Quote Link to comment Share on other sites More sharing options...
B@rney Posted June 6, 2012 Author Report Share Posted June 6, 2012 No caso em C++ pra eu fazer oque preciso fazer agora em fW faria desta forma: #include "stdafx.h" #include #include #define N 100 struct fila { int ini, fim; float vet[N]; } Fila* criaFilaVazia(void){ Fila* f = (Fila*) malloc(sizeof(Fila)); f->ini = f->fim = 0; return f; } int incremento(int i){ return (i+1)%N; } void push(Fila* f, float v){ if (incremento(f->fim) == f->ini) { printf("Capacidade da fila estourou.\n"); exit(1); } f->vet[f->fim] = v; f->fim = incremento(f->fim); } float pop(Fila* f){ float v; if (vazia(f)) { printf("Fila vazia.\n"); exit(1); } v = f->vet[f->ini]; f->ini = incr(f->ini); return v; } int vazia (Fila* f){ return (f->ini == f->fim); } void libera (Fila* f){ free(f); } Mas em FW nãosei se o conceito de ponteiro(*) funciona. Quote Link to comment Share on other sites More sharing options...
aferra Posted June 6, 2012 Report Share Posted June 6, 2012 Olá Barney. Acho que a forma como o Vailton passou é o que vc precisa. Um grande Abraço Alessandroid=blue> FW9.07 + xHb121 + CDX Fico feliz com os Meus erros, pois eles me apontam a direção para o acerto.id=red> Quote Link to comment Share on other sites More sharing options...
vailtom Posted June 6, 2012 Report Share Posted June 6, 2012 Vamos lá então, desconfio que em xBase (FW,Clipper,Harbour,etc) pra fazer o que voce quer com "ponteiros" ficará desta forma utilizando array: function criaFilaVazia return array(0) function push(f, v) if (len(f) >= N) msginfo("Capacidade da fila estourou.") return .f. endif AAdd( f, v ) return .t. function pop(f) local v if (len(f)<1) msginfo("Fila vazia.") return .f. endif * Fiquei com duvida nesta parte, mas acho que seria assim... v := f[1] aDel( f, 1 ) aSize(f,len(f)-1) return vid=code>id=code>Nota: Existe o tipo de dados "ponteiro" em Harbour ou xHarbour, mas não para a funcionalidade que você está acostumado pois não podem ser manipulados através da aritmética de ponteiros como existe em C e são somente leitura.Att, Vailton Renato Quote Link to comment Share on other sites More sharing options...
mkyx Posted June 6, 2012 Report Share Posted June 6, 2012 Bem, como vc conhece bem o C++, não existe ponteiros em FiveWin, faça o seguinte, para cada comando do C++, existe um correspondente em FW, (for, return, do while, do case, aadd, etc), conheça todos eles, aqui no forum, vc tem uma gama de exemplos, e apostilas, não se desespere, aprenda bem o FW, pois é a linguagem mais simples que existe, com um poder enorme de programação. Com os conhecimentos que vc tem de C++, vc vai arrebentar em FW. Não desista, pois a dor temporária, lhe dará um prazer enorme. Espero ter ajudado. Rikko Guaratinguetá - SP (12) 8829-8088 E-Mail: mkyx@ig.com.br pardes.mky@hotmail.com MSN:pardes.mky@hotmail.com www.adentech.com.br www.rmahost.com xH 1.1.0 Hb 8.02 - BCC 55 Quote Link to comment Share on other sites More sharing options...
B@rney Posted June 6, 2012 Author Report Share Posted June 6, 2012 Agradeço por toda a ajuda que vocês vem me dando e pode deixa que não vo desisti não.Irei pegar o exemplo que nosso amigo Vailtom postou e vou tentar implementar aqui no codigo.Mais uma vez eu agradeço. Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.