Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/21: Рейтинг темы: голосов - 21, средняя оценка - 4.86
 Аватар для Вася1q
21 / 21 / 3
Регистрация: 13.09.2011
Сообщений: 314

Задача на использование классов

05.02.2012, 21:17. Показов 3991. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый вечер форумчане!
Мне задали написать программку, вот условие:

Поля дaнных клаccа должны быть зaкрытыми, а доступ к ним должен осущeствляться c помощью открытых методов. Кроме полей c дaнными в классe должны быть конcтрукторы, деструктор и другиe методы клаccа в cоответствии с заданием. Создать массив объектов.
Pаtient: Фамилия, Имя, Отчество, Адрeс, Номер медицинской карты, Диагноз. Вывести:
-список пациентов, имеющих данный диагноз;
-список пациентов, номер медицинской кaрты которых находится в задaнном интервале.
Ценой долгих усилий я смог написать это:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
#include <conio.h>
#include <string>
#include <iostream>
using namespace std;
//======= class  =================
class Patient
{
char name[30];
char fam[30];
char otch[30]; //private
char adr[30], diagnoz[20];
int number;
public:
Patient();
char *getdiagnoz();
int getnumber();
void show();
};
Patient::Patient()
{
cout<<"vedite imya: "; cin>>name;
cout<<"vedite familie: "; cin>>fam;
cout<<"vedite otchestvo: "; cin>>otch;
cout<<"vedite adres: "; cin>>adr;
cout<<"vedite nomer medkarti: "; cin>>number;
cout<<"vedite diagnoz: "; cin>>diagnoz;
}
void Patient::show()
{
cout<<"imya: "<<name<<endl;
cout<<"familie: "<<fam<<endl;
cout<<"otchestvo: "<<otch<<endl;
cout<<"adres: "<<adr<<endl;
cout<<"nomer medkarti : "<<number<<endl;
cout<<"diagnoz: "<<diagnoz<<endl;
}
char *Patient::getdiagnoz() { return diagnoz; }
int Patient::getnumber() { return number; }
void spisdiagnoz(Patient spis[],int n)//Cпиcok пациeнтoв имeющих дaнный диагноз
{char diagnoz[20];
cout<<"Vvedite diagnoz: "; cin>>diagnoz;
for(int i=0;i<n;i++)
if(strcmp(spis[i].getdiagnoz(),diagnoz)==0)spis[i].show();
}
void spismedkart(Patient spis[],int n)
//номер медкaрты который находится в зaдaнном интервале
{int i,k1,k2;
char number[20];
cout<<"Vvedite interval:"; cin>>k1;cout<<"-";cin>>k2;
if(number>=k1&&number<=k2)
{                          
}
}
//========= main ================
int main()
{ 
Patient *spis;
int n;
cout<<"Vvedite kol-vo pacientov: "; cin>>n;
spis=new Patient [n];
for(int i=0;i<n;i++) {
cout<<"=============================="<<endl;
spis[i].show();
}
spisdiagnoz(spis,n);
spismedkart(spis,n);
delete [] spis;
cout<<"press any key!";
while(!kbhit());
}
помогите, пожaлуйста,вывести cпиcок пaциентов, номер медицинской кaрты которых находится в задaнном интервале.Т.е. доработай кто может)
C++
1
2
3
4
5
6
7
8
//íîìåð ìåäèöèíñêîé êàðòû êîòîðûõ íàõîäèòñÿ â çàäàííîì èíòåðâàëå.
{int i,k1,k2;
char number[20];
cout<<"Vvedite interval:"; cin>>k1;cout<<"-";cin>>k2;
if(number>=k1&&number<=k2)
{                          
}
}
Добавлено через 1 час 38 минут
Помогите пожалуйста!!
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
05.02.2012, 21:17
Ответы с готовыми решениями:

Множественное наследование, Перегрузка функций, Перегрузка операторов, Использование дружественных функций и классов, Использование шаблонов классов
Здравствуйте!!! Я бы хотел попросить помоч решить...ну или скинуть примеры таких задач, если вдруг у вас они завалялись на компе или...

Использование классов
Здравствуйте господа программисты. Помогите мне пожалуста. В Курсовой есть такое задание: &quot;Создать телефонную книгу&quot; ...

Использование классов
Класс Члены класса Методы Операторы перегрузки Исходные данные Матрица Размерность ...

5
601 / 569 / 104
Регистрация: 07.11.2010
Сообщений: 2,004
05.02.2012, 23:04
C++
1
2
3
4
5
for(int i=0;i<n;i++) {
cout<<"=============================="<<endl;
if (number>=k1&&number<=k2)
spis[i].show();
}
1
 Аватар для Вася1q
21 / 21 / 3
Регистрация: 13.09.2011
Сообщений: 314
07.02.2012, 04:57  [ТС]
Соединил вместе, хм..странно, но не работает всплывают две странные ошибки. Вот код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
#include <conio.h>
#include <string>
#include <iostream>
using namespace std;
//======= class  =================
class Patient
{
char name[30];
char fam[30];
char otch[30]; //private
char adr[30], diagnoz[20];
int number;
public:
Patient();
char *getdiagnoz();
int getnumber();
void show();
};
Patient::Patient()
{
cout<<"vedite imya: "; cin>>name;
cout<<"vedite familie: "; cin>>fam;
cout<<"vedite otchestvo: "; cin>>otch;
cout<<"vedite adres: "; cin>>adr;
cout<<"vedite nomer medkarti: "; cin>>number;
cout<<"vedite diagnoz: "; cin>>diagnoz;
}
void Patient::show()
{
cout<<"imya: "<<name<<endl;
cout<<"familie: "<<fam<<endl;
cout<<"otchestvo: "<<otch<<endl;
cout<<"adres: "<<adr<<endl;
cout<<"nomer medkarti : "<<number<<endl;
cout<<"diagnoz: "<<diagnoz<<endl;
}
char *Patient::getdiagnoz() { return diagnoz; }
int Patient::getnumber() { return number; }
void spisdiagnoz(Patient spis[],int n)//ñïèñîê ïàöèåíòîâ èìåþùèé äàííûé äèàãíîç
{char diagnoz[20];
cout<<"Vvedite diagnoz: "; cin>>diagnoz;
for(int i=0;i<n;i++)
if(strcmp(spis[i].getdiagnoz(),diagnoz)==0)spis[i].show();
}
int spismedkart(Patient spis[],int n)
//íîìåð ìåäèöèíñêîé êàðòû êîòîðûõ íàõîäèòñÿ â çàäàííîì èíòåðâàëå.
{
int i,k1,k2;
char number[20];
cout<<"Vvedite interval:"; cin>>k1;cout<<"-";cin>>k2;
for(int i=0;i<n;i++) 
 {
 cout<<"=============================="<<endl;
 if (number>=k1&&number<=k2)
  {
   spis[i].show();
  }                         
 }
}
//========= main ================
int main()
{ 
Patient *spis;
int n;
cout<<"Vvedite kol-vo pacientov: "; cin>>n;
spis=new Patient [n];
for(int i=0;i<n;i++) {
cout<<"=============================="<<endl;
spis[i].show();
}
spisdiagnoz(spis,n);
spismedkart(spis,n);
delete [] spis;
cout<<"press any key!";
while(!kbhit());
}
Добавлено через 5 минут
А вот текст ошибок:
In function `int spismedkart(Patient*, int)':
ISO C++ forbids comparison between pointer and integer
ISO C++ forbids comparison between pointer and integer
0
 Аватар для lemegeton
4903 / 2696 / 921
Регистрация: 29.11.2010
Сообщений: 5,783
07.02.2012, 09:18
Как нибудь так?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
#include <iostream>
#include <string>
#include <iterator>
#include <set>
#include <algorithm>
 
class Patient {
 public:
  Patient(const std::string &surname, const std::string &name,
    const std::string &secondName, const std::string &address,
    size_t cardId, const std::string &diagnosis)
    : surname_(surname), name_(name), secondName_(secondName),
    address_(address), cardId_(cardId), diagnosis_(diagnosis) {}
  Patient(const std::string &surname, const std::string &name,
    const std::string &secondName, const std::string &address,
    size_t cardId)
    : surname_(surname), name_(name), secondName_(secondName),
    address_(address), cardId_(cardId), diagnosis_() {}
  const std::string &getSurname() const { return surname_; }
  const std::string &getName() const { return name_; }
  const std::string &getSecondName() const { return secondName_; }
  const std::string &getAddress() const { return address_; }
  size_t getCardId() const { return cardId_; }
  const std::string &getDiagnosis() const { return diagnosis_; }
  void setDiagnosis(const std::string &diagnosis) { diagnosis_ = diagnosis_; }
 private:
  std::string surname_, name_, secondName_, address_;
  size_t cardId_;
  std::string diagnosis_;
};
 
bool operator<(const Patient &a, const Patient &b) {
  if (a.getSurname() == b.getSurname())
    if (a.getName() == b.getName())
      return a.getSecondName() < b.getSecondName();
    else
      return a.getName() < b.getName();
  else
    return a.getSurname() < b.getSurname();
}
 
std::ostream &operator<<(std::ostream &stream, const Patient &patient) {
  return stream << patient.getName() << " " << patient.getSecondName() <<
    " " << patient.getSurname() << ", card: " << patient.getCardId() <<
    ", diagnosis: " << patient.getDiagnosis();
}
 
struct SearchPatientsByDiagnosis {
  SearchPatientsByDiagnosis(const std::string &diagnosis_)
    : diagnosis(diagnosis_) {}
  bool operator()(const Patient &patient) {
    return patient.getDiagnosis() == diagnosis;
  }
  std::string diagnosis;
};
 
struct SearchPatientsByCardIdRange {
  SearchPatientsByCardIdRange(size_t begin_, size_t end_)
    : begin(begin_), end(end_) {}
  bool operator()(const Patient &patient) {
    return patient.getCardId() >= begin && patient.getCardId() <= end;
  }
  size_t begin, end;
};
 
template<class InputIterator, class OutputIterator, class Predicate>
OutputIterator copy_if(InputIterator first, InputIterator last,
  OutputIterator result, Predicate pred) {
  for (; first!=last; ++result, ++first)
    if (pred(*first)) *result = *first;
  return result;
}
 
 
int main(int argc, char *argv[]) {
  std::set<Patient> patients;
  patients.insert(Patient("Ivanov", "Ivan", "Ivanovich", "Sadovaya 12, 33", 1223, "flu"));
  patients.insert(Patient("Kuznetsov", "Nikolay", "Stepanovich", "Ogorodnaya 5, 2", 1233, "flu"));
  patients.insert(Patient("Petrov", "Petr", "Petrovich", "Lenina 3, 43", 1227, "ARD"));
  patients.insert(Patient("Semenov", "Semen", "Semenovich", "Zagorodniy 7, 22", 1213, "ARD"));
  patients.insert(Patient("Vasilyev", "Vasiliy", "Vasilyevich", "Zapadnaya 13, 6", 1243, "flu"));
  std::copy(patients.begin(), patients.end(), std::ostream_iterator<Patient>(std::cout, "\n"));
 
  std::cout << "Only ARD:" << std::endl;
  copy_if(patients.begin(), patients.end(), std::ostream_iterator<Patient>(std::cout, "\n"),
    SearchPatientsByDiagnosis("ARD"));
 
  std::cout << "Cards in range 1220-1235:" << std::endl;
  copy_if(patients.begin(), patients.end(), std::ostream_iterator<Patient>(std::cout, "\n"),
    SearchPatientsByCardIdRange(1220, 1235));
 
  return 0;
}
1
 Аватар для Вася1q
21 / 21 / 3
Регистрация: 13.09.2011
Сообщений: 314
07.02.2012, 22:17  [ТС]
Спасибо, конечно, огромное за проделанный вами труд!Но дело в том что мы не изучали такие сложные методы программирования. Такие библиотеки как
#include <iterator>
#include <set>
#include <algorithm>
я вообще встречаю впервые. Вы не могли бы лучше подкорректировать мою программку?) Если это не так сложно?

Добавлено через 6 часов 28 минут
Исправил немного. И заработало...но по диапозону не сортирует(((
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
#include <conio.h>
#include <string>
#include <iostream>
using namespace std;
//======= class  =================
class Patient
{
//====== private =================
private:
char fam[30];
char name[30];
char otch[30];
char adr[30];
char diagnoz[20];
int number;
//====== public =================
public:
Patient();
char *getdiagnoz();
int getnumber();
void show();
};
//конструктор по умолчанию
Patient::Patient()
  {
  cout<<"vedite familie: "; cin>>fam;
  cout<<"vedite imya: "; cin>>name;
  cout<<"vedite otchestvo: "; cin>>otch;
  cout<<"vedite adres: "; cin>>adr;
  cout<<"vedite nomer medkarti: "; cin>>number;
  cout<<"vedite diagnoz: "; cin>>diagnoz;
  }
void Patient::show()
 {
  cout<<"familie: "<<fam<<endl;
  cout<<"imya: "<<name<<endl;
  cout<<"otchestvo: "<<otch<<endl;
  cout<<"adres: "<<adr<<endl;
  cout<<"nomer medkarti : "<<number<<endl;
  cout<<"diagnoz: "<<diagnoz<<endl;
 }
char *Patient::getdiagnoz() { return diagnoz;}
int   Patient::getnumber()  { return number; }
//список пациентов имеющий данный диагноз.
void spisdiagnoz(Patient spis[],int n)
 {
  char diagnoz[20];
  cout<<endl<<"=============================="<<endl;
  cout<<"Vvedite diagnoz: "; cin>>diagnoz;
  for(int i=0;i<n;i++){
   if(strcmp(spis[i].getdiagnoz(),diagnoz)==0)
   {
    spis[i].show();
   }
  }
 }
void spismedkart(Patient spis[],int n)
//номер медицинской карты которых находится в заданном интервале.
 {
  int k1,k2;
  int number;
  cout<<"Vvedite interval:";cin>>k1;cout<<"-";cin>>k2;
  for(int i=0;i<n;i++) 
  {
  cout<<"=============================="<<endl;
   if (number>=k1 && number<=k2)
   {
    spis[i].show();
   }                         
  }
 }
//========= main ================
int main()
{ 
Patient *spis;
int n;
cout<<"Vvedite kol-vo pacientov: "; cin>>n;
spis=new Patient [n];
for(int i=0;i<n;i++) 
{
cout<<"=============================="<<endl;
spis[i].show();
}
spisdiagnoz(spis,n);
spismedkart(spis,n);
delete [] spis;
cout<<"press any key!";
while(!kbhit());
}
1
 Аватар для I.M.
576 / 559 / 47
Регистрация: 16.12.2011
Сообщений: 1,389
08.02.2012, 02:44
В spismedkart наверное не number, а getnumber()
C++
1
2
3
4
if (spis[i].getnumber>=k1 && spis[i].getnumber<=k2)
{
    spis[i].show();
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
08.02.2012, 02:44
Помогаю со студенческими работами здесь

Использование классов
Не хочет запускаться, помогите найти ошибку #include &lt;iostream&gt; #define N 5 using namespace std; class electronic_store { ...

Использование классов
Составить программу для объявления и использования данных типа класс согласно индивидуальному заданию, Базовый (транспортное средство) ...

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

Использование классов
Расскажите пожалуйста на кокретных примерах как и где модно использовать классы?

Использование функциональных классов
Помогите решить задачу: Создать список из строк длиной не более 100 символов. Из всех подряд идущих строк с одинаковым количеством...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru