0 / 0 / 0
Регистрация: 07.10.2019
Сообщений: 78
1

Прочитать данные из файла и занести их в массив структур

05.02.2020, 14:07. Показов 712. Ответов 1
Метки c++ (Все метки)

Author24 — интернет-сервис помощи студентам
Программа должна с файла считать данные и занести их в массив.
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
#include <iostream>
#include <fstream>
#include <string>
#include <ctime>
#include <Windows.h>
using namespace std;
 
    ifstream in("file.txt");
 
class Worker {
    string name;
    unsigned short year;
    string profession;
    unsigned int fee;
    string country;
public:
    Worker(){}
    Worker(string n, unsigned short y, string p, unsigned int f, string c) {
        name = n;
        year = y;
        profession = p;
        fee = f;
        country = c;
    }
    Worker(const Worker &l) {
        name = l.name;
        year = l.year;
        profession = l.profession;
        fee = l.fee;
        country = l.country;
    }
    string get_name() {
        return name;
    }
    short get_year() {
        return year;
    }
    string get_profession() {
        return profession;
    }
    int get_fee() {
        return fee;
    }
    string get_country() {
        return country;
    }
    void set_name() {
        in >> name;
    }
    void set_year() {
        in >> year;
    }
    void set_profession() {
        in >> profession;
    }
    void set_fee() {
        in >> fee;
    }
    void set_country() {
        in >> country;
    }
 
    ~Worker(){}
};
 
int main()
{
    string line;
    unsigned int lines = 0;
    while (getline(in, line)) {
        lines++;
    }
    int n = lines / 5;
    Worker *mas = new Worker[n];
    for (int i = 0; i < n; i++) {
        mas[i].set_name();
        mas[i].set_year();
        mas[i].set_profession();
        mas[i].set_fee();
        mas[i].set_country();
    }
    for (int i = 0; i < n; i++) {
        cout << mas[i].get_name() << endl;
        cout << mas[i].get_year() << endl;
        cout << mas[i].get_profession() << endl;
        cout << mas[i].get_fee() << endl;
        cout << mas[i].get_country() << endl;
    }
 
}
Данные в файле:

Alex
17
Programmer
800
Ukraine
Igor
34
Waiter
453
France
Stepan
27
Builder
575
Italy
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
05.02.2020, 14:07
Ответы с готовыми решениями:

Прочитать из текстового файла данные в массив структур
Структура типа: Фамилия,логин,пароль,роль(администратор, модератор, простой пользователь) Не могу...

Как прочитать данные из файла и занести их в класс
Здравствуйте. Мне необходима ваша помощь в следующем вопросе. У меня имеется файл текстовый файл,в...

Прочитать определенные строки из файла, занести в массив и вывести в консоль
есть файл { Имя : Александр, Фамилия : Александров, Возраст : 20 }, { Город : Москва, ...

Прочитать из файла в массив структур информацию о друзьях
Подготовить текстовый файл, содержащий информацию о друзьях: фамилия и инициалы, дата рождения,...

1
Модератор
Эксперт С++
13498 / 10752 / 6407
Регистрация: 18.12.2011
Сообщений: 28,692
05.02.2020, 14:25 2
Если только исправить ошибки компиляции, то получим такое:
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
#include <iostream>
#include <fstream>
#include <string>
#include <ctime>
#include <Windows.h>
using namespace std;
 
 
class Worker {
    string name;
    unsigned short year;
    string profession;
    unsigned int fee;
    string country;
public:
    Worker() {}
    Worker(string n, unsigned short y, string p, unsigned int f, string c) {
        name = n;
        year = y;
        profession = p;
        fee = f;
        country = c;
    }
    Worker(const Worker &l) {
        name = l.name;
        year = l.year;
        profession = l.profession;
        fee = l.fee;
        country = l.country;
    }
    string get_name() {
        return name;
    }
    short get_year() {
        return year;
    }
    string get_profession() {
        return profession;
    }
    int get_fee() {
        return fee;
    }
    string get_country() {
        return country;
    }
    void set_name(ifstream& in) {
        in >> name;
    }
    void set_year(ifstream& in) {
        in >> year;
    }
    void set_profession(ifstream& in) {
        in >> profession;
    }
    void set_fee(ifstream& in) {
        in >> fee;
    }
    void set_country(ifstream& in) {
        in >> country;
    }
 
    ~Worker() {}
};
 
int main()
{
    ifstream in("file.txt");
    if (in)
    {
        string line;
        unsigned int lines = 0;
        while (getline(in, line)) {
            lines++;
        }
        int n = lines / 5;
        in.clear();
        in.seekg(0, ios_base::beg);
        Worker *mas = new Worker[n];
        for (int i = 0; i < n; i++) {
            mas[i].set_name(in);
            mas[i].set_year(in);
            mas[i].set_profession(in);
            mas[i].set_fee(in);
            mas[i].set_country(in);
        }
        for (int i = 0; i < n; i++) {
            cout << mas[i].get_name() << endl;
            cout << mas[i].get_year() << endl;
            cout << mas[i].get_profession() << endl;
            cout << mas[i].get_fee() << endl;
            cout << mas[i].get_country() << endl;
        }
        delete[] mas;
    }
    else
        cout << "File not open\n";
    system("pause");
    return 0;
 
}
Но, чтобы код был более менее приличным надо писать так:
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
#include <iostream>
#include <fstream>
#include <string>
//#include <ctime>
//#include <Windows.h>
using namespace std;
 
 
class Worker {
    string name;
    unsigned short year;
    string profession;
    unsigned int fee;
    string country;
public:
    Worker() {}
    Worker(string n, unsigned short y, string p, unsigned int f, string c) {
        name = n;
        year = y;
        profession = p;
        fee = f;
        country = c;
    }
    Worker(const Worker &l) {
        name = l.name;
        year = l.year;
        profession = l.profession;
        fee = l.fee;
        country = l.country;
    }
    Worker& operator=(const Worker &l) {
        name = l.name;
        year = l.year;
        profession = l.profession;
        fee = l.fee;
        country = l.country;
        return *this;
    }
 
    friend istream& operator>>(istream& in, Worker& t)
    {
        in >> t.name >> t.year >> t.profession >> t.fee >> t.country;
        return in;
    }
    friend ostream& operator<<(ostream& out,const Worker& t)
    {
        out << t.name << endl
            <<t.year << endl 
            << t.profession << endl 
            << t.fee << endl 
            << t.country << endl;
        return out;
    }
    ~Worker() {}
};
 
int main()
{
    ifstream in("file.txt");
    if (in)
    {
        string line;
        unsigned int lines = 0;
        while (getline(in, line)) {
            lines++;
        }
        int n = lines / 5;
        in.clear();
        in.seekg(0, ios_base::beg);
        Worker *mas = new Worker[n];
        for (int i = 0; i < n; i++) {
            in >> mas[i];
        }
        for (int i = 0; i < n; i++) {
            cout << mas[i];
        }
        delete[] mas;
    }
    else
        cout << "File not open\n";
    system("pause");
    return 0;
 
}
0
05.02.2020, 14:25
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
05.02.2020, 14:25
Помогаю со студенческими работами здесь

Нужно сохранить и прочитать динамический массив структур из бинарного файла
struct city{ char name_city; char metro; int year_city; int naselenie; };

Занести данные из файла txt в массив
Доброго времени суток! Прошу помочь с переносом данных из файла txt в массив В файле записаны...

Ввести данные в файл, и записать данные с файла в массив структур
Ввести все данные в файл, и записать данные с файла в структуру. Помогите ввести и вывести...

Считать данные с файла и занести их последовательно в двумерный массив
Здравствуйте. Возник следующий вопрос: мне нужно считать данные с файла и занести их...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru