Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.02.2010, 19:47   #1
555shiro
Пользователь
 
Регистрация: 03.01.2010
Сообщений: 10
По умолчанию обработка записей

Здраствуйте!
возникли небольшие сложности с решением данной задачи,
помогите пожалуйста разобраться,в чем моя ошибка? а задание было такое-"имеются сведения о посещении пациентами больницы,
фамилия пациента,дата рождения,дата посещения,участок,фамилия врача,диагноз.Выяснить фамилию пациента,которые обращались в больницу осенью и которым поставлен диагноз - грипп".
Код-
Код:
#include <string.h>
#include <conio.h>
#include <stdio.h>
const n=4; // количество пациентов
struct pacient  // структурированный тип
{char fio1[10];
 int data1;  //   дата рождения
 int data2;  // дата посещения
  int ychastok; // участок
  int month;  // месяц
  char fiodoktor[10]; // фамилия врача
  char diagnoz[10];  // диагноз
};
pacient ps[n];
      int main()
            {  int i;
int vrema_goda; //  время года
  pacient ps[n];
for(int i=0;i<n;i++)
  {
 printf("familia1: ");
  scanf("%s",&ps[i].fio1);
 printf(" data1: ");
 scanf("%d",&ps[i].data1);
  printf("data2:");
  scanf("%d",&ps[i].data2);
    printf("month:");
    scanf("%d",&ps[i].month);
    printf("diagnoz: ");
    scanf("%s",&ps[i].diagnoz);
   }}; 
 printf(" fio doctor :"); // выходит ошибка
scanf("%s",&ps[i].fiodoctor);// выходит ошибка
printf("vvedite vremya goda:(1==zima,2==vesna,3==leto,4==osen)\n");
 scanf("%d",&vrema_goda);
 printf("v eto vrema posetili:\n");
 for(int i=0;i<n;i++)
{
if(ps[i].month>=9 && ps[i].month<=11 && ps[i].diagnoz=="Grip")
printf("%s",ps[i].fio);
 }

 getch ();
 }
555shiro вне форума Ответить с цитированием
Старый 18.02.2010, 20:04   #2
counter
Участник клуба
 
Регистрация: 18.10.2008
Сообщений: 1,409
По умолчанию

Код:
if(ps[i].month>=9 && ps[i].month<=11 && !strcmp(ps[i].diagnoz,"Grip"))
Код:
};  // наверное лишняя скобка
 printf(" fio doctor :"); // выходит ошибка
scanf("%s",&ps[i].fiodoctor);// выходит ошибка

Последний раз редактировалось counter; 18.02.2010 в 20:06.
counter вне форума Ответить с цитированием
Старый 19.02.2010, 07:54   #3
555shiro
Пользователь
 
Регистрация: 03.01.2010
Сообщений: 10
По умолчанию

изменил...
Код:
#include <string.h>
#include <conio.h>
#include <stdio.h>
const n=4; // êîëè÷åñòâî ïàöèåíòîâ
struct pacient  // ñòðóêòóðèðîâàííûé òèï
{  char fio1[10];
 int data1;  //   äàòà ðîæäåíèÿ
 int data2;  // äàòà ïîñåùåíèÿ
  int ychastok; // ó÷àñòîê
  int month;  // ìåñÿö
  char fiodoktor[10]; // ôàìèëèÿ âðà÷à
  char diagnoz[10];  // äèàãíîç
};
pacient ps[n];
      int main()
            {  int i;
int vrema_goda; //  âðåìÿ ãîäà
  pacient ps[n];
for(int i=0;i<n;i++)
  {
 printf("familia1: ");
  scanf("%s",&ps[i].fio1);
 printf(" data1: ");
 scanf("%d",&ps[i].data1);
  printf("data2:");
  scanf("%d",&ps[i].data2);
    printf("month:");
    scanf("%d",&ps[i].month);
    printf("diagnoz: ");
    scanf("%s",&ps[i].diagnoz);
printf(" fio doctor :");
    scanf("%s",&ps[i].fiodoctor);          // здесь ОШИБКА,ругается что нет памяти
printf("vvedite vremya goda:(1==zima,2==vesna,3==leto,4==osen)\n");
 scanf("%d",&vrema_goda);
 printf("v eto vrema posetili:\n");
 for(int i=0;i<n;i++)
{
if(ps[i].month>=9 && ps[i].month<=11 && !strcmp(ps[i].diagnoz,"Grip"))
printf("%s",ps[i].fio);
 }
getch ();
 }

Последний раз редактировалось 555shiro; 19.02.2010 в 07:56. Причина: не дописано
555shiro вне форума Ответить с цитированием
Старый 19.02.2010, 18:45   #4
liljon
Форумчанин
 
Регистрация: 03.01.2010
Сообщений: 229
По умолчанию

ну так.. переполнение буфера! Длина фамилии, которую вы вводите больше, чем определено под массив памяти
подпись

Последний раз редактировалось MaTBeu; 19.02.2010 в 19:22.
liljon вне форума Ответить с цитированием
Старый 19.02.2010, 19:21   #5
MaTBeu
Eclipse Foundation
Старожил
 
Аватар для MaTBeu
 
Регистрация: 19.09.2007
Сообщений: 2,604
По умолчанию

А что это такое?
Код:
const n=4;
нужно указывать тип константы
Код:
const int n=4;
MaTBeu вне форума Ответить с цитированием
Старый 20.02.2010, 20:43   #6
555shiro
Пользователь
 
Регистрация: 03.01.2010
Сообщений: 10
По умолчанию

вот наконец то все ошибки исправил,всё работает=)
но есть и дополнительное условие-" выбрать врача,который за 1 квартал принял наибольшее количество больных".Как можно это сделать?
Код:
#include <string.h>
#include <conio.h>
#include <stdio.h>
const int  n=3; 
struct pacient  
{  char fio1[10];
 int data1;  
 int data2;  
  int ychastok; 
  int month;  
  char fiod[10]; 
  char diagnoz[10];  
};
pacient ps[n];
      int main()
 { //возможно ли здесь вести  kol++(то есть счетчик пациентов)
int i;
for(int i=0;i<n;i++)
  {
 printf("   Fio pasienta: ");
  scanf("%s",&ps[i].fio1);
 printf("data rogdenia: ");
 scanf("%d",&ps[i].data1);
  printf("  data posezia:");
  scanf("%d",&ps[i].data2);
    printf("mesaz:");
    scanf("%d",&ps[i].month);
    printf("  diagnoz: ");
    scanf("%s",&ps[i].diagnoz);
printf("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].fio1);
getch ();
 }
555shiro вне форума Ответить с цитированием
Старый 20.02.2010, 22:55   #7
Blade
Software Engineer
Участник клуба
 
Аватар для Blade
 
Регистрация: 07.04.2007
Сообщений: 1,618
По умолчанию

А вы попробуйте ввести, а нам потом расскажите, возможно или нет
Мужество есть лишь у тех, кто ощутил сердцем страх, кто смотрит в пропасть, но смотрит с гордостью в глазах. (с) Ария
Blade вне форума Ответить с цитированием
Старый 20.02.2010, 22:57   #8
vitalik2106
Новичок
Джуниор
 
Регистрация: 20.02.2010
Сообщений: 5
По умолчанию

пожалуйста помогите написать прогу на языке С. Вот задание: Составить программу на языке С, которая просит пользователя вести номер месяца в году и номер года, затем выводит сообщение о том, к какому времени года принадлежит этот месяц (весна, лето, осень, зима) и о количестве дней в нем. Учесть наличие високосных лет (в високосном году в феврале 29 дней). Использовать оператор выбора switch. Предусмотреть защиту программы от ввода некорректных данных ( месяц должен лежать в диапазоне от 1 до 12, а год – от 1 до 2005), допускается ввод только целых чисел.
vitalik2106 вне форума Ответить с цитированием
Старый 22.02.2010, 17:59   #9
555shiro
Пользователь
 
Регистрация: 03.01.2010
Сообщений: 10
По умолчанию продолжение

Код:
                   
#include <string.h>
#include <conio.h>
#include <stdio.h>
const int  n=3;
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;
int max=0;
for(int i=0;i<n;i++)
  {
 printf("   Fio pasienta: ");
  scanf("%s",&ps[i].fiop);
              // printf("data rogdenia: "); -по моему луше эти даты не использовать так как они ни на что не влияют
            // scanf("%d",&ps[i].data1);
           // printf("  data posezia:");
           // scanf("%d",&ps[i].data2);
    printf("mesaz:");
    scanf("%d",&ps[i].month);
    printf("  diagnoz: ");
    scanf("%s",&ps[i].diagnoz);
printf("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 kol=0;kol<n;kol++)
if(kol>max)
printf("%s\n",ps[i].fiod);


getch ();
 }
только вот теперь он наборот выводит врача которому обращались 1 раз
555shiro вне форума Ответить с цитированием
Старый 22.02.2010, 20:14   #10
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

Так у вас max не меняется! Вы его вообще не ищите!
p51x вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Delphi “Обработка экономической информации, организованной в виде массива записей" Shadow_rus Помощь студентам 2 29.11.2009 14:29
Поиск записей skiffter Помощь студентам 2 10.11.2009 17:54
Обработка массива записей. TurboPascal Nosferatu Помощь студентам 27 17.05.2009 20:29
Сортировка записей. Whiplash Паскаль, Turbo Pascal, PascalABC.NET 3 17.12.2008 21:39
Обработка записей C++ Mart Общие вопросы C/C++ 3 25.09.2008 22:41