Двоичный файл, структуры (С++)

Ответить
FaHTuK
Сообщения: 2
Зарегистрирован: 14 май 2008, 13:18

Помогите с задачкой:
a)записать таблицу в двоичный файл;
b)вывести таблицу на экран из файла;
c)выполнить задание, соответствующее варианту

Текст задачи:
Создать таблицу со следующими данными о спортивной команде: название, из какого города, сколько игр сыграла, сколько набрала очков. Вывести на экран данные о спортивной команде, которая больше всех набрала очков.

Помогите буду очень признателен(просто я эту тему ваще не понял:confused :)
P.S. извеняюсь за название темы просто главтему прочитал ток потом
NAtive
Сообщения: 1
Зарегистрирован: 15 май 2008, 11:17

Могу помочь сделать.

Пиши на мыло mitrit@rambler.ru или в аську 420-454-425
Andrey_06
Сообщения: 5
Зарегистрирован: 15 май 2008, 13:40

подобная задачка. измени имена некоторых переменных, еще измени параметры printf по своим нуждам.
если есть вопросы, то пиши.

Код: Выделить всё

#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <stdlib.h>
#define KEY_FREE (-14)
#define VLEN 20

struct data
 {
  short b_key;
  char b_name[VLEN];
  char address[VLEN];
  int number;
  int skidka;
 };

char BASEF[]="d:\\base\\1.dat";
FILE *fbase;
struct data tmp;


int bget(int key);
int zapros();
int bput(int key, char *name, char *sname, int number, int skidka);
void bappend(int key, char *name,char *sname, int number,int skidka);
void shapka();
void find_prog();
void bprint();
void menu();
void clear();

void main()
 {
  clrscr();
  fbase = fopen(BASEF,"a+");
  menu();
  fclose(fbase);
 }


void menu()
 {
  char ch;
  char c;
  do
   {
    printf("\n0-dobavlenie zapisi\n1-vivesti na ekran vsu tablicu\n2-vivesti na ekran informaciu pokupatele s maks skidkoi\n3-ochistit' tablicu\n4-vihod\n");
    ch = getch();
	switch(ch)
		{
		 case '0':
		   {
		    do
		     {
		      zapros();
		      c = getch();
		     }while (c!=27);break;
		   }
		 case '1': bprint(); getch(); break;
		 case '2': find_prog();getch(); break;
		 case '3': clear(); break;
		}
   clrscr();
   }while (ch!='4');
 }

void find_prog()
 {
  struct data prog = {0,"noname","noname",0,0};
  rewind(fbase);
  while (fread(&tmp,sizeof(struct data),1,fbase)==1)
   {
    if (tmp.skidka>prog.skidka)
     {
      prog.skidka = tmp.skidka;
      prog.number = tmp.number;
      prog.b_key = tmp.b_key;
      strncpy(prog.b_name,tmp.b_name,VLEN);
      strncpy(prog.address,tmp.address,VLEN);
     }
   }
  printf("\n\nbolshe vsegu skidka u pokupatelya\n\n");
  shapka();
  printf("#%3d|%11s|%7s|%6d|%8d|\n",prog.b_key,prog.b_name,prog.address,prog.number,prog.skidka);
 }

int bget(int key)
 {
  int n;
  rewind(fbase);
  n=0;
  while(fread(&tmp,sizeof(struct data),1,fbase))
   {

    if (tmp.b_key == key)
     {
      return (n);
     }
    n++;
   }
   return(-1);
 }

void bappend(int key, char *name,char *sname, int number,int skidka)
 {
  struct data newn;
  rewind(fbase);
   newn.b_key = key;
   newn.number = number;
   newn.skidka = skidka;
   strncpy(newn.b_name,name,VLEN);
   strncpy(newn.address,sname,VLEN);
  fwrite(&newn,sizeof(struct data),1,fbase);
 }


int bput(int key, char *name, char *sname, int number, int skidka)
 {
  int i = bget(key);
  if(i != -1)
   {
    return(-1);
   }
  i = bget(KEY_FREE);
  if(i==-1)
   {
    bappend(key,name,sname,number,skidka);
    return 0;
   }
  return 0;
 }

void shapka()
 {
  int i;
  printf(" No |   name    |address|number|skidka %|\n");
  for (i=0;i<4;i++)
   {
    printf(" ");
   }
  printf("|");
  for (i=0;i<11;i++)
   {
    printf(" ");
   }
  printf("|");
  for (i=0;i<7;i++)
   {
    printf(" ");
   }
  printf("|");
  for (i=0;i<6;i++)
   {
    printf(" ");
   }
  printf("|");
  for (i=0;i<8;i++)
   {
    printf(" ");
   }
  printf("|\n");
 }

void bprint()
 {
  shapka();
  rewind(fbase);
  while (fread(&tmp,sizeof(struct data),1,fbase)==1)
   {
    printf("#%3d|%11s|%7s|%6d|%8d|\n",tmp.b_key,tmp.b_name,tmp.address,tmp.number,tmp.skidka);
   }
 }

int zapros()
 {
  short key;
  int number,skidka;
  char *name;
  char *address;
  scanf("%d %s %s %d %d",&key,name,address,&number,&skidka);
  bput(key,name,address,number,skidka);
  return 0;
 }

void clear()
 {
  FILE *f;
  f = fopen(BASEF,"w");
  fclose(f);
 }
FaHTuK
Сообщения: 2
Зарегистрирован: 14 май 2008, 13:18

Огромное человеческое спасибо
Ответить