Форум программистов CodeGuru
16 Июль 2018, 08:57:23 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.

Войти
Новости:
 
   Начало   Помощь Войти Регистрация  
Страниц: [1]   Вниз
  Печать  
Автор Тема: структуры(обработка записей)  (Прочитано 17307 раз)
0 Пользователей и 1 Гость смотрят эту тему.
IRINA555
Новичок
*
Офлайн Офлайн

Сообщений: 6


Просмотр профиля
« : 04 Март 2010, 18:08:15 »


Здраствуйте!
возникли небольшие сложности с решением данной задачи,
помогите пожалуйста разобраться,в чем моя ошибка? а задание было такое-"имеются сведения о посещении пациентами больницы,
фамилия пациента,дата рождения,дата посещения,участок,фамилия врача,диагноз.
1)Выяснить фамилию пациента,которые обращались в больницу осенью и которым поставлен диагноз - грипп".('это выполняется)
2)Выбрать врача,который за 1 квартал принял наибольшее количество больных(сложности именно здесь)
Код:
#include <string.h>
#include <conio.h>
#include <stdio.h>
const int n=3;
const int k=2;
struct pacient
  {  char fiop[10];
   int data1;
  int data2;
  int ychastok;
  int month;
  char fiod[10];
  char diagnoz[10];
  };
   pacient ps[n];
      int main()
{   int i,j,max=0;
      int fiod[k];  // отдельный массив для врача
         for(int i=0;i<n;i++)
  {
 printf("   1)Fio pasienta: ");
  scanf("%s",&ps[i].fiop);
    printf("2)mesaz:");
    scanf("%d",&ps[i].month);
    printf("  3)diagnoz: ");
    scanf("%s",&ps[i].diagnoz);
printf("4)fio doctor :");
    scanf("%s",&ps[i].fiod);
    }
 printf("    V ETO VREMA OBRASHALIS:\n");
 for(int i=0;i<n;i++)
if(ps[i].month>=9 && ps[i].month<=11 && !strcmp(ps[i].diagnoz,"grip"))
printf("%s\n",ps[i].fiop);
          printf("DOKTOR prinavshi naibolshee kolichestvo bolnih:");
         
 for(int i=0;i<k;i++)
if(  ps[i].month>=1 && ps[i].month<=3)     // 1 квартал
printf("%s\n",&ps[i].fiod);       // вывод на экран этого врача

getch ();
     }
Записан
3V
Администратор
Ветеран
*****
Офлайн Офлайн

Сообщений: 1347



Просмотр профиля WWW
« Ответ #1 : 05 Март 2010, 08:01:20 »

2)Выбрать врача,который за 1 квартал принял наибольшее количество больных(сложности именно здесь)

Хм, а в чем конкретно сложности ?

Просто у Вас здесь:
Код:
for(int i=0;i<k;i++)
if(  ps[i].month>=1 && ps[i].month<=3)     // 1 квартал
printf("%s\n",&ps[i].fiod);       // вывод на экран этого врача

выводятся все врачи, которые принимали поциентов (точнее, выводятся фамилии врачей при поиске по поциентам). Может быть вывод несколько раз одного и того же.
Надо же сначала посчитать сколько там каждый врач принял.
А потом найти кто больше всего.

Не знаю, можно ли использовать stl, но если можно, я бы на Вашем месте использовал std::map.
Записан

IRINA555
Новичок
*
Офлайн Офлайн

Сообщений: 6


Просмотр профиля
« Ответ #2 : 05 Март 2010, 12:32:22 »

"посчитать сколько там каждый врач принял. "
можно ли воспользоваться таким кодом? если да,то как? что до до меня никак не доходит  Грустный
Код:
#include<iostream.h>
#include<conio.h>
#include<math.h>
void main ()
{int n;
cout<<"N : ";
cin>>n;
float kol=0,k=1;
while(k>=1)
{
k=n/pow(10,(float)(kol+1));;
kol++; // количество
    }
Записан
3V
Администратор
Ветеран
*****
Офлайн Офлайн

Сообщений: 1347



Просмотр профиля WWW
« Ответ #3 : 05 Март 2010, 20:02:13 »

"посчитать сколько там каждый врач принял. "
можно ли воспользоваться таким кодом? если да,то как? что до до меня никак не доходит  Грустный
Код:
#include<iostream.h>
#include<conio.h>
#include<math.h>
void main ()
{int n;
cout<<"N : ";
cin>>n;
float kol=0,k=1;
while(k>=1)
{
k=n/pow(10,(float)(kol+1));;
kol++; // количество
    }

Э... что это ?
Записан

Страниц: [1]   Вверх
  Печать  
 
Перейти в:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2015, Simple Machines Valid XHTML 1.0! Valid CSS!