ptrci Posted December 30, 2006 at 11:25 PM Report #73585 Posted December 30, 2006 at 11:25 PM Ola a todos estou a tentar fazer uma função que faz uma pesquisa numa estrutura em que a informação é guardada num vector, já ando as volta com isto e não consigo. tenho esta estretura: /* --------------------------- Inicio Estretura motas ---------------------------------------------*/ typedef struct { /* O typedef server para não estar a repetir a palavra stuct no código */ int agrupamento; /*Tipo de agrupamento: motos, carros, camiões*/ int numero; /*Numero de indentificação */ int tempo; /*Tempo ( temp acumualdao das etapas hh-mm-ss );*/ int hh; /* Tempo horas */ int mm; /* Tempo minutos */ int ss; /* Tempo segundos */ int classificacao; /* Número de classificativas concluidas */ char equipa [limequipa]; /*Equipa*/ char marca [limmarca]; /*Marca*/ char modelo [limmodelo]; /*Modelo*/ char piloto [limpiloto]; /*Nome Piloto */ }motas; /* --------------------------- Fim Estretura motas ---------------------------------------------*/ os dados são guardados neste vector: motas dakar1[250]; /* vector 250 ( motos) */ alguém pode ajudar. Isto é um trabalho sobe o Dakar que tenho de entregar, parece uma estupidez já ando a mais de três dias as voltas com isto e não sou capaz de fazer isto.
magician Posted December 30, 2006 at 11:27 PM Report #73587 Posted December 30, 2006 at 11:27 PM Explica la o que queres ao certo :S I haven’t lost my mind; it’s backed up on DVD somewhere!
ptrci Posted December 30, 2006 at 11:38 PM Author Report #73588 Posted December 30, 2006 at 11:38 PM Pois esqueci me . Digamos que inseri uma equipa com o n.º de identificação : "4" ( [motas.numero] ) . E quero fazer uma pesquisa em que encontre o n.º de identificação " 4" , e que diga o nome da equipa; piloto; marca ; ou seja os dados da estrutura que pertencem ao n.º de identificação 4.
merlin3000 Posted December 31, 2006 at 12:00 AM Report #73594 Posted December 31, 2006 at 12:00 AM Pelo que percebi queres uma função deste tipo. int pesquisa(int n_id) { int i; for(i=0;i<250;i++) if(dakar[i].numero==n_id) { printf(".........Os dados que queres"); return 1; } return 0; } Podia igualmente ser feito com um while, mas a lógica é a mesma, percorrer dakar1 até ao fim. Se encontrarmos um numero de identificação compativel imprimes os seus dados. Retornei 0 só para ter algo que me diga no código se encontrou ou não, se não quiseres podes simplesmente dizer que quando encontrar o número i=250 isso terminaria o for; se o vector dakar não for global. Tens que enviá-lo também para a função. Criar é Divertido
magician Posted December 31, 2006 at 12:02 AM Report #73595 Posted December 31, 2006 at 12:02 AM Pa faz algo do tipo.... //n é o numero que tás a procura. int i = 0; while(dakar1[i]->numero != n && i < 250){ i++; } printf("%d\n",dakar1[i]->agrupamento); printf("%d\n",dakar1[i]->tempo); printf("%d\n",dakar1[i]->classificacao); //..... e por ai fora I haven’t lost my mind; it’s backed up on DVD somewhere!
magician Posted December 31, 2006 at 12:05 AM Report #73596 Posted December 31, 2006 at 12:05 AM Pelo que percebi queres uma função deste tipo. int pesquisa(int n_id) { int i; for(i=0;i<250;i++) if(dakar[i].numero==n_id) { printf(".........Os dados que queres"); return 1; } return 0; } se o vector dakar não for global. Tens que enviá-lo também para a função. Essa tá mais formal 👍 e talvez mais simples.. I haven’t lost my mind; it’s backed up on DVD somewhere!
merlin3000 Posted December 31, 2006 at 12:11 AM Report #73600 Posted December 31, 2006 at 12:11 AM lol tava agora a modificar o post para por a hipótese do while ? pessoalmente até gosto mais de usar whiles mas quando percorro vectores por alguma razão acho mais legivel o for 😛 Criar é Divertido
ptrci Posted December 31, 2006 at 12:38 AM Author Report #73608 Posted December 31, 2006 at 12:38 AM Obrigado afinal era simples. era só fazer dakar[i].numero . E eu nunca punha o [i]. exprimentei tudo menos com o [i]
Hipnoted Posted December 31, 2006 at 12:43 AM Report #73609 Posted December 31, 2006 at 12:43 AM @magician: cuidado com os apontadores ("->") no teu exemplo, é que ele não usa isso. 👍 "Nunca discutas com um idiota. Eles arrastam-te até ao seu nível e depois ganham-te em experiência"
ptrci Posted December 31, 2006 at 12:45 AM Author Report #73611 Posted December 31, 2006 at 12:45 AM eu uso " -> " para inserir dados e " . " para consultar.
magician Posted December 31, 2006 at 12:49 AM Report #73613 Posted December 31, 2006 at 12:49 AM A"->" e o "." tem a mesma funcionalidade como programo muito em Java normalmente uso o "." mas não sei porque em C uso sempre a "->" tal como em php. I haven’t lost my mind; it’s backed up on DVD somewhere!
ptrci Posted December 31, 2006 at 12:52 AM Author Report #73614 Posted December 31, 2006 at 12:52 AM A"->" e o "." tem a mesma funcionalidade como programo muito em Java normalmente uso o "." mas não sei porque em C uso sempre a "->" tal como em php. Não sabia. que tinham a mesma funcionalidade a mim explicaram que eram diferentes.
Hipnoted Posted December 31, 2006 at 12:56 AM Report #73616 Posted December 31, 2006 at 12:56 AM A"->" e o "." tem a mesma funcionalidade como programo muito em Java normalmente uso o "." mas não sei porque em C uso sempre a "->" tal como em php. Não sabia. que tinham a mesma funcionalidade a mim explicaram que eram diferentes. E são diferentes. Quando usas apontadores usas o -> quando usar arrays usas o . "Nunca discutas com um idiota. Eles arrastam-te até ao seu nível e depois ganham-te em experiência"
magician Posted December 31, 2006 at 12:59 AM Report #73617 Posted December 31, 2006 at 12:59 AM Eu uso sempre a "->" tecnicamente está a apontar para uma variável da estrutura. I haven’t lost my mind; it’s backed up on DVD somewhere!
merlin3000 Posted December 31, 2006 at 01:00 AM Report #73619 Posted December 31, 2006 at 01:00 AM Ambos dependem do uso que lhe quiseres dar é apenas um auxílio visual. Por exemplo: #include <stdio.h> #include <stdlib.h> typedef struct { int v1; int v2; } estrutura; int main() { estrutura a, *b; b=&a; a.v1=1; a.v2=2; printf("%d - %d",a.v1, b->v2); return 0; } o -> serve para que em vez de *b.v2 escrevas b->v2. Ou seja é a tradução visual para código da expressão "o elemento apontado por", se tentares usar nese caso em vez de a.v1, a->v1 vai dar erro porque a não é um apontador. Criar é Divertido
magician Posted December 31, 2006 at 01:02 AM Report #73623 Posted December 31, 2006 at 01:02 AM Precisamente por isso é que uso a "->" é muito mais simples, para alem disso quando consultamos uma struct estamos a apontar para argumentos da mesma. I haven’t lost my mind; it’s backed up on DVD somewhere!
merlin3000 Posted December 31, 2006 at 01:05 AM Report #73626 Posted December 31, 2006 at 01:05 AM Mas nem sempre serve usar o ->. Não sabia que já tinhas respondido e alterei a minha resposta anterior. Vê na última linha o exemplo que eu dou. Criar é Divertido
magician Posted December 31, 2006 at 01:09 AM Report #73629 Posted December 31, 2006 at 01:09 AM Sim mas como eu normalmente quando trabalho com structs uso alocação dinâmica de memoria as "->" tão sempre a bombar 👍 I haven’t lost my mind; it’s backed up on DVD somewhere!
merlin3000 Posted December 31, 2006 at 01:13 AM Report #73633 Posted December 31, 2006 at 01:13 AM Lol usando apontadores nem se discute. o "->" torna tudo muito mais legível, pelo menos na minha opinião. Para ser sincero até nunca as tinha usado em C só em C++ mas quando fizes-te o teu exemplo fui testar a ver se se realmente dava. Pensava que era mais uma coisa exclusiva do c++ ? Criar é Divertido
magician Posted December 31, 2006 at 01:17 AM Report #73637 Posted December 31, 2006 at 01:17 AM Eu não domino muito C sou mais Java 👍 mas como tive 3 trabalho para fazer em C tive que aprender há força sozinho e fiz sempre com as "->" e foi sempre o que usei por isso é que não uso os "." no C 😉 I haven’t lost my mind; it’s backed up on DVD somewhere!
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