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

Создать линейный список "Анкета" - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Нужна программа, которая печатает последние n рядов которые вводятся. http://www.cyberforum.ru/cpp-beginners/thread121272.html
Нужна програма которая печатает носледние n рядов которые вводяться.
C++ степень чисел Надо ввести число от 0 до 10. Вывести таблицу чисел от 0 до введённого значения и степень этих чисел от 0 до 5. Использовать функцию pow(x,i) и оператор цикла do - while. Вроде надо сделать... http://www.cyberforum.ru/cpp-beginners/thread121257.html
Разработать проэкт управления телефоном C++
Разработать проэкт управления телефоном (ООП С++) Добавлено через 58 секунд если чесно то ващэ без понятия как ето делать:(посоветуйте да подскаажыте хоть чтото
C++ Memory Address
Привет всем! Нужна помощ 1) как прочесть value адреса и вписать его в Edit1 ?? 2) как из процесса вызвать адрес (не вписать (WriteMemoryAddress) a вызвать в программе с помощю FindWindow)?? ...
C++ Виртуальные функции после чтения объектов http://www.cyberforum.ru/cpp-beginners/thread121229.html
есть два класса, базовый и дочерний. Используются виртуальные функции. Записываю объекты классов в файл, и после чтения виртуальные функции не работают. Хотя до этого было все в порядке, в чем...
C++ Разработать функцию Разработать функцию Integr(A,B,N), интегрирующую полином степени N, заданный коэффициентами в массиве А и помещающую коэффици- енты полинома B(x) = Z A(x) dx в массив B. Функция, не должна... подробнее

Показать сообщение отдельно
Helene
1 / 1 / 0
Регистрация: 21.04.2010
Сообщений: 32

Создать линейный список "Анкета" - C++

24.04.2010, 16:54. Просмотров 1796. Ответов 8
Метки (Все метки)

условие: Анкета для опроса населения содержит две группы вопросов. Первая группа содержит сведения о респонденте: 1)возраст 2)пол 3)образование(начальное, среднее, высшее).Вторая группа содержит собственно вопрос анкеты, ответом на который может являться либо ДА либо НЕТ. Нужно написать программу, которая:
1)обеспечивает начальный ввод анкет и формирует из них линейный список;
2) на основе анализа анкет выдаёт ответы на следующие вопросы: а)сколько мужчин старше 40 лет, имеющих высшее образование, ответили ДА на вопрос анкеты; а)сколько женщин моложе 30 лет, имеющих начальное образование ответили НЕТ на вопрос анкеты; а)сколько мужчин моложе 24 лет, имеющих начальное образование, ответили ДА на вопрос анкеты;
3)производит вывод всех анкет на экран и ответов на вопросы.
Программа должна обеспечивать диалог с помощью меню и контроль ошибок при вводе.

я делала её с файлом, она почти правильно работает, у меня не получается сделать во второй части задачи второй пункт, я придумала кое-что другое, и у меня какой-то косяк, если я ввожу в файл 5 анкет, то прога не работает
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
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <conio.h>
//--------------------------------------------|
 
#include <windows.h>
char bufRus [256];
char* Rus(const char* text)
{
    CharToOem(text, bufRus);
    return bufRus;
}
 
//--------------------------------------------|
 
const int l_pol=4;
const int l_obroz=10;
const int l_otvet=5;
 
struct Man {
    int age;
    char pol[l_pol];
    char obroz[l_obroz];
    char otvet[l_otvet];
    Man* next;
};
 
Man* read_dbase(char* filename);
Man* add(Man* beg, const Man& man);
void print_dbase(Man* deg);
void find   (Man* beg);
int find_s (Man* beg, int age, char *pol, char *obroz, char *otvet);
int find_m (Man* beg, int age, char *pol, char *obroz, char *otvet);
int find_u  (Man* beg, int age, char *pol, char *obroz, char *otvet);
int menu();
 
int main(){
    Man* beg; 
    beg = read_dbase("dbase.txt");
    if (!beg) 
        return 1;
    do {
        switch(menu()) {
        case 1: 
            system("cls");
            print_dbase(beg);
            getch();
            break;
        case 2:
            system("cls");
            find(beg);
            getch();
            break;
        case 3:
            system("cls");
            return 0;
        default:
            system("cls");
            puts(Rus("Надо вводить от 1 до 3"));
            break;
        }
    }
    while (menu()!=3);
    return 0;
}
//---------------------------Добавление анкеты|
Man* add(Man* beg, const Man &man) {
    Man* pv = new Man;
    pv->next = 0;
    pv->age = man.age;
    strcpy(pv->obroz,man.obroz);
    strcpy(pv->obroz,man.obroz);
    strcpy(pv->pol,man.pol);
    strcpy(pv->otvet,man.otvet);
 
    if (beg) {
        Man* temp =beg;
        while (temp->next)
            temp = temp->next;
        temp->next = pv;
    }
    else
        beg = pv;
    return beg;
}
 
