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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ одномерный массив http://www.cyberforum.ru/cpp-beginners/thread80671.html
помогитерешить задачу на языке C: В произвольно заданном одномерном массиве определить 4 элемента с наибольшими значениями.Определить, сколько отрицательных значений оказалось среди найденных
C++ Разбить текст на строки Пожалуйста, помогите разбить заданный текст на строки длиной <= фиксированного числа, вставив символ '\n' между словами http://www.cyberforum.ru/cpp-beginners/thread80658.html
C++ Структура данных Struct
Совершенно не знаю как делать. Теории нет а на практике учится не умею. Мне дали пример, но что как и зачем в нем понять не могу. struct op { char avtor,nazv; int...
C++ генератор псевдослучайных чисел незнаю как доделать...
воть он: #include <iostream> #include <stdio.h> #define RAND_MAX 32767 unsigned long next = 1 ; int rand(void) { next=next*1103515245+12345;
C++ матрица 7x7 http://www.cyberforum.ru/cpp-beginners/thread80652.html
в квадратной матрице 7х7, заполненной случайными числами, все отрицательные числа увеличить на два, положительные уменьшить в два раза и занулить главную диагональ помогите пожалуйста решить
C++ Написать программу, которая выводит на экран изображение Need help!!!! Помогите решить задачи на языке С++!!! 1) http://s43.***********/i099/0912/73/1ad82a4c22cf.jpg 2) http://s43.***********/i099/0912/7a/7e91706c7c87.jpg 3)... подробнее

Показать сообщение отдельно
Sashko
Сообщений: n/a

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

27.12.2009, 22:06. Просмотров 269. Ответов 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, независимо от института.
Может кто знает в чем ошибка?
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru