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

Создайте файл Студент. Занесите в отдельный файл записи из файла Студент, добавив сведения о новых студентах - C++

Восстановить пароль Регистрация
 
Eternal123
0 / 0 / 0
Регистрация: 07.11.2012
Сообщений: 50
06.06.2013, 12:43     Создайте файл Студент. Занесите в отдельный файл записи из файла Студент, добавив сведения о новых студентах #1
Создайте файл Студент. Занесите в отдельный файл записи из файла Студент, добавив сведения о новых студентах


Вид файла студент:
структура записи:
ФИО (40 знаков)
номер курса (1 знак)
номер группы (1 знак)
успеваемость - 5 экзаменов в каждой из 10 сессий
форма обучения (целевая, договорная) (1 знак)

собственно прошу помощи, потому что не имею представления по поводу работы с файлами.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.06.2013, 12:43     Создайте файл Студент. Занесите в отдельный файл записи из файла Студент, добавив сведения о новых студентах
Посмотрите здесь:

Создайте текстовый файл, содержащий сведения о клиентах фирмы: C++
[C++] Создать класс студент и классы бюджетный студент и коммерческий студент. C++
Типизированный файл. Сведения о студентах. Стипендия C++
Дан символьный файл, содержащий сведения о студентах группы. Записать эти сведения в файл g, используя образцы C++
C++ Как вставить функцию (структура Студент (поля: ФИО и 4 оценки за экзамен) - вывести данные о студентах, сдавших сессию без троек)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Vourhey
Почетный модератор
6468 / 2243 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
06.06.2013, 12:48     Создайте файл Студент. Занесите в отдельный файл записи из файла Студент, добавив сведения о новых студентах #2
Читай документацию по fstream'ам. Потом спрашивай.
Eternal123
0 / 0 / 0
Регистрация: 07.11.2012
Сообщений: 50
06.06.2013, 13:45  [ТС]     Создайте файл Студент. Занесите в отдельный файл записи из файла Студент, добавив сведения о новых студентах #3
ну а пример можно какой нибудь? как перенести записи из файла студент в новый файл?
Vourhey
Почетный модератор
6468 / 2243 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
06.06.2013, 13:54     Создайте файл Студент. Занесите в отдельный файл записи из файла Студент, добавив сведения о новых студентах #4
Методы read и write. Если правильно переопределены операторы >> и << для твоей записи, то можно использовать их.
Eternal123
0 / 0 / 0
Регистрация: 07.11.2012
Сообщений: 50
07.06.2013, 10:28  [ТС]     Создайте файл Студент. Занесите в отдельный файл записи из файла Студент, добавив сведения о новых студентах #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
/*
 Файл судент:
 *ФИО (40 знаков)
 *номер курса (1 знак)
 *номер группы (1знак)
 *успеваемость (5 экзаменов из 10 сессий)
 *форма обучения (целевая, договорная)(1 знак)
 *экзамен: наименование предмета(10 знаков), оценка(1 знак)
 
 Записи упорядоченны по номеру курса, внутри курса по номеру группы, внутри
 группы по ФИО
 
 ///////////////////////////////////////////////////////////////////////
 
 №3
Создайте файл Студент. Занесите в отдельный файл записи из файла Студент, добавив сведения о новых студентах
*/
#include "stdafx.h"
#include <iostream>
#include <fstream>
#include <string>
#include <vector>
#include <sstream>
using namespace std;
 
//using namespace System;
struct student_info
{
    string family_name;
    string name;
    string last_name;
    int kurs;
    int grupp;
    int exam[5];
    char form;
    string exam_name;
    int mark;
} ;
void readstudents( vector <student_info> *a)
{
    ifstream *inp= new ifstream("student.txt");
    while(!inp->eof()) {
        student_info c;
        *inp>>c.family_name;
        *inp>>c.name;
        *inp>>c.last_name;
        *inp>>c.kurs;
        *inp>>c.grupp;
        for(unsigned int d=0;d<5;d++)
        {
            *inp>>c.exam[d];
        }
        *inp>>c.form;
        *inp>>c.exam_name;
        *inp>>c.mark;
        a->push_back(c);
    }
    a->pop_back();
    
 
    }
    void writestudents(vector<student_info> *a)
    {
        ofstream *out=new ofstream("student2.txt");
        for(unsigned int b=0;b<a->size();++b)
        {
            *out<<((*a)[b]).family_name<<' ';
            *out<<((*a)[b]).name<<' ';
            *out<<((*a)[b]).last_name<<' ';
            *out<<((*a)[b]).kurs<<' ';
            *out<<((*a)[b]).grupp<<' ';
        
            
                *out<<((*a)[b]).exam[5]<<' ';
        
            *out<<((*a)[b]).form<<' ';
            *out<<((*a)[b]).exam_name<<' ';
            *out<<((*a)[b]).mark<<' ';
            *out<<endl;
        }
    }
 
 
int main()
{
   vector <student_info> a, b;
   readstudents( &a );
 
   {   student_info c;
       bool flag = true;
       do {
           cin>>c.family_name;
           if (c.family_name=="end")
           {flag=false;
           }
           else {
               cin>>c.name;
               cin>>c.last_name;
               cin>>c.kurs;
               cin>>c.grupp;
               cin>>c.exam[5];
               cin>>c.form;
               cin>>c.exam_name;
               cin>>c.mark;
               b.push_back (c);
           }
       }while (flag);
        writestudents( &b );
 
   }
 
 
   return 0;
}
почему то не робит. запускаю консольку, ввожу записи новые, но файл студент2 не изменяется. концом служит end. если сразу ввести end, файл изменяется, но остается пустым, а должны хотя бы добавиться записи из файла студент
Eternal123
0 / 0 / 0
Регистрация: 07.11.2012
Сообщений: 50
11.06.2013, 20:38  [ТС]     Создайте файл Студент. Занесите в отдельный файл записи из файла Студент, добавив сведения о новых студентах #6
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
 Файл судент:
 *ФИО (40 знаков)
 *номер курса (1 знак)
 *номер группы (1знак)
 *успеваемость (5 экзаменов из 10 сессий)
 *форма обучения (целевая, договорная)(1 знак)
 *экзамен: наименование предмета(10 знаков), оценка(1 знак)
 
 Записи упорядоченны по номеру курса, внутри курса по номеру группы, внутри
 группы по ФИО
 
 ///////////////////////////////////////////////////////////////////////
 
 
*/
#include "stdafx.h"
#include <iostream>
#include <fstream>
#include <string>
#include <vector>
#include <sstream>
using namespace std;
 
//using namespace System;
struct student_info
{
    string family_name;
    string name;
    string last_name;
    int kurs;
    int grupp;
    int exam[5];
    char form;
    string exam_name;
    int mark;
} ;
void readstudents( vector <student_info> *a)
{
    ifstream *inp= new ifstream("student.txt");
    while(!inp->eof()) {
        student_info c;
        *inp>>c.family_name;
        *inp>>c.name;
        *inp>>c.last_name;
        *inp>>c.kurs;
        *inp>>c.grupp;
        for(unsigned int d=0;d<5;d++)
        {
            *inp>>c.exam[d];
        }
        *inp>>c.form;
        *inp>>c.exam_name;
        *inp>>c.mark;
        a->push_back(c);
    }
    a->pop_back();
    
 
    }
    void writestudents(vector<student_info> *a)
    {
        ofstream *out=new ofstream("student2.txt");
        for(unsigned int b=0;b<a->size();++b)
        {
            *out<<((*a)[b]).family_name<<' ';
            *out<<((*a)[b]).name<<' ';
            *out<<((*a)[b]).last_name<<' ';
            *out<<((*a)[b]).kurs<<' ';
            *out<<((*a)[b]).grupp<<' ';
            //*out<<((*a)[b]).<<' ';
            for(unsigned int d=0;d<5;++d)
            {
                *out<<((*a)[b]).exam[d]<<' ';
            }
            *out<<((*a)[b]).form<<' ';
            *out<<((*a)[b]).exam_name<<' ';
            *out<<((*a)[b]).mark<<' ';
            *out<<endl;
        }
    }
 
 
int main()
{
   vector <student_info> a, b;
   readstudents( &a );
   for (unsigned int c = 0; c < a.size(); ++c)
   {
      
 
       
          
       b.push_back(a[c]);
   }
   student_info c;
   bool flag = true;  
     do {
           cin>>c.family_name;
           if (c.family_name=="end")
           {flag=false;
           }
           else {
               cin>>c.name;
               cin>>c.last_name;
               cin>>c.kurs;
               cin>>c.grupp;
               cin>>c.exam[5];
               cin>>c.form;
               cin>>c.exam_name;
               cin>>c.mark;
               b.push_back (c);
           }
       }while (flag);
   writestudents( &b );
    return 0;
}
при вводе end все работает - данные из файла студент копируются в студент2, а при попытке ввести доп. строки, которые нужно добавить к имеющимся - ничего не происходит. хелп плз
Yandex
Объявления
11.06.2013, 20:38     Создайте файл Студент. Занесите в отдельный файл записи из файла Студент, добавив сведения о новых студентах
Ответ Создать тему
Опции темы

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