Форум программистов, компьютерный форум, киберфорум
Наши страницы

C для начинающих

Войти
Регистрация
Восстановить пароль
 
Yumie
0 / 0 / 0
Регистрация: 08.12.2014
Сообщений: 16
#1

Сведения о пациентах - найти недочеты в коде - C (СИ)

11.02.2015, 20:50. Просмотров 354. Ответов 1
Метки нет (Все метки)

Здравствуйте. Появилась такая проблема. Задача программы, чтобы пользователь вводил данные о пациенте в программу и программа это сохраняла в отдельный файл. Но при тесте программы в анкете в графе "адрес" пропускается строчка "Страна". Выглядит это примерно так: Сведения о пациентах - найти недочеты в коде
Помогите, пожалуйста, исправить. Код анкеты находится в функции inputData(116-174 строки). Заранее благодарю

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
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
#include <string.h>
#include <malloc.h>
 
//структуры
struct FIO {
    char name[30];
    char surname[30];
    char fam[30];
};
 
struct Adress {
    char country[30];
    char city[30];
    char region[30];
    char district[30];
    char street [30];
    char numh[10];
    unsigned int numfl;
};
 
struct DateOP {
    unsigned int D;
    unsigned int M;
    unsigned int Y;
};
 
struct Operation {
    DateOP DO;
    char op[100];
};
 
struct Patient {
    FIO fio;
    unsigned int age;
    char sex[8];
    Adress adr;
    char diag[40];
    Operation OP;
} *pat;
 
int i;
void menu(int);
int inputData();
int outputData();
void func1();
void func2();
void func3();
void func4();
void func5();
 
//Главная функция
int main(void)
{
    setlocale(LC_ALL,"");
    int p=0;
    char pass[13], passadm[13]="favtadmin1";
    printf("1. Оператор\n2.Администратор\n");
    do
    {
        printf("Выберите режим работы программы:");
        scanf ("%d", &i);
    } while (i>2 || i<1);
    switch(i)
    {
        case 1: menu(i); break;
        case 2: r: printf("Введите пароль:\n"); 
        scanf("%s", pass);
        if (strcmp(pass,passadm)==0) 
        {
            menu(i); 
        }
        else 
        {
            if(p<2) 
                {
                    printf("Попробуйте снова\n"); p++; goto r; 
                }
            else 
            {
                printf("Ваши попытки были израсходованы.\nВы возвращаетесь в меню выбора режима программы.\n\n"); main();
            }
        } 
    }
    return 0;
}
 
//Функция меню (выбора действий)
void menu(int i)
{
    int menuP;
    
    printf("1. Задание\n2. Содержание базы данных\n3. Функция 1\n4. Функция 2\n5. Функция 3\n6. Функция 4\n7. Функция 5\n8. Добавление записи\n9. Удаление записи\n10. Выход\n\n");
    printf("Выберите пункт, который хотите воспроизвести:");
    scanf("%d", &menuP);
    switch(menuP)
    {
        case 1: printf ("Вы выбрали пункт задание\n"); break;
        case 2: printf ("Вы хотите посмотреть содержание базы данных\n"); break;
        case 3: func1(); break;
        case 4: func2(); break;
        case 5: func3(); break;
        case 6: func4(); break;
        case 7: func5(); break;
        case 8: if(i==2) inputData();
                else printf("Доступ только для администраторов\n\n"); menu(i); break;
        case 9: if(i==2) printf ("Удаление записи\n"); 
                else printf("Доступ только для администраторов\n\n"); menu(i); break;
        case 10: exit(0); 
    }
}
 
 
int inputData()
{
    char sexM[3]="M", sexJ[3]="J";
    int num, cf;
    FILE*file;
    file=fopen("d:\\kursovaya1.txt", "a");
    if(file==NULL) { printf("Ошибка при открытии файла"); return 1;}
 
    printf ("Введите количество пациентов, о которых вы хотите добавить информацию:\t");
    scanf ("%d", &num);
    pat=(Patient*)malloc(num*sizeof(Patient));
    for (cf=0; cf<num; cf++)
    {
        fflush(stdin);
        printf("Фамилия:");
        scanf("%s", pat[cf].fio.fam);
        printf("Имя:");
        scanf("%s", pat[cf].fio.name);
        printf("Отчество:");
        scanf("%s", pat[cf].fio.surname);
        do {
        printf("Возраст:");
        scanf("%d", &pat[cf].age);
        } while (pat[cf].age>120 || pat[cf].age<0);
        do  {
            printf("Пол:");
            scanf("%s", pat[cf].sex);
 
        printf("Адрес:\n");
        printf("Страна:");
        gets(pat[cf].adr.country);
        printf("Область:");
        gets(pat[cf].adr.region);
        printf("Город:");
        gets(pat[cf].adr.city);
        printf("Район:");
        gets(pat[cf].adr.district);
        printf("Улица:");
        gets(pat[cf].adr.street);
        printf("Номер дома:");
        gets(pat[cf].adr.numh);
        printf("Номер квартиры:");
        scanf("%d", &pat[cf].adr.numfl);
 
        } while (strcmp(pat[cf].sex,sexM)!=0 && strcmp(pat[cf].sex,sexJ)!=0); 
        printf("Диагноз:");
        scanf("%s", pat[cf].diag);
        printf("\n\n");
    }
 
    for (cf=0; cf<num; cf++)
    {
    fprintf(file, "ФИО: %s %s %s\nВозраст: %d\nПол: %s\nАдрес: %s, %s, %s, %s, %s, %s, %d\nДиагноз: %s\n\n", pat[cf].fio.fam, pat[cf].fio.name, pat[cf].fio.surname, &pat[cf].age, pat[cf].sex, pat[cf].adr.country, pat[cf].adr.region, pat[cf].adr.city, pat[cf].adr.district, pat[cf].adr.street, pat[cf].adr.numh, pat[cf].adr.numfl, pat[cf].diag );
    }
    fclose(file);
 
 
menu(i);
}
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.02.2015, 20:50
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Сведения о пациентах - найти недочеты в коде (C (СИ)):

