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

С++ для начинающих

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

программа на структуры. (немного доделать фильтрацию) - C++

27.12.2009, 22:06. Просмотров 272. Ответов 0
Метки нет (Все метки)

В общем нужно создать файл данных заданной структуры
”СТУДЕНТ”: ФИО,Город проживания, Институт, Группа,Число сессий, Средний балл
А) Получить список студентов из одного города.
Б) Получить список студентов,обучающихся в одном вузе, сдавших сессии на «4» и «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
#include "stdafx.h"
#include "stdio.h"
#include "stdlib.h"
#include "string.h" 
#include "iostream.h" 
#include "iomanip.h"
typedef struct 
{
        char  fio[30];
    char gorod[15];
           char institut[10];
    char gruppa[7];
    char sesiya[2];
    char bal[2];
 
} stud; 
int main()
{
stud *st;
FILE *pf;
int var, i,j;  
long int n;
var=-1;
while(var!=0)
{
cout<<"0-vyhod; 1-zapis`; " 
        <<"2-dobavlenie;"
        <<"3-pervoe zadanie;"
        <<"4-vtoroe zadanie: vybor=";
cin>>var;
switch(var)
{
case 1:
cout<<"kolichestvo="; cin>>n;
st=(stud*)malloc(n*sizeof(stud));
//заполнение массива структур
for(i=0;i<=n-1;i++)
{
cout<<"fio="; cin>>((st+i)->fio);
cout<<"gorod prozivaniya="; cin>>((st+i)->gorod);
cout<<"institut="; cin>>((st+i)->institut);
cout<<"gruppa=";cin>>((st+i)->gruppa);
cout<<"kol-vo sessii="; cin>>((st+i)->sesiya);
cout<<"srednii bal="; cin>>((st+i)->bal);
}
//файл открывается для записи
if((pf=fopen("my_f.dat","w"))==NULL)
{
    printf("файл не открыт\n"); break;
}
//запись в файл
fwrite(st, sizeof(stud), n, pf);
fclose(pf);
free(st);
break;
case 2:
cout<<"kolichestvo"; 
cin>>n;
st=(stud*)malloc(n*sizeof(stud));
//заполнение массива структур
for(i=0;i<=n-1;i++)
{
cout<<"fio="; cin>>((st+i)->fio);
cout<<"gorod prozivaniya="; cin>>((st+i)->gorod);
cout<<"institut="; cin>>((st+i)->institut);
cout<<"gruppa=";cin>>((st+i)->gruppa);
cout<<"kol-vo sessii="; cin>>((st+i)->sesiya);
cout<<"srednii bal="; cin>>((st+i)->bal);
}
//файл открывается для добавления
if((pf=fopen("my_f.dat","a"))==NULL)
{
    printf("файл не открыт\n"); break;
}
//дозапись в файл
fwrite(st, sizeof(stud), n, pf);
fclose(pf);
free(st);
break;
case 3:
//файл открывается для чтения
if((pf=fopen("my_f.dat","r"))==NULL)
{
    printf("файл не открыт\n"); break;
}
//Г®определение длины файла в байтах
fseek(pf, 0, SEEK_END);
n=ftell(pf);
//n - количество записей в файле
n=n/sizeof(stud);
st=(stud*)malloc(n*sizeof(stud));
rewind(pf);
//заполненение массива структур
fread(st, sizeof(stud), n, pf);
char s[15];
cout<<"vvedite gorod "; 
cin>>s;
for(i=0;i<=n;i++)
if (st[i].gorod[i]==s[i])
{
    cout<<"iz etogo goroda " <<st[i].fio<<endl;
 
}
free(st);
break;
case 4:
 
if((pf=fopen("my_f.dat","r"))==NULL)
{
    printf("файл не открыт\n"); break;
}
 
fseek(pf, 0, SEEK_END);
n=ftell(pf);
n=n/sizeof(stud);
st=(stud*)malloc(n*sizeof(stud));
rewind(pf);
fread(st, sizeof(stud), n, pf);
char v[10];
cout<<"vvedite institut ";
cin>>v;
for(i=0;i<=n-1;i++)
    for (j=0;j<=(strlen(v));j++)
    {{
    if (st[i].institut[j]==v[j])
     cout<<"iz etogo vuza sdali na 4 ili 5 " <<st[i].fio<<endl;
    }
}
fclose(pf);
free(st);
break;
}
}return 1;
}
Добавлено через 1 час 54 минуты
Сейчас переделал, всё работает кроме
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
char v[10];
char ocenka4[]="4";
char ocenka5[]="5";
cout <<ocenka4<<endl;
cout <<ocenka5<<endl;
cout<<"vvedite institut ";
cin>>v;
for(i=0;i<=n-1;i++)
    {
 
   if ((strcmp(v,st[i].institut))==0 &&
      (strcmp(ocenka4,st[i].bal))==0 ||
       strcmp(ocenka5,st[i].bal)==0)
 
    
     cout<<"iz etogo vuza sdali na 4 ili 5 " <<st[i].fio<<endl;
    
}
fclose(pf);
free(st);
break;
}
неверно выводит фамилии, почему то всех у кого балл =4 или 5, независимо от института.
Может кто знает в чем ошибка?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.12.2009, 22:06
Здравствуйте! Я подобрал для вас темы с ответами на вопрос программа на структуры. (немного доделать фильтрацию) (C++):

Нужно немного доделать программу - C++
Ввести класс для работы с обьектом дробь и реализовать 1) сложение(вычитание) 2)приведение к несократимому виду 1 )пункт программа...

нужно доделать игру немного)(кому не сложно) - C++
#include &lt;iostream&gt; #include &lt;windows.h&gt; #include &lt;conio.h&gt; using namespace std; void main() { #pragma region Объявления ...

Структуры(совсем немного переделать) - C++
#include &lt;iostream.h&gt; #include &lt;stdio.h&gt; #include &lt;conio.h&gt; struct TStudent{ char Name; int Balls; }; ...

Динамические структуры данных. Программа ввода в структуры и вывода информации из неё. - C++
Автоматизированная информационная система на железнодорожном вокзале содержит сведения об отправлении поездов дальнего следования. Для...

программа которая переводит введенные числа в буквенную начертанию (надо немного исправить) - C++
Уважаемые программисты, помогите исправить программу, программа должна введенное с клавиатуры число переводить в письменное начертание,...

Программа на структуры - C++
Написать программу обработки файла типа запись, содержащую следующие пункты меню: - Создание, - Просмотр, - Коррекция – добавление...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.12.2009, 22:06
Привет! Вот еще темы с ответами:

Программа на структуры - C++
Помогите написать программу со структурами, выдает куча ошибок..=( : &quot;Ввести в комп. информацию про сотрудников отдела: Фамилия, Имя,...

Программа разветвленной структуры - C++
даны четыре числа. Вычислить сумму положительных среди них чисел

программа развлетленной структуры - C++
Пользователь вводит четыре числа. Найти сумму положительных среди них чисел. #include &lt;stdio.h&gt; ...

простая программа на структуры с++ - C++
Помогите, пожалуйста, написать программу на структуры С++, не могу разобраться..думаю, все не так сложно, как мне кажется месяц=(Jan,...


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

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

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