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

Бинарный файл, не проходит проверка - C++

Восстановить пароль Регистрация
 
baduk
0 / 0 / 0
Регистрация: 15.11.2013
Сообщений: 6
01.04.2014, 02:09     Бинарный файл, не проходит проверка #1
вообщем делаю курсовую, нужно создать базу данных которая из текстового файла делает бинарный файл и потом следующая программа берет информацию из бинарного файла, вообщем с созданием бинарного файла вопросов нет вопрос по считыванию информации во второй программа, дело в том что в базе данных присутствует такая графа как пол человека, и мне нужно отбрать только женский пол, но проверка p.pol == 'ж' не срабатывает, подскажите как правильно записать эту проверку, я пробывал присваивать значение p.pol чаровской переменной и печатать ее, выводился квадрат с единицами и нулями, я так понял это из за бинарного файла, но как тогда сделать проверку, подскажите


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
#include <stdio.h>
#include <string.h>
#include "person.h"
#include "group.h"
float b; // группа с макс числом учениц с макс баллом
float x; // кол-во учениц в пред идущей группе
float r;
int n=0; // счетчик
float c; // номер группы второй цикл
float q=0; // номер группы
float m=0; // макс сред балл
int main(int argc, char * argv[])
{
    FILE * file;
    file = fopen(argv[1], "r");
    int i;
    int table = 0;
 
    struct group g[8];
    memset(g, 0, sizeof(g));
 
    if (argc >= 3)
        if (argv[2][1] == 't')
            table = 1;
 
    person p;
    printf("--------------------|---------|--------|-------|-------|-------|--------|---------|\n");
        printf("Фамилияя            |   пол   | Группа | Матан | Инфа  | Линал | Дискра | История |\n");
    while (fread(&p, 1, sizeof(person), file))
    {     
                                      
        float tmp = (p.dm + p.his + p.inf + p.matan + p.linal) / 5.0f;
        if (tmp>=m && p.pol == 'ж') {m = tmp; q=p.groupID;} n++;
        
                         //фамилия           пол       группа  матан    инфа      линал  дискра   история
            printf("--------------------|---------|--------|-------|-------|-------|--------|---------|\n");
            printf("%-*s|    %s    |   %d    |    %d  |    %d  |    %d  |    %d   |     %d   |\n",
                   (int)strlen(p.name) + 20 - (int)strlen(p.name) / 2,
                   p.name,
                                   p.pol,
                   p.groupID,
                   p.matan,
                   p.inf,
                   p.linal,
                   p.dm,
                   p.his);
        
}   
    
           printf("--------------------|---------|--------|-------|-------|-------|--------|---------|\n");
        
    
            printf ("максимальный средний балл у студенток  %.2f\n%.0f-номер группы\n%d число студентов\n", m, q, n);
fclose (file);
 
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.04.2014, 02:09     Бинарный файл, не проходит проверка
Посмотрите здесь:

Бинарный файл C++
бинарный файл C++
C++ Бинарный файл
С++ Бинарный файл C++
Бинарный файл C++
C++ Бинарный файл, ASCII
Бинарный файл C++
C++ Бинарный файл (с++) и структуры
C++ Условие в функции, некорректно проходит проверка дробного числа
C++ Бинарный файл
C++ Добавление в бинарный файл
Создать бинарный файл и текстовый файл C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alsav22
5284 / 4803 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
01.04.2014, 05:06     Бинарный файл, не проходит проверка #2
Структуру не видно. Нужен код программы, которая создаёт файл.
baduk
0 / 0 / 0
Регистрация: 15.11.2013
Сообщений: 6
01.04.2014, 18:06  [ТС]     Бинарный файл, не проходит проверка #3
вот код создающий бинарный файл:
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
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "person.h"
 
int main(int argc, char* argv[])
{
    FILE * file;
    int i, j;
 
    if (argv[2][1] == 'a')
    {
        file = fopen(argv[1], "a+");
        person p;
 
        for (i = 3; i < argc; i += 2)
        {
            switch ( argv[i][1] )
            {
            case 'g':
                p.groupID = atoi( argv[i+1]);
                break;
 
            case 'm':
                p.matan = atoi ( argv[i+1]);
                break;
 
            case 'l':
                p.linal = atoi ( argv[i+1]);
                break;
 
            case 'i':
                p.inf = atoi ( argv[i+1]);
                break;
 
            case 'd':
                p.dm = atoi ( argv[i+1]);
                break;
 
            case 'h':
                p.his = atoi ( argv[i+1]);
                break;
 
            case 'n':
                for (j = 0; j < 50; j++)
                {
                    p.name[j] = argv[i + 1][j];
                    if (p.name[j] == '\0')
                    {
                        break;
                    }
                }
                 case 'p':
                for (j = 0; j < 50; j++)
                {
                    p.pol[j] = argv[i + 1][j];
                    if (p.pol[j] == '\0')
                    {
                        break;
                    }
                }   
    
                break;
            }
        }
 
        fwrite(&p, sizeof(person), 1, file);
        fclose(file);
        return 0;
    }
 
    if (argv[2][1] == 't')
    {
        file = fopen(argv[1], "r");
        person p;
        printf("Фамилия             | Группа | Матан | Р˜нфа  | Линал | Дискра | Р˜стория |\n");
        printf("--------------------|--------|-------|-------|-------|--------|---------|\n");
 
        while (fread(&p, sizeof(person), 1, file))
        {
            printf("%-*s|   %d    |    %d  |    %d  |    %d  |    %d   |     %d   |\n",
                   (int)strlen(p.name) + 20 - (int)strlen(p.name) / 2,
                   p.name,
                   p.groupID,
                   p.matan,
                   p.inf,
                   p.linal,
                   p.dm,
                   p.his);
        }
        printf("--------------------|--------|-------|-------|-------|--------|---------|\n");
        fclose(file);
        return 0;
    }
 
    if (argv[2][1] == 'f')
    {
        person p;
        FILE * txt;
        file = fopen(argv[1], "w");
        txt = fopen(argv[3], "r");
 
        while (fscanf(txt, "%s%s%d%d%d%d%d%d",
                       p.name,
                               p.pol,
                      &p.groupID,
                      &p.matan,
                      &p.inf,
                      &p.linal,
                      &p.dm,
                      &p.his) != EOF)
        {
            fwrite(&p, sizeof(person), 1, file);
        }
 
        fclose(file);
        fclose(txt);
    }
 
    return 0;
}
alsav22
5284 / 4803 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
01.04.2014, 18:43     Бинарный файл, не проходит проверка #4
Цитата Сообщение от baduk Посмотреть сообщение
вот код создающий бинарный файл:
???
Цитата Сообщение от alsav22 Посмотреть сообщение
Структуру не видно.
Yandex
Объявления
01.04.2014, 18:43     Бинарный файл, не проходит проверка
Ответ Создать тему
Опции темы

Текущее время: 11:30. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru