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

Переделать запись в файл информации о студенте через структуру - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ С клавиатуры вводится строка. Составить программу, которая подсчитывает количество знаков препинания в тексте; http://www.cyberforum.ru/cpp-beginners/thread1208191.html
C++ С клавиатуры вводится строка. Составить программу, которая подсчитывает количество знаков препинания в тексте;выводит все слова, имеющие четное количество букв.
C++ Разница между двумя библиотеками потоков В чем разница между стандартной библиотекой управления потоками <thread> и управлениями потоками через WinAPI?Преимущества и тд. Расскажите пожалуйста http://www.cyberforum.ru/cpp-beginners/thread1208186.html
C++ Нажатие на клавиши стрелок, задержка
Привет всем. Пишу игру в консоли. Нужно быстрое реагирование на нажатие клавиш. Все вроде уже написано,но тут есть некоторые моменты - если я ставлю управление моей фигурой клавишами w,s,a,d ,то все происходит мгновенно,но если меняю это на клавиши стрелок 80,72... то происходит задержка в милисекунды. Код не привожу,может кто знает в чем трабл и без него. Если нужен, то пришлю) буду очень...
Дан вектор B(m) и номер строки. Вставить элементы вектора как новую строку в матрицу C++
Помогите пожалуйста с задачей. Дан вектор В(m) и номер строки. Вставить элементы вектора как новую строку в матрицу.
C++ Перегрузка потокового ввода-вывода http://www.cyberforum.ru/cpp-beginners/thread1208159.html
Доброго времени суток!!! Возникла такая проблема: необходимо сделать перегрузку операций << и >>. Вот что у меня есть: friend istream& operator>>(istream& stream, worker& p) { cout<<"\nИмя кадра : "; stream>>p.name; cout<<"\nНомер кадра : "; stream>>p.position; cout<<"\nРазряд кадра : ";
C++ Сортировка пузырьком Требуется отсортировать пузырьком элементы массива, которые находятся на непарных позициях. подробнее

Показать сообщение отдельно
IIARTEMII
20 / 20 / 3
Регистрация: 14.06.2012
Сообщений: 95
Завершенные тесты: 1
15.06.2014, 10:48     Переделать запись в файл информации о студенте через структуру
Много вариантов есть, например завести одну функцию, которая будет заполнять массив данными из файла, вторую функцию, которая будет эти данные обрабатывать, и третью функцию, которая будет эти данные выводить.
C++
1
2
3
4
5
6
void ReadData(ifstream& stream, student& st); // чтение из файла 1 записи
int Analyze(const student& st); // анализ успеваемости и возврат значения (l - у вас в коде)
void WriteData(ofstream& stream, const student& st); // внести одну запись в файл
// --- следующий код ниже перед записью
    if (Analyze(st[i]))
        WriteData(L, st[i]);
При подходе выше чтение необходимо обернуть в цикл, чтобы сразу всё прочитать:
Кликните здесь для просмотра всего текста
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
#include <iostream>
#include <fstream>
using namespace std;
 
struct student { // структура "студент"
    int curs, gruppa, uspev[10][5];
    char fam[20], name[20], otc[20];
};
 
void ReadData(ifstream& stream, student& st) {          // чтение из файла 1 записи
    if (!stream)    // если что-то не так
        return;
    stream >> st.fam;
    stream >> st.name;
    stream >> st.otc;
    stream >> st.curs;
    stream >> st.gruppa;
 
    for (int i = 0; i < st.curs * 2; i++)
        for (int j = 0; j < 5; j++)
            stream >> st.uspev[i][j];
}
int Analyze(const student& st) {                        // анализ успеваемости и возврат значения (l - у вас в коде)
    for (int i = 0; i < st.curs * 2; i++)
        for (int j = 0; j < 5; j++)
            if (st.uspev[i][j] == 2)
                return 0;
    return 1;
}
void WriteData(ofstream& stream, const student& st) {   // внести одну запись в файл
    stream << st.fam << " " << st.name << " " << st.otc << " " << st.curs << " " <<
    st.gruppa << " ";
    for (int i = 0; i < st.curs * 2; i++)
        for (int j = 0; j < 5; j++)
            stream << st.uspev[i][j] << " ";
}
 
int main() {
    student *st;    // указатель на объект структуры "студент"
    // открытие файлов на чтение и запись
    ifstream F;
    F.open("Student.txt");
    ofstream L;
    L.open("NewFile.txt");
 
    int n;                  // временная переменная для хранения количества студентов
    F >> n;                 // так как первая строка - кол-во студентов, то читаем её
    st = new student[n];    // выделяем память под n-студентов
 
    // чтение из файла
    for (int _i = 0; _i < n && !F.eof(); ++_i)
        ReadData(F, st[_i]);
 
    for (int _i = 0; _i < n; ++_i)
        // проверка на наличие неудовлетворительных оценок
        // если неудовлетворительных оценок нет, то производим запись в файл
        if (Analyze(st[_i]))
            WriteData(L, st[_i]);
 
    F.close();
    L.close();
    delete [] st;   // освобождаем память
    return 0;
}

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