![]() |
|
Pedido atrasado e urgente... linguagem C - Printable Version +- SimRacing Portugal Forum (https://www.simracingportugal.net/forum) +-- Forum: Hardware e Software (https://www.simracingportugal.net/forum/forumdisplay.php?fid=6) +--- Forum: Hardware/Software - Ajuda e Suporte (https://www.simracingportugal.net/forum/forumdisplay.php?fid=63) +--- Thread: Pedido atrasado e urgente... linguagem C (/showthread.php?tid=9246) |
Pedido atrasado e urgente... linguagem C - Alexandre Caetano - 30-05-2009 Bem... "A gente somos burros" e precisavamos de uma ajudita para fazer este trabalhito de faculdade. É para entregar até amanhã as 20 mas é daquelas coisas que PARA QUEM SABE, é canja... Tivemos 4 tardes a debatermo-nos sobre o assunto e mesmo assim quase nada conseguimos fazer. Falo em nós porque é um trabalho de grupo. Gostaria então que alguém pudesse dar um empurrãozito para resolver esta situação. https://mocho.di.fc.ul.pt/file.php/63/docsTPs/trabalho3.0809.pdf Nós até agora temos isto: http://www.2shared.com/file/6016564/7cfdd05/temos.html O trabalho original que é falado, do acrescentar é isto: http://www.2shared.com/file/6016576/f0da8d68/trab2.html A ajuda seria essencialmente na alínea da estrutura. A partir daí as outras até que se vão fazendo. Estamos com dificuldades é na atribuição dos valores à estrutura a gravação da respectiva no ficheiro. Extremamente agradecidos, Alexandre Caetano Pedro Vieira Filipe Carvalho RE: Pedido atrasado e urgente... linguagem C - RicGom - 31-05-2009 Alexandre, correndo o risco de estares a falar de alhos e eu a responder bogalhos , aqui vai :O conjunto typedef struct { int points; /* numero de pontos obtidos */ char player[8]; /* pacman, inky, blinky, pinky or clyde */ time_t sta_time; /* data/hora da entrada no jogo */ time_t end_time; /* data/hora da saida do jogo */ uid_t user; /* identificador do utilizador que jogou */ char logname[16]; /* nome do utilizador que jogou */ } pacman_record_t; define um novo tipo que passa a poder ser utilizado como outro tipo "interno" ao C. Isto é, da mesma forma que quando escreves : int i_numero_inteiro; Estás a declarar a variável i_numero_inteiro como sendo do tipo int, passas a poder declarar algo do género : pacman_record_t v_registo_record; Desta forma declaras a variável v_registo_record, como sendo do tipo pacman_record_t. Depois de declarares essa variável, podes usá-la exactamente da mesma forma que qualquer outra, identificando o nome da variável seguido de "." (ou "->" no caso de ser um apontador) seguido do campo interno da estrutura, tipo : v_registo_record.points=100; ou strcpy(v_registo_record.player, "blinky"); A escrita em ficheiro binário segue a forma : fwrite(&v_registo_record,sizeof(v_registo_record),1, fp ) Parâmetros : - Apontador para "o que" queres gravar - Tamanho unitário do que queres gravar - n vezes o tamanho do parâmetro anterior (Na práctica cada registo em ficheiro fica com o tamanho Parâmetro 2 * Parâmetro 3) - Apontador para o ficheiro onde queres escrever em que fp é um FILE *, previamente definido e que "sofreu" a atribuição dada por um fopen() É claro que o exemplo está descrito para um único registo, mas o princípio é o mesmo para n registos. A forma mais simples de usar a variável para n registos seria definir, por exemplo : pacman_record_t v_registo_record[100]; Desta forma definirias um array com 100 registos, o inconveniente é que tens que saber o limite máximo que nem sempre é conhecido. Outra forma seria criar dinamicamente cada elemento do "array" com apontadores e respectiva alocação de memória, mas isso é outro filme ![]() Se não era nada disto que querias saber, deculpa lá o tempo que te tomei
RE: Pedido atrasado e urgente... linguagem C - RedChico - 02-06-2009 Ah...... Ricas lembranças da minha frequência falhada na uni.... Tbem tive C. 4 dias a correr para acabar um simulador de ATC (air trafic controler), que logicamente não ficou bem. Mais outros tantos, desta vez mais relaxados a fazer um "joguito" com um canhão a atirar contra uns cubos no chão (3D), que pelos poderes da lócgica tbém não ficou bem.... só podia dispara um tiro de cada vez (i.e. tinha que esperar que o projectil atingisse algo/terminado um timer que pus) entre outras coisas.... ![]() ![]() ![]()
|