Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
EgPetr
0 / 0 / 0
Регистрация: 03.01.2017
Сообщений: 4
1

Как заполнить динамический массив типа "Класс"?

03.01.2017, 15:36. Просмотров 258. Ответов 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
#include <string.h>
 
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#define LEN 50
 
using namespace std;
 
class Worker 
{
private: 
    char* famili,dolznost;
 
        int god; 
public: 
    Worker(char* famili, char* dolznost, int god) 
    {
        famili=0;
        dolznost=0;
        god=0;
        }
          Worker(const Worker &obj)
    {      
        cout <<"Конструктор копирования\n";
    }
        ~Worker()
        {
            cout << "Tut srabotal destructor"; 
        }
Необходимо заполнить динамический массив типа класс, считывая информацию из файла
я делаю это так
 
 
 
int main()
{   
    int a=10;
 
    char* fam;
    char* dol;
    char* god1;
    int pos,i,end;
    fam= new char;
    dol= new char;
    god1= new char;
 
 Worker **mas= new Worker*[a];
 
 
 char cArray[LEN];
        FILE *f = fopen("Zada4a.txt", "r");
        if(f == NULL)
         puts("Ne mogu otkrit file!");        
        {
        fseek(f, 0, SEEK_END); 
end = ftell(f); 
fseek(f,0,SEEK_SET); 
pos = ftell(f); 
while (pos<end)
{
 
                fscanf(f,"%s%s%s",fam,dol,god1) ; 
 for (i=0;i<a;i++)
 {
    mas.famili[i]=fam;
    mas.dolznost[i]=dol;
    mas.god[i]=atoi(god1);
}
                    pos=ftell(f);
}
}
}
Наверное я что-то делаю неправильно, не проходит компиляция выдается ошибка

[Error] request for member 'famili' in 'mas', which is of non-class type 'Worker**'

про должность и год тоже самое

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.01.2017, 15:36
Ответы с готовыми решениями:

Класс "Динамический массив точек", в котором лежит класс Point
Такое вот условаие. Не могу понять что от меня хотят. Может кто или обьяснить...

Класс "динамический массив" - добавление и удаление элементов в рантайме
#ifndef ARRAY// if not defined #define ARRAY Class ARRAY{ Public ...

Класс "Динамический одномерный массив целых чисел"
Задача заключается в том что нужно Создать класс - одномерный динамический...

Разработать класс "динамический массив целых чисел" с конструкторами и деструкторами
Динамический одномерный массив целых чисел Базовый класс: Конструкторы: по...

Класс "динамический массив", перегрузка операторов +, =
Делаю класс динамического массива. Перегружая при этом операторы. На данный...

3
nd2
2838 / 2405 / 1057
Регистрация: 29.01.2016
Сообщений: 8,046
03.01.2017, 15:54 2
Для начала:
Цитата Сообщение от EgPetr Посмотреть сообщение
char* famili,dolznost;
C++
1
char* famili, *dolznost;
Тут под один символ память выделяешь:
Цитата Сообщение от EgPetr Посмотреть сообщение
fam= new char;
dol= new char;
god1= new char
0
zss
Модератор
Эксперт С++
7460 / 6836 / 4317
Регистрация: 18.12.2011
Сообщений: 18,086
Завершенные тесты: 1
03.01.2017, 16:17 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
#include <string.h>
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
class Worker 
{
private: 
    char famili[100],dolznost[100];
 
    int god; 
public: 
    Worker(char* famili, char* dolznost, int god) 
    {
        strcpy(this->famili,famili);
        strcpy(this->dolznost,dolznost);
        this->god=god;
    }
    Worker() 
    {
        famili[0]=0;
        dolznost[0]=0;
        god=0;
    }
    Worker(const Worker &obj)
    {      
        puts("Конструктор копирования\n");
        strcpy(this->famili,obj.famili);
        strcpy(this->dolznost,obj.dolznost);
        this->god=obj.god;
    }
    ~Worker()
    {
        puts("Tut srabotal destructor"); 
    }
    void Print()
    {
        printf("%s %s %d\n",famili,dolznost,god);
    }
};
 
 
//Необходимо заполнить динамический массив типа класс, считывая информацию из файла
//  я делаю это так
int main()
{   
    const int a=10;
 
    char fam[100];
    char dol[100];
    int god1,n=0,i;
    
    Worker* mas[a];
    FILE *f = fopen("Zada4a.txt", "r");
    if(f == NULL)
    {
        puts("file not open!"); 
        getch();
        return 1;
    }
    for (i=0;i<a;i++)
    {
 
        if(fscanf(f,"%s%s%d",fam,dol,god1)==EOF)
            break; 
        mas[i]=new Worker(fam,dol,god1);
    }
    n=i;
    for (i=0;i<n;i++)
    {
        mas[i]->Print();
    }
    for (i=0;i<n;i++)
        delete mas[i];
    system("pause");
    return 0;
}
Кстати, почему Вы используете Сишный ввод-вывод в С++ коде?
0
EgPetr
0 / 0 / 0
Регистрация: 03.01.2017
Сообщений: 4
03.01.2017, 16:42  [ТС] 4
Не работает,программа зависает.

Добавлено через 43 секунды
С++ ввод/вывод у меня не получился.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.01.2017, 16:42

Класс "Двумерный динамический массив"
Программа вылетает при вызове деструктора. Подскажите почему это происходит. ...

Класс "Динамический одномерный массив"
Задания: Динамический одномерный массив целых чисел Базовый класс:...

Класс "Студент", реализовать динамический список "Группа студентов"
реализовать динамический список &quot; группа студентов&quot;. Узел: -группа ...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru