Сейчас на форуме: zds, UniSoft (+6 невидимых)

 eXeL@B —› Программирование —› Turbo C
Посл.ответ Сообщение

Ранг: 88.2 (постоянный), 58thx
Активность: 0.110.04
Статус: Участник

Создано: 22 декабря 2012 16:35 · Поправил: Mishar_Hacker
· Личное сообщение · #1

Ребята курсовая помогите
Задание
Code:
  1. 37. Дан файл, содержащий информацию о сотрудниках отдела учреждения.      Структура записи файла:
  2. -        фамилия и инициалы сотрудника;
  3. -        год рождения;
  4. -        должность;
  5. -        оклад.
  6. Написать программу, выдающую
  7. -        список сотрудников старше заданного возраста;
  8. -        список сотрудников, занимающих указанную должность;
  9. -        средний оклад сотрудников отдела.

Пример кода
Code:
  1. #include <stdio.h>
  2. #include <string.h>
  3. #include <conio.h>
  4. #include <stdlib.h>
  5. #include <time.h>
  6.  
  7. #define  DL_FIO   25         /* длина поля фамилии в файле */   
  8. #define  DL_GR    5  /* длина поля года рождения */
  9. #define  DL_DATA  9         /* длина поля даты поступления */
  10. #define  DL_DIAG  40        /* макс. длина диагноза */
  11.  
  12. struct pacient       /* структура записи входного файла */
  13. {  char  fio[DL_FIO]; /* фамилия и инициалы пациента */
  14.    char  gr [DL_GR]; /* год рождения */
  15.    char  data[DL_DATA]; /* дата поступления */
  16.    char  diag[DL_DIAG+2]; /* диагноз + '\n' + '\0' */
  17. };
  18.  
  19.   /* прототипы функций */
  20. void Date(FILE *f);
  21. void MiddleAge(FILE *f);
  22. void Diagnos(FILE *fin);
  23. int  Age (char gr[DL_GR]);
  24.  
  25.        /*----------------------*/
  26.        /*    главная функция   */
  27.        /*----------------------*/
  28.  
  29. int main()
  30. {
  31.          FILE *f; /* ссылка на входной файл */
  32.          char n; /* номер пункта меню */
  33.  
  34.          clrscr();
  35.          f= fopen("patient.txt", "r");
  36.          if (f==NULL)
  37.          {  puts ("Файл patient.txt не найден");
  38.          getch();
  39.             return 1;
  40.          }
  41.          do
  42.          {  puts ("\n========================================================");
  43.             puts ("Выберите номер пункта меню:");
  44.             puts ("1 - вывод списка пациентов, поступивших в заданный день");
  45.             puts ("2 - определение среднего возраста пациентов");
  46.             puts ("3 - запись в новый файл списка пациентов с заданным диагнозом");
  47.             puts ("4 - выход");
  48.             puts(("------------------------------------------------------");
  49.             n = getche();
  50.             switch(n)
  51.             {
  52.                    case '1': Date(f); break;
  53.                    case '2': MiddleAge(f); break;
  54.                    case '3': Diagnos(f); break;
  55.                    case '4': break;
  56.                    default: puts("\nНужно вводить номер пункта от 1 до 4");
  57.             }
  58.             if (n!='4')
  59.             {  puts("\nДля продолжения нажмите любую клавишу");
  60.                getch();
  61.             }
  62.          }
  63.          while (!= '4');
  64.          fclose(f);
  65.          return 0;
  66. }
  67.  /*--------------------------------------*/
  68.  /*   Функция вывода списка пациентов,   */
  69.  /*     поступивших в заданный день      */
  70.  /*--------------------------------------*/
  71.  
  72. void Date (FILE *f)
  73. {
  74.          char zdata[DL_DATA]; /* заданная дата поступления */
  75.          int n=0; /* порядковый номер пациента в выводимом списке */
  76.          struct pacient tz; /* текущая запись файла */
  77.  
  78.          puts ("\nВведите дату поступления в виде: дд.мм.гг");
  79.          gets  (zdata);
  80.          rewind(f);
  81.          while (fgets(&tz,sizeof(struct pacient),f) != NULL)
  82.                  if (strncmp(tz.data,zdata,DL_DATA-1) == 0 )
  83.                  {  if (n==0)
  84.                     { puts("№ Фамилия И.О. Год рожд. Диагноз");
  85.                       puts("--------------------------------------------------");
  86.                     }
  87.                     tz.gr[DL_GR - 1] = '\0';
  88.                     printf ("%d. %s %s", ++n, tz.fio, tz.diag);
  89.                  }
  90.          if (n==0)  puts ("\nНет пациентов, поступивших в заданный день");
  91. }        
  92.  
  93.  /*-------------------------------------------------*/
  94.  /* функция определения среднего возраста пациентов */
  95.  /*-------------------------------------------------*/
  96.  
  97. void MiddleAge(FILE *f)
  98. {
  99.          struct pacient tz; /* текущая запись файла */
  100.          float  s = 0; /* сумма возрастов всех пациентов */
  101.          int k = 0; /* количество пациентов в файле */
  102.  
  103.          rewind (f);
  104.          while (fgets(&tz,sizeof(struct pacient),f) != NULL)
  105.          {  s += Age(tz.gr);
  106.             k++;
  107.          }
  108.          if (k) printf ("\nСредний возраст пациентов:%.1f\n",s/k);
  109.          else puts ("\nФайл patient.txt пустой");
  110. }
  111.  
  112.  /*-----------------------------------------------*/
  113.  /* функция определения возраста по году рождения */
  114.  /*-----------------------------------------------*/
  115.  
  116. int  Age (char gr[DL_GR])
  117. {
  118.          int igr = atoi(gr); /* год рождения типа int */
  119.          long timer; /* число секунд, прошедших с начала 1970 года
  120.                                        до текущего момента */
  121.          int year; /* текущий год */
  122.          struct tm *t; /* указатель на структуру, содержащую текущую
  123.                                     дату и время */
  124.          
  125.          timer = time (NULL); /* получение числа секунд, прошедших с начала 1970 года */
  126.          t = localtime(&timer);/* преобразование в структуру типа tm */
  127.          year = 1900+ t->tm_year; /* определение тек. года */
  128.          return year - igr;
  129. }
  130.  
  131.  /*------------------------------------------------*/
  132.  /*  функция записи в новый файл списка пациентов  */
  133.  /*                с заданным диагнозом               */
  134.  /*------------------------------------------------*/
  135.  
  136. void Diagnos(FILE *fin)
  137. {
  138.          char  fname[13]; /* имя выходного файла */
  139.          FILE *fout; /* ссылка на выходной файл */
  140.          char zdiag[DL_DIAG+1]; /* заданный диагноз */
  141.          int net=1; /* признак того, что нет пациентов с заданным диагнозом */
  142.          struct pacient tz; /* текущая запись файла */
  143.  
  144.          puts ("\nВведите имя выходного файла");
  145.          gets  (fname);
  146.          fout = fopen(fname,"w");
  147.          puts ("Укажите диагноз");
  148.          gets (zdiag);
  149.          rewind(fin);
  150.          while (fgets(&tz,sizeof(struct pacient),fin))
  151.                  if (strstr(tz.diag,zdiag))
  152.                  {  net=0;
  153.                     tz.data[DL_DATA-1] = '\n';
  154.                     fwrite (&tz,sizeof(struct pacient) - DL_DIAG - 2,1,fout);
  155.                  }
  156.       fclose (fout);
  157.          if (net) { puts ("Нет пациентов с заданным диагнозом");
  158.                  unlink(fname); /* удаление созданного файла */
  159.                }
  160.          else puts("Запись в файл завершена");
  161.          
  162. }
  163.  

Прошу не Флудить Если есть желание помочь




Ранг: 1053.6 (!!!!), 1078thx
Активность: 1.060.81
Статус: Участник

Создано: 22 декабря 2012 16:39
· Личное сообщение · #2

что то я не помню на форуме раздела - помощь с курсовыми....
на васм, на руборд, на винград... идите, там спец темы для этого




Ранг: 462.8 (мудрец), 468thx
Активность: 0.280
Статус: Участник
Only One!

Создано: 22 декабря 2012 16:43 · Поправил: OnLyOnE
· Личное сообщение · #3

Mishar_Hacker
А ты сам не хочешь сделать этот фаршмак?
Если ты считаешь себя кодером... то такое не будешь просить делать...
Здесь не форум халявщиков..

-----
aLL rIGHTS rEVERSED!




Ранг: 88.2 (постоянный), 58thx
Активность: 0.110.04
Статус: Участник

Создано: 22 декабря 2012 16:44
· Личное сообщение · #4

OnLyOnE
Я больше крякаю чем пишу)
reversecode
Ну я просил помочь а не учить меня)



Ранг: 488.1 (мудрец), 272thx
Активность: 0.350
Статус: Участник

Создано: 22 декабря 2012 16:46
· Личное сообщение · #5

OnLyOnE иди нафиг спать.. он же хакер. хакеры никогда не кодят ток пиз***ят чужой код. не мешай человеку самообразовываться

-----
Наша работа во тьме, Мы делаем, что умеем. Мы отдаем, что имеем, Наша работа во тьме....


| Сообщение посчитали полезным: OnLyOnE, Mishar_Hacker


Ранг: 1053.6 (!!!!), 1078thx
Активность: 1.060.81
Статус: Участник

Создано: 22 декабря 2012 16:46
· Личное сообщение · #6

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

| Сообщение посчитали полезным: OnLyOnE


Ранг: 462.8 (мудрец), 468thx
Активность: 0.280
Статус: Участник
Only One!

Создано: 22 декабря 2012 16:46
· Личное сообщение · #7

Mishar_Hacker
Кодер может не быть крякером
Когда крякер всегда кодер)) поправьте меня ..

-----
aLL rIGHTS rEVERSED!





Ранг: 88.2 (постоянный), 111thx
Активность: 0.070.01
Статус: Участник

Создано: 22 декабря 2012 16:48
· Личное сообщение · #8

Вот такое оно, нынешнее поколение, ничего сами не умеют

| Сообщение посчитали полезным: OnLyOnE


Ранг: 462.8 (мудрец), 468thx
Активность: 0.280
Статус: Участник
Only One!

Создано: 22 декабря 2012 17:02
· Личное сообщение · #9

Mishar_Hacker
Короче.. иди учись..

-----
aLL rIGHTS rEVERSED!




Ранг: 29.9 (посетитель), 9thx
Активность: 0.020.06
Статус: Участник

Создано: 22 декабря 2012 17:08 · Поправил: [X-Ray]
· Личное сообщение · #10

эх, молодежь
иди, учи уроки, оболтус. Вот тебе часть кода, остальное сам дописывай

#define DL_FIO 25 /* длина поля фамилии в файле */
#define DL_OCCUP 40 /* макс. длина должности */


struct employee
{ char fio[DL_FIO];
int gr;
char dolgnost[DL_OCCUP];
int payment;
};


void AboveAge(FILE *f, int age) // поиск тех, у кого возраст выше заданного
{
employee e;
int k = 0;

rewind (f);
while (fgets(&e,sizeof(employee),f) != NULL)
{
if (e.gr > age)
printf("%s\n", e.fio);
k++;
}
if (!k) puts ("\nФайл patient.txt пустой");
}

| Сообщение посчитали полезным: Mishar_Hacker

Ранг: 88.2 (постоянный), 58thx
Активность: 0.110.04
Статус: Участник

Создано: 22 декабря 2012 18:27
· Личное сообщение · #11

[X-Ray]
Я программист 2 курса))



Ранг: 29.9 (посетитель), 9thx
Активность: 0.020.06
Статус: Участник

Создано: 22 декабря 2012 18:43
· Личное сообщение · #12

Mishar_Hacker, вот когда будешь проги писать САМ, тогда будешь программистом



Ранг: 88.2 (постоянный), 58thx
Активность: 0.110.04
Статус: Участник

Создано: 22 декабря 2012 18:46
· Личное сообщение · #13

[X-Ray]
Я могу писать кегены)




Ранг: 158.5 (ветеран), 219thx
Активность: 0.120.01
Статус: Участник

Создано: 22 декабря 2012 19:00
· Личное сообщение · #14

Mishar_Hacker пишет:
Я могу писать кегены)

Но, походу, не на Turbo C

Да и, вообще, тема куда-то не в ту сторону повернула...

-----
One death is a tragedy, one million is a statistic.





Ранг: 2014.5 (!!!!), 1278thx
Активность: 1.340.25
Статус: Модератор
retired

Создано: 22 декабря 2012 19:03
· Личное сообщение · #15

К форуму отношения не имеет.


 eXeL@B —› Программирование —› Turbo C
Эта тема закрыта. Ответы больше не принимаются.
   Для печати Для печати