Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   программа, обрабатывающая оценки судей в спортивных состязаниях (http://forum.oszone.net/showthread.php?t=235595)

makson41k@vk 29-05-2012 19:23 1924653

программа, обрабатывающая оценки судей в спортивных состязаниях
 
В некоторых видах спортивных состязаний выступление каждого спортсмена оценивается несколькими судьями(в моем случае 5 судей),затем из всей совокупности оценок удаляются наиболее высокая и наиболее низкая,а для оставшихся оценок вычисляется среднее арифметическое,которое и идет в зачет спортсмену.Если наиболее высокую оценку выставило несколько судей,то удаляется только 1 такая оценка,аналогично и с наиболее низкими.
Программа выдает несколько ошибок,а точнее 5.
Пожалуйста,помогите мне.
Код:


#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <string.h>
int i;
struct a
{  char fio[25];
char oc[5];
};
struct in
{  char oc[5];};
int max,min,imax[20],imin[20],p,j,k=0;
float sum[20];
FILE *f;
void input ()
{  clrscr();
  char s;
  a sp;
  f = fopen ("sp.txt", "rb+");
  if (f)
  {  do
      {  fflush (stdin);
        printf ("\n1 - Создать файл заново\n");
        printf ("2 - Добавить данные в существующий файл\n");
        printf ("3 - Отказаться от ввода*\n");
        printf ("\n");
        s = getchar();
        if (s == '1')
          f = fopen ("sp.txt", "wb+");
          else
            if (s == '2')
              {f = fopen ("sp.txt", "ab+");
              {while(!feof(f))
                {fread(&sp[k],sizeof(a),1,f); //Cannot convert 'a' to 'int'
                k++;}                                      Invalid indirection
                k--;}
      while (s != '1' && s != '2' && s != '3');
  } else f = fopen ("sp.txt", "wb+");
  if (s != '3')
  {  do
    {  fflush (stdin);
        clrscr();
        printf ("Введите данные о спортсменах\n");
        printf ("\nФамилия:\n");
        gets (sp.fio);
        i=1;
        printf ("\nОценки:\n");
        for(j=0;j<5;j++)
        scanf("%s",sp.oc[j]);
        fflush (stdin);
        fwrite (&sp, sizeof(sp), 1, f);
        k++;
        printf ("\nПродолжить ввод? [д/н*]\n");
        fflush (stdin);
        s = getchar();
    } while (s == 'д'|| s == 'Д');
    fclose (f);
  }
}
void osn ()                                          //do statement must have while
{  clrscr();
  f = fopen ("sp.txt", "rb");
  in sp;
  for(j=0;j<k;j++)
  {max=0;min=50;sum[j]=0;
  for(i=0;i<5;i++)
    {if(sp[j].oc[i]>max)
    {max=sp[j].oc[i];
      imax[j]=i;
      }
  if(sp[j].oc[i]<min)
    {min=sp[j].oc[i];
    imin[j]=i;
    }
  sum[j]+=sp[j].oc[i];
  }
sum[j]=(sum[j]-sp[j].oc[imax]-sp[j].oc[imin])/3;
}
  close (f);
}

void cht ()
{  clrscr();
  f = fopen ("sp.txt", "rb");
  a sp;
  float sum[20];
  int j;
  printf("--------------- Таблица спортсменов ---------------");
  while (feof(f)==0)
    {
      if (fread(&sp,sizeof(sp),1,f))
      printf("\n    %d  %s  %f ",i,sp.fio,sum[j]);
    }
  printf("\n---------------------------------------------------------");
  getch();
  fclose (f);
}

void edit ()
{  clrscr();
  char s; char txt [25];
  a sp;
  f = fopen ("sp.txt", "ab+");
  if (f)
    do
    {  clrscr ();
        printf ("Введите фамилию спортсмена для редактирования данных\n");
        fflush (stdin);
        gets (txt);
        rewind (f);
        clrscr();
        while (fread (&sp, sizeof(sp), 1, f))
          if (strcmp (txt, sp.fio) == 0)
            {  printf ("Введите новые данные спортсмена**\n");
                printf ("\nФамилия:\n");
                gets (sp.fio);
                fflush (stdin);
                printf ("\nОценки:\n");
                for(j=0;j<5;j++)
                scanf("%s",sp.oc[j]);
                fflush (stdin);
                fwrite (&sp, sizeof(sp), 1, f);
            }
        printf ("\nПродолжить редактирование? [д/н*]\n");
        fflush (stdin);
        s = getchar();
    } while (s == 'д'|| s == 'Д');
    else
      {  printf ("Файл не существует! Нажмите любую клавишу\n");
          getch();
      }
  fclose (f);
}
void main ()
{  clrscr();
  char s;
  do
  {  clrscr();
      printf ("Выберите действие:\n");
      printf ("\n1 - Ввод данных\n");
      printf ("2 - Редактировать данные\n");
      printf ("3 - Прочесть файл\n");
      printf ("4 -Выход\n");
      printf ("\n");
      s = getchar();
      switch (s)
      {  case '1': input (); break;
        case '2': edit (); break;
        case '3': cht (); break;
      }
  } while (s != '4');
  getch ();
}                                                          //Пишет что пропущена пара скобок


Tonny_Bennet 30-05-2012 14:29 1924973

Цитата:

Цитата makson41k@vk
//Пишет что пропущена пара скобок »

хм.. а в какой среде разработки вы работаете над данным проектом?

makson41k@vk 30-05-2012 14:41 1924981

Borland C++


Время: 00:43.

Время: 00:43.
© OSzone.net 2001-