Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Для новичков > обработка записей


Автор: 555shiro 17.2.2010, 21:36
Здраствуйте!
возникли небольшие сложности с решением данной задачи,
помогите пожалуйста разобраться,в чем моя ошибка? а задание было такое-"имеются сведения о посещении пациентами больницы,
фамилия пациента,дата рождения,дата посещения,участок,фамилия врача,диагноз.Выяснить фамилию пациента,которые обращались в больницу осенью и которым поставлен диагноз - грипп".

Код
#include <iostream>
#include <string.h>
#include <conio.h>
#include <stdio.h>
const n=4; //количество пациентов произвольное
const k=3; // количество врачей
struct pacient  //структурный тип с именем пациент
{char fio1[10];
 int data1;  //   дата рождения
 int data2;  // дата посещения
  int ychastok;
  int mouth;   //месяц
};
struct vrach   // структурный тип с именем врач
  { char fio2[10];
  char diagnoz[10];}; //диагноз
int main()
{{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("mouth:");scanf("%d",&ps[i].mouth);
  } }
  vrach bl[k];
 { for(int j=0;j<k;j++)
  { printf("familia2: ");scanf("%s",&bl[j].fio2);
 printf(" diagnoz: ");scanf("%d",&bl[j].diagnoz);
} }};
printf("vvedite vremya goda:(1==zima,2==vesna,3==leto,4==osen)\n");
 scanf("%d",&vrema_goda);
 printf("v eto vrema rodilis:\n");

 for(i=0;i<n;i++) {
  if (vrema_goda== 1) {
   if (ps[i].mouth==9 ||ps[i].mouth==10 ||ps[i].mouth==11)
    printf("%s\n",ps[i].fio);


 }; getch(); }



Модератор: не забываем пользоваться кнопочкой "Код"

Автор: bsa 17.2.2010, 22:13
а какие трудности? Почему код не корректно отформатирован?

Автор: Christoph 17.2.2010, 22:13
Код читать тяжело :(
В одной структуре "пациент" можно было бы все поля задать! Затем создаешь массив из структур и заполняешь значениями, потом в цикле смотришь каждую структуру и проверяешь поля - месяц и диагноз, если совпало, то с этой записи извлекаешь ФИО пациента

Автор: Ozerich 17.2.2010, 22:34
Диагноза в структуре нету. Идёшь по массиву пациентов и для дату каждого элемента сверяешь с осенью. С диагнозом тоже самое. Если оба совпали, то выводи фамилию. smile 
Структура:
Код

struct pacient  //структурный тип с именем пациент
{char fio1[10];
 int data1;  //   дата рождения
 int data2;  // дата посещения
  int ychastok;
  int month;
  char fiodoktor[10]
  char diagnoz[10];
};

pacient ps[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);

Автор: ns4107 18.2.2010, 00:27
И диагноз типа char[10] через %d зачем-то вводишь. 

Автор: Ozerich 18.2.2010, 00:29
Строку считывать надо с %s

Автор: bsa 18.2.2010, 00:40
Цитата(Ozerich @  18.2.2010,  00:29 Найти цитируемый пост)
Строку считывать надо с %s
можно и %c

Автор: 555shiro 18.2.2010, 16:02
теперь сделал вот так,но всё равно ошибок много(
Код

#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 ();
 }

Автор: bsa 18.2.2010, 16:25
555shiro, ты найдешь ошибку, когда сделаешь то, что указано тут: http://forum.vingrad.ru/forum/topic-269805/kw-faq-coding-style-%D1%81%D1%82%D0%B8%D0%BB%D1%8C-%D0%BA%D0%BE%D0%B4%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F.html

Формучане, не подсказывайте!

Добавлено через 1 минуту и 10 секунд
Кстати, компилятор текстом ошибок, обычно, подсказывает в чем именно ошибка заключается.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)