Консольный калькулятор - просьба оценить, указать на ошибки и недочеты - C (СИ)
Здравствуйте! Доделал примитивиный строковый консольный калькулятор (на 399 строк). Поддерживаемые операции: + - * / ^ (). Выражение...

Найти самую старую книгу в библиотеке и выдать все сведения о ней - C (СИ)
Составить программу, которая находит самую старую книгу в библиотеке и выдать все сведения о ней. Если таких книг несколько, то сообщить...

В файле хранятся сведения об архитектурных памятниках. Найти самый старый архитектурный памятник - C (СИ)
В файле хранятся сведения об архитектурных памятниках: название, местоположение, тип постройки, архитектор, год постройки. Вывести сведения...

Дан файл f, содержащий сведения о веществах. Найти удельные веса и названия всех полупроводников. - C (СИ)
Дан файл f, содержащий сведения о веществах: указывается название вещества, его удельный вес и проводимость (проводник, полупроводник,...

Создание БД. Найти недочеты в коде - Java БД
Доброго времени суток уважаемые программисты, подскажите решение моей проблемы, я пытаюсь через JTextField передать название базы данных...

Разность множеств: найти недочеты в коде - C++
Помогите разобраться с ошибкой в коде. Требуется сделать разность двух множеств: множество1 - множество2. Придумала два алгоритма,но не...

1
Вованя
137 / 134 / 48
Регистрация: 20.02.2014
Сообщений: 478
Завершенные тесты: 1
12.02.2015, 00:38 #2
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от Yumie Посмотреть сообщение
в графе "адрес" пропускается строчка "Страна"
В потоке остается символ \n, после ввода строки. Поэтому либо использовать scanf (только для слова), либо после каждого gets использовать fflush (под win), или же просто "съедать" \n с помощью getc, getchar.
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.02.2015, 00:38
Привет! Вот еще темы с ответами:

Открытие файла, найти недочеты в коде - C++
Добрый вечер. Не получается запустить одну программу, думаю проблемы с файлами. буду очень благодраен за любую помощь #include...

Массив массивов: найти недочеты в коде - VBA
Добрый день! Помогите разобраться, пожалуйста! Нашел в сети пример массива массивов, но что-то с разборками у меня не то. 'Work with...

Конструктор копирования, найти недочеты в программном коде - C++
Здравствуйте, посмотрите пожалуйста, тут у меня конструктор копирования. Я нашел какой-то пример, попробовал все переделать под свою...

Замена слов в цикле. Найти недочеты в коде - C++
#include &lt;iostream&gt; #include &lt;conio.h&gt; #include &lt;cstring&gt; using namespace std; int main(){ char temp; cout &lt;&lt; &quot;vvedite...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.