Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Обработка структуры в Си

379
12 марта 2005 года
Fima
109 / / 07.11.2002
Вводится имя, фамилия, пол студента. Надо определить в какой группе процент мужчин больше.
В приведенном примере все устраевает до куска, который ограничен сверху и снизу полосой "/".
Помогите переделать фильтрацию для поиска наибольшего кол-ва студентов мужского пола в группе.
Код:
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>

void main()
{ typedef struct
    {
        char name[256];
      char group_number;
        char surname[256];
        char sex;
    }group;
     group *stud;
 
int count=0,i=0,sum=0,sum1=0,sum2=0,p=0,amount=0;
char sex=0,group1=0;
clrscr();
    printf("Amount of student: ");

    do
    {
      p=scanf("%4d",&count);
      fflush(stdin);
      if ((p!=1) || (count<1)) printf("Warning! Incorrectly input! Please return attempt! \n");
    }
    while ((p!=1) || (count<1));

    stud=(group*)malloc((sizeof(group))*count);

    for (i=0;i<count;i++)
    {
        printf("\nStudent number %d \nname: ",i+1);

        do
        {
          p=scanf("%256s",&((stud+i)->name));
          fflush(stdin);
          if (p!=1) printf("Warning! Incorrectly input! Please return attempt! \n");
        }
        while (p!=1);

      printf("\nStudent surnumber %d \nsurname: ",i+1);

        do
        {
          p=scanf("%256s",&((stud+i)->surname));
          fflush(stdin);
          if (p!=1) printf("Warning! Incorrectly input! Please return attempt! \n");
        }
        while (p!=1);
     
        printf("\nGroup number:");

        do
        {
         group1=getch()-'0';
         if ( (group1>=1) && (group1<=3))
           {
            (stud+i)->group_number=group1;
            printf("%c",group1+'0');
           }
        }
        while ( (group1<1) ||(group1>3));

        printf("\nStudent sex M/F(Male/Female):\n");

        do
        {
         sex=getch();
         if ((sex=='M') || (sex=='m') || (sex=='F') || (sex=='f'))
           {
            (stud+i)->sex=sex;
            printf("\n%c",(stud+i)->sex);
           }
        }
        while ( (sex!='M') && (sex!='m') && (sex!='F') && (sex!='f'));
   }
////////////////////////////////////////////////////////////////////////
        for (i=0;i<count;i++)
        {
         if ( ((stud+i)->sex=='M') || ((stud+i)->sex=='m') )
         {
            if((stud+i)->group_number==1)
                sum+=1;
            if((stud+i)->group_number==2)
                sum1+=1;
            if((stud+i)->group_number==3)
                sum2+=1;
         }
     }
     if((sum>sum1) && (sum>sum2))
        {
        puts("\nIn group number 1 more men that in other.");
      }
      else if((sum1>sum) && (sum1>sum2))
        {
            puts("\nIn group number 2 more men that in other.");
      }
      else if((sum2>sum) && (sum2>sum1))
      {
        puts("\nIn group number 3 more men that in other.");
      }
      else
        puts("\nThere are no group, where men more than in other");
////////////////////////////////////////////////////////////////////////
 getch();
}

Я прикрепил этот же файл в виде исходника...
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог