Patient_1 m 67 145
Patient_2 f 45 130
Patient_3 m 23 120
Patient_4 f 56 142
Patient_5 f 27 141
Patient_6 f 18 120
Программа на С++ На тему "Структуры"
Вывести данные о больных с повышенным давлением (больше 140) .
Помогите пожалуйста.
Код:
#include <iostream>
#include <Windows.h>
using namespace std;
struct Patients
{
char Surename[15];
char Sex[2];
int Age;
int Pressure;
};
Patients *FeelArray(Patients *Arr);
void FindPatients(Patients *Arr);
int main()
{
Patients *Arr = new Patients[5];
Arr = FeelArray(Arr);
FindPatients(Arr);
delete []Arr;
return 0;
}
Patients *FeelArray(Patients *Arr)
{
FILE *in = fopen("Data.txt","r");
int pst = 0;
while(!feof(in) && pst < 5)
{
fscanf(in,"%s",Arr[pst].Surename);
fscanf(in,"%s",Arr[pst].Sex);
fscanf(in,"%d",&Arr[pst].Age);
fscanf(in,"%d",&Arr[pst].Pressure);
pst++;
}
fclose(in);
return Arr;
}
void FindPatients(Patients *Arr)
{
cout<<"Patient \tSex \tAge \tPressure"<<endl;
for(int idx=0;idx<5;idx++)
{
if(Arr[idx].Pressure > 140)
{
cout<<Arr[idx].Surename<<"\t"<<Arr[idx].Sex<<"\t"<<Arr[idx].Age<<"\t"<<Arr[idx].Pressure<<endl;
}
}
system("pause");
}
#include <Windows.h>
using namespace std;
struct Patients
{
char Surename[15];
char Sex[2];
int Age;
int Pressure;
};
Patients *FeelArray(Patients *Arr);
void FindPatients(Patients *Arr);
int main()
{
Patients *Arr = new Patients[5];
Arr = FeelArray(Arr);
FindPatients(Arr);
delete []Arr;
return 0;
}
Patients *FeelArray(Patients *Arr)
{
FILE *in = fopen("Data.txt","r");
int pst = 0;
while(!feof(in) && pst < 5)
{
fscanf(in,"%s",Arr[pst].Surename);
fscanf(in,"%s",Arr[pst].Sex);
fscanf(in,"%d",&Arr[pst].Age);
fscanf(in,"%d",&Arr[pst].Pressure);
pst++;
}
fclose(in);
return Arr;
}
void FindPatients(Patients *Arr)
{
cout<<"Patient \tSex \tAge \tPressure"<<endl;
for(int idx=0;idx<5;idx++)
{
if(Arr[idx].Pressure > 140)
{
cout<<Arr[idx].Surename<<"\t"<<Arr[idx].Sex<<"\t"<<Arr[idx].Age<<"\t"<<Arr[idx].Pressure<<endl;
}
}
system("pause");
}
Входной файл содержит
Код:
Код:
Patient Sex Age Pressure
Patient_1 m 67 145
Patient_4 f 56 142
Patient_5 f 27 141
Для продолжения нажмите любую клавишу . . .
Patient_1 m 67 145
Patient_4 f 56 142
Patient_5 f 27 141
Для продолжения нажмите любую клавишу . . .
Цитата: cronya
Код:
#include <iostream> // только ради std::cout ?!
#include <Windows.h> // Зачем?
Patients *FeelArray(Patients *Arr)
{
FILE *in = fopen("Data.txt","r");
int pst = 0;
while(!feof(in) && pst < 5) // <---!!!!!!
{
fscanf(in,"%s",Arr[pst].Surename);
// ...
}
fclose(in);
}
// ....
#include <Windows.h> // Зачем?
Patients *FeelArray(Patients *Arr)
{
FILE *in = fopen("Data.txt","r");
int pst = 0;
while(!feof(in) && pst < 5) // <---!!!!!!
{
fscanf(in,"%s",Arr[pst].Surename);
// ...
}
fclose(in);
}
// ....
По вашему это C++ код?! Какой FILE, fopen/fscanf/fclose?! Зачем нужен вообще Windows.h?!
Вот захотел я использовать Сишную функцию и что? Где-то это запрещается или считается не верным? Тем более, что в университетах начинают изучать сам си, а не си++, поэтому зачем нагружать студенту мозг тем, что возможно он не знает. Задача этого раздела показать, как и что, в простом варианте, а не у кого круче яйца. Есть желание продемонстрировать свои способности, дерзайте, поглядим, что вы предложите!
ЗЫ:
- Windows.h остался в исходнике потому, что был другой проект не удалил и что с того, писал не диплом, а всего лишь пример.
- Что вам тут не понятно?
Код:
while(!feof(in) && pst < 5) // <---!!!!!!
- читаем до конца файла
- проверяем на переполнения массива, входной файл посмотрим что содержит