вот проблема, которую я имею.в основном структура определена правильно, но компилятор выдает ошибку, когда пытается прочитать ввод из данного файла.Я могу пройти через меню в цикле while перед делом, а затем выполнить опцию «a» или «A» и получить номер пациента.Затем я могу открыть файл, но не могу прочитать какую-либо информацию из файла в структурные переменные.это просто завершает код.Файлы, из которых я пытаюсь прочитать, отформатированы следующим образом: время BP_diastolic BP_systolic 01 80 120 02 81 124 03 78 118 и т. Д.
время temp 01 98,7 02 99,0 03 98,5 и т. Д.
коэффициент времени 01 68 02 70 03 65 и т. д.
Я должен прочитать информацию из файлов, поместить их в переменные и затем определить показатель здоровья для данного дня в соответствии с этим уравнением: ? (????,????, ?????, ????) = 15 ∗ ???? + 35 ∗ ????? + 25 ∗ ???? +25
где: температура основана на температуре тела в момент времени t и определяется как: ???? = {1 ??97? ≤ ?? ≤ 99 0 ??ℎ??????
давление зависит от артериального давления в момент времени t и определяется как: ????? = {1 ?? ??? ≤ 80 ??? ??? ≤ 120 0,5 ?? 80 <??? ≤ 89 ?? 120 <???≤ 139 0 ?? ??? ≥90 140 140 ≥ 140 <br> частота основана на частоте сердечных сокращений, заканчивающейся в момент времени t на основе некоторого ∆t, обычно от 15 до 60 секунд, и определяется как: ???? = {1 ?? 60 ≤ ?? ≤ 100 0 ??ℎ??????
Я еще не дошел до этого раздела, так как не могу понять, как получить информацию о переменных.Поэтому я не могу делать какие-либо расчеты с указанными данными.
Если выбран вариант d), программа должна запросить у пользователя момент времени для расчета показателя здоровья.После ввода правильного времени (т.е. должно быть в пределах заданного временного интервала) программа должна отобразить: a.таблица со значениями для BT, BP и HR, b.отчет об обнаружении любых состояний (например, нормальное / предгипертензия / гипертония), описанных выше, и c.значение HealthScore, полученное с использованием уравнения1.
Если выбран вариант e), должна отображаться таблица со статистическими параметрами (за интервал времени) для каждой переменной.Это включает Min, Max, Avg и Standard Dev.
Также должны быть проведены тесты, чтобы убедиться, что все записи в программе находятся в надлежащем диапазоне.
Надеюсь, это лучшее объяснение проблем, с которыми я сталкиваюсь.Кроме того, в этот момент задание задерживается, но я все еще хотел бы понять, что я делаю неправильно.Любая помощь приветствуется.
#include<stdio.h>
#include<stdlib.h>
struct bloodPressure{
int time;
double pressD;
double pressS;
};
struct temp{
int time;
double temp;
};
struct rate{
int time;
double r;
};
struct bloodPressure BP[55];
struct temp T[55];
struct rate R[55];
int main()
{
int timeStart,
timeEnd,
timeSelect;
double minTemp,
maxTemp,
avgTemp,
stdTemp,
minPressD,
maxPressD,
avgPressD,
stdPressD,
minpressS,
maxPressS,
avgPressS,
stdPressS,
minRate,
maxRate,
avgRate,
stdRate,
score;
char fileName[140],
fileNameBuffer[150],
patientNum[5],
menuSelect = "a";
FILE *fp;
while (menuSelect)
{
printf("Please select from the following list:\n");
printf("a/A: Enter patient number\n");
printf("b/B: Enter file folder location\n");
printf("c/C: Enter time interval\n");
printf("d/D: Get health score\n");
printf("e/E: Get statistical data\n");
printf("f/F: Exit the program\n");
scanf("%c", &menuSelect);
switch(menuSelect)
{
// code to enter patient ID number
case 'a':
case 'A':
{
// ask user for the patient's ID number
printf("Please enter the Patient's ID number:\n");
scanf("%s", &patientNum);
printf("%s", patientNum);
// break out of switch statement and return to main
// menu
break;
}
// code to enter file location
case 'b':
case 'B':
{
printf("Please enter the file location:\n");
scanf("%s", &fileName);
// if file for blood pressure does not open, display
// error and return to main menu
sprintf(fileNameBuffer, "%sBP_%s.txt", fileName,
patientNum);
fp = fopen(fileNameBuffer, "r");
printf("%s \n", fileNameBuffer);
if (fp == NULL)
{
printf("cannot open file");
}
// if file opens, read information from the file
// else
{
printf("file is being read\n");
// read in variables from blood pressure file into
// blood pressure structure
while (!feof (fp))//int i = 0; i < 55; i++)
{
int i = 0;
fscanf(fp, '%d %lf %lf', BP[i].time,
BP[i].pressD, BP[i].pressS);
printf("%d", BP[i].time);
if (++i >= 55)
{
break;
}
}
// close the blood pressure file
fclose(fp);
}
// if file for blood temperature does not open, display
// error and return to main menu
if (fp = fopen(("%sBT_%d.txt", fileName, patientNum),
'r') == NULL)
{
printf("cannot open file");
}
// if file opens, read information from the file
else
{
// read in variables from heart rate file into blood
// pressure structure
while (!feof (fp))
{
int i = 0;
fscanf(fp, '%d %lf', &(T[i].time), &(T[i].temp));
if (++i >= 55)
{
break;
}
}
// close the heart rate file
fclose(fp);
}
// if file for heart rate does not open, display error
// and return to main menu
if (fp = fopen(("%sHR_%d.txt", fileName, patientNum),
'r') == NULL)
{
printf("cannot open file");
}
// if file opens, read information from the file
else
{
// read in variables from heart rate file into blood
// pressure structure
while (!feof (fp))
{
int i = 0;
fscanf(fp, '%d %f', &(R[i].time), &(R[i].r));
if (++i >= 55)
{
break;
}
}
// close the blood pressure file
fclose(fp);
}
// break out of switch statement and return to main
// menu
break;
}
// code to enter time interval
case 'c':
case 'C':
{
// ask user for start and end times for the time
// interval
printf("Please enter the starting time:\n");
scanf('%d', timeStart);
printf("Please enter the ending time:\n");
scanf('%d', timeEnd);
// break out of switch statement and return to main
// menu
break;
}
// code to calculate health score
case 'd':
case 'D':
{
break;
}
// code to calculate statistical data
case 'e':
case 'E':
{
break;
}
// code to exit the program
case 'f':
case 'F':
{
printf("You have chosen to exit the program\n");
exit(1);
}
default:
{
printf("Error: Please enter a valid menu option (a-f or
A-F)");
break;
}
}
}
return 0;
}