//-----------------Чтение базы данных из файла|
Man* read_dbase(char* filename) {
    FILE* fin;
    Man man, *deg = 0;
    if((fin = fopen(filename, "r")) == 0){
        printf(Rus("Нет файла %s\n"), filename);
        return 0;
    }
    while(!feof(fin)){
 
        fscanf(fin, "%i%s%s%s", &man.age, man.pol, man.obroz, man.otvet);
        deg = add(deg, man);
    }
    fclose(fin);
    return deg;
}
//-------------------------Вывод базы на экран|
void print_dbase(Man* beg) {
    Man* pv = beg;
    while (pv) {
        printf("%d %s %s %s\n", pv->age, pv->pol, pv->obroz, pv->otvet);
        pv=pv->next;
    }
}
//--------------------------------Главное меню|
int menu(){
    char buf[20];
    int option;
    do {
        system("cls");
        puts(Rus("==================================="));
        puts(Rus("1 - Вывод базы анкет на экран\t "));
        puts(Rus("2 - Поиск анкет\t "));
        puts(Rus("3 - Выход\t "));
        puts(Rus("==================================="));
        gets(buf);
        option = atoi(buf);
    }
    while (!option);
    return option;
}
//---------------------------------Поиск анкет|
 
void find(Man* beg){
    char buf[20];
    int option;
    int age;
    char pol[10];
    char obroz[15];
    char otvet[10];
 
    do {
    puts("==============================================");
    puts(Rus("1 - поиск старше, 2 - поиск моложе,"));
    puts(Rus("3 - поиск по указаному возрасту"));
    puts(Rus("4 - отмена"));
    puts("==============================================");
    gets(buf);
    }
    while(!(option = atoi(buf)));
 
    switch(option) {
    case 1:
        {
        system("cls");
        puts(Rus("Вводи пол, образование, ответ и возраст: \n"));
        gets(pol);
        gets(obroz);
        gets(otvet);
        scanf("%i", &age);
        find_s(beg, age, pol, obroz, otvet);
        }
        break;
    case 2: 
        {
        system("cls");
        puts(Rus("Вводи пол, образование, ответ и возраст: \n"));
        gets(pol);
        gets(obroz);
        gets(otvet);
        scanf("%i", &age);
        find_m(beg, age, pol, obroz, otvet);
        }
        break;
    case 3:
        {
        system("cls");
        puts(Rus("Вводи пол, образование, ответ и возраст: \n"));
        gets(pol);
        gets(obroz);
        gets(otvet);
        scanf("%i", &age);
        find_u(beg, age, pol, obroz, otvet);
        }
        break;
    case 4:return;
    default:
        puts(Rus("Неверный режим\n"));
    }
}
//-------------------------------Поиск старших|
int find_s (Man* beg, int age, char *pol, char *obroz, char *otvet){
    bool flak = false;
    Man* pv=beg;
    while (pv){
        if (pv->age>age)
            if (strcmp(pv->pol,pol)==0)
                if (strcmp(pv->obroz,obroz)==0){
                    printf("%d,%s,%s,%s\n", pv->age, pv->pol, pv->obroz, pv->otvet);
                    flak=true;
                }
        pv=pv->next;
    }
if (!flak)
    printf(Rus("Нет таких анкет\n"));
    return 0;
}
//-------------------------------Поиск младших|
int find_m (Man* beg, int age, char *pol, char *obroz, char *otvet){
    bool flak = false;
    Man* pv=beg;
    while (pv){
        if (pv->age<age)
            if (strcmp(pv->pol,pol)==0)
                if (strcmp(pv->obroz,obroz)==0){
                    printf("%d,%s,%s,%s\n", pv->age, pv->pol, pv->obroz, pv->otvet);
                    flak=true;
                }
        pv=pv->next;
    }
if (!flak)
    printf(Rus("Нет таких анкет\n"));
    return 0;
}
//------------------------------Поиск указаных|
int find_u (Man *beg, int age, char *pol, char *obroz, char *otvet){
    bool flak = false;
    Man* pv=beg;
    while (pv){
        if (pv->age==age)
            if (strcmp(pv->pol,pol)==0)
                if (strcmp(pv->obroz,obroz)==0){
                    printf("%d,%s,%s,%s\n", pv->age, pv->pol, pv->obroz, pv->otvet);
                    flak=true;
                }
        pv=pv->next;
    }
if (!flak)
    printf(Rus("Нет таких анкет\n"));
    return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru