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

Вывести struct через fprint - C++

Восстановить пароль Регистрация
 
OLLEGATOR
Linux-оид
 Аватар для OLLEGATOR
115 / 64 / 3
Регистрация: 15.02.2011
Сообщений: 353
07.05.2011, 19:17     Вывести struct через fprint #1
Работает всё кроме функции Show_Rezult. т.к. у меня неразбериха с fprint...подсобите если нетрудно пожалуйста...

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
#include <iostream>
#include <stdio.h>
#include <iomanip>
 
using namespace std;
const int N=10, F=5;
 
struct STUDENT{ // данные о каждом студенте...
    char family[30];
    char group[N];
    int status[F];
    float sredniy_bal;
};
 
int General_Funckshion();
void Zapolnenie_Dannih_O_Studente(STUDENT *student);
void Sortirovka_Spiska_Po_Srednemu_Ballu(STUDENT *student);
int Zapis_Dannih_v_Fayl(STUDENT *student, char *name);
void Show_Rezult(char *name);
 
int main()
{
 
    int x=General_Funckshion();
    if(x) cout<<"Код ошибки: "<<x;
 
}
 
int General_Funckshion(){
 
    STUDENT *student=new STUDENT[N];
 
    Zapolnenie_Dannih_O_Studente(student);
 
    Sortirovka_Spiska_Po_Srednemu_Ballu(student);
 
    Zapis_Dannih_v_Fayl(student,"Rezult");
 
    Show_Rezult("Rezult");
 
    delete [] student;
    return 0;
}
 
 
void Zapolnenie_Dannih_O_Studente(STUDENT *student){ // Заполняем массив структур...
 
    for(int i=0;i<N;i++){
        cout<<"Введите информацию о "<<i+1<<" студенте: \n";
        cout<<"Фамилия : ";
        cin.getline(student[i].family,30);
        cout<<"Группа: ";
        cin.getline(student[i].group,N);
        cout<<"Введите 5 оценок студента(пятибальная система): \n";
 
        double temp=0;
        for(int j=0;j<F;j++){
            cout<<j+1<<" оценка: ";
            cin>>student[i].status[j];
            temp+=student[i].status[j];
        }
        student[i].sredniy_bal=temp/F;
        cin.get(); // что-б не пролитал cin...
        cout<<"\033[2J"<<"\033[0;0H"; // чистим консоль...
    }
 
}
 
void Sortirovka_Spiska_Po_Srednemu_Ballu(STUDENT *student){ // Сортировка по возрастанию...
 
    for(int i=0;i<N;i++){
        int imin=i;
        for(int j=i+1;j<N;j++)
            if(student[j].sredniy_bal<student[imin].sredniy_bal)
                imin=j;
 
        STUDENT a= student[i];
        student[i]=student[imin];
        student[imin]=a;
    }
 
 
}
 
int Zapis_Dannih_v_Fayl(STUDENT *student, char *name){
 
    FILE *f=fopen(name,"w+");
    if(!f) { cout<<"Данные не сохранены!"; return 1; }
 
    for(int i=0;i<N;i++){
 
        fwrite(&student[i].family,sizeof(student[i].family),1,f);
     //   fputc(' ',f);
        fwrite(&student[i].group,sizeof(student[i].group),1,f);
     //   fputc(' ',f);
 
        for(int j=0;j<F;j++)
            fwrite(&student[i].status[j],sizeof(student[i].status[j]),1,f);
 
     //   fputc('\n',f);
    }
 
    fclose(f);
    return 0;
 
}
 
void Show_Rezult(char *name){ // Отображение содержимого файла...
 
    FILE *f=fopen(name,"r");
 
    fseek(f,0,SEEK_END);
    int n=ftell(f)/sizeof(STUDENT);
    fseek(f,0,SEEK_SET);
 
    STUDENT *student_for_read = new STUDENT[N];
    fread(student_for_read,sizeof(STUDENT),n,f);
 
    for(int i=0;i<n;i++){
        printf("%30s %10s %5p %f\n",student_for_read[i].family,student_for_read[i].group,student_for_read[i].status,student_for_read[i].sredniy_bal);
    }
 
 
 
 
    cout<<"\033[00m";
 
    cout<<"\033[01m"<<"\033[92m"<<"______________________________________________________________________________\n"<<"\033[00m";
 
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.05.2011, 19:17     Вывести struct через fprint
Посмотрите здесь:

C++ Объясните,почему шаблоны написаны через struct?
[c++]struct C++
C++ Программа через структуру typedef struct
C++ struct (с++)
C++ struct
Необходимо вывести элементы struct на экран C++
запись в struct через цикл C++
Степень вывести через указатель,a десятичный логарифм через функцию рекуренционную C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
OLLEGATOR
Linux-оид
 Аватар для OLLEGATOR
115 / 64 / 3
Регистрация: 15.02.2011
Сообщений: 353
07.05.2011, 21:37  [ТС]     Вывести struct через fprint #2
переделал на такой вариант :

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
void Show_Rezult(char *name){ // Отображение содержимого файла...
 
    FILE *f=fopen(name,"r");
 
    fseek(f,0,SEEK_END);
    int n=ftell(f)/sizeof(STUDENT);
    fseek(f,0,SEEK_SET);
 
    STUDENT *student_for_read = new STUDENT[N];
    fread(student_for_read,sizeof(STUDENT),n,f);
 
    for(int i=0;i<N;i++){
        printf("%30s %10s \t",student_for_read[i].family,student_for_read[i].group);
 
        for(int j=0;j<F;j++)
            printf("%d",student_for_read[i].status[j]);
 
        cout<<"\n";
    }
 
}
теперь работает первая строчка а дальше здвигается...
Миниатюры
Вывести struct через fprint  
OLLEGATOR
Linux-оид
 Аватар для OLLEGATOR
115 / 64 / 3
Регистрация: 15.02.2011
Сообщений: 353
07.05.2011, 22:43  [ТС]     Вывести struct через fprint #3
разобрался...было неполное считывание структуры как оказалось оно обязательно
Yandex
Объявления
07.05.2011, 22:43     Вывести struct через fprint
Ответ Создать тему
Опции темы

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