URGENTE Programacão em C

dregadas

Membro
Pretendo fazer um jogo de football numa tela do MS-DOS:
ja tenho parte do codigo escrito que é a inserção, visulização, edição, com um problema na gravação do ficheiro "equipa.dat" (so grava os segundos elementos introduzidos) e na implementação de um ID para cada equipa para ser mais facil a procura e o relacionamento dos jogos.
A outra coisa que tenho de implementar que é uma tabela classificativa feita com uma matriz de tantas equipas por 7 (Jogos, vitorias, pontos etc) deem-me alguma ideia ou algum programa que ja tenha algo do genero.
Aguardo uma breve resposta.


Codigo:

Código:
main.c:
#include <stdio.h>
#include <stdlib.h>
#include "engine.h"
FILE *fp;
int main()
{
 
int opcao,tamanho;
 
if((fp=fopen("equipa.dat","a+b"))==NULL)printf("\n\tErro na abertura do ficheiro\n"); 
{
printf("ficheiro: %d\n ", ftell(fp));
do {
 
printf("Escolha uma opcao:\n\n");
printf ("1-Introduzir nova equipa\n");
printf ("2-Consultar dados das equipas\n");
printf ("3-Alterar dados das equipas\n");
printf ("4-Eliminar dados das equipas\n"); 
printf ("5-Voltar ao menu\n");
printf("\n");
scanf("%d",&opcao);
getchar();
switch (opcao)
{
case 1:
acrescentar();
break;
 
case 2:
mostrar_futebol();
break;
case 3:
 
break;
 
case 4:
 
break;
 
case 5:
break;
 
default:
printf ("Escolha invalida\n\n\n\n");
}
} while (opcao!=5);
fclose(fp);
}
}
 
engine.c:
 
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <string.h>
#include "estrutura.h"
estrutura();
void acrescentar()
{ 
printf ("\n Preencha as seguintes informacoes relativas a equipa\n");
printf ("Nome da Equipa:\n");
gets (r.equipa);
printf ("Treinador:\n");
gets (r.treinador);
printf ("Estadio:\n");
gets (r.estadio);
 
fseek(fp,-1,SEEK_END);
if (fwrite(&r,sizeof(struct futebol),1,fp)!=0)
printf ("Erro ao gravar.\n\n\n");
else
printf ("Gravado com sucesso\n");
}
void mostrar_futebol()
{
printf (" Nome:%s\n Treinador:%s\n Estadio:%s\n\n\n",r.equipa, r.treinador,r.estadio);
getchar();
}
 
void alterar()
{ 
int cod;
printf("Qual o Nº da Equipa: ");
scanf("%d", & cod);fflush(stdin);
if (cod!=r.codigo-1)
{
printf ("Dados actuais:\n");
mostrar_futebol(r);
printf("\n\nNovos Dados\n\n");
acrescentar(&r);
}
if (cod==r.codigo-1)
printf ("Registo inexistente!!!"); 
}
 
void ler()
{
int i;
printf ("Qual o codigo da equipa?\n");
scanf ("%d",&i);
fseek(fp,sizeof(struct futebol)*(i-1),SEEK_SET);
fread(&r,sizeof(struct futebol),1,fp);
if (r.codigo-1==i-1)
mostrar_futebol();
else printf ("Codigo nao atribuido!!!\n");
getchar();
}
 
void apagar()
{ 
long int cod;
char resp;
printf("Qual o Nº da equipa: ");
scanf("%d",&cod);
if (cod-1!=r.codigo-1)
{
printf("Registo Inexistente ou Problemas no posicionamento!!!");
return;
}
if (cod-1==r.codigo-1)
{
printf("\n\nDados Actuais\n\n");
mostrar_futebol(r);
printf("\n\nApagar o Registo (s/n)???: "); 
resp = getchar();
fflush(stdin);
if (toupper(resp)!='s');
printf("Erro ao apagar\n");
 
// Recuar um Registo no Ficheiro
fseek(fp,-(long)sizeof(struct futebol),SEEK_CUR);
// Reescrever o Registo;
fwrite(&r,sizeof(struct futebol),1,fp);
fflush(fp); /* Despejar os Dados no Disco Rigido */
}
}
 
estrutura.h:
typedef struct futebol
{
char equipa [20], treinador[20], estadio[20];
int codigo; 
 
}fut;
fut r;
 
FILE*fp;
 
Última edição pelo moderador:
Back
Topo