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

Сделать задачу, используя структуру содержащую члены-данные и члены-функции - C++

Восстановить пароль Регистрация
 
filimoncc
1 / 1 / 1
Регистрация: 02.12.2013
Сообщений: 101
13.06.2014, 21:28     Сделать задачу, используя структуру содержащую члены-данные и члены-функции #1
Решить задачу, используя структуру содержащую члены-данные и члены-функции.

Исходная информация
хранится в текстовом файле input.txt, каждая строка которого содержит полную информацию о
некотором объекте, результирующая информация должна быть записана в файл output.txt.

На основе данных входного файла составить список сотрудников учреждения,
включив следующие данные: ФИО, год принятия на работу, должность,
зарплата, рабочий стаж. Вывести в новый файл список сотрудников учреждения,
удалив из него информацию о сотрудниках, принятых на работу в текущем году.

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
#include <iostream>
#include <fstream>
 
using namespace std;
 
//открываем глобальные файловые  потоки 
ifstream  in("input.txt"); 
ofstream  out("output.txt");
//описание структуры 
struct sotr 
{
int salary,year,experience; //з/п, год принятия на работу, стаж
char FIO[50], post[50];//ФИО, должность
void show(); //член-функция для вывода информации на экран 
void print();  //член-функция для вывода информации в файл
};
void sotr::show()
{
cout <<" "<<FIO <<" "<< year <<" "<<post <<" "<< salary<<" "<<experience<<"\n"<<endl; 
}
void sotr::print()
{
cout <<" "<<FIO <<" "<< year <<" "<<post <<" "<< salary<<" "<<experience<<"\n"<<endl; 
}
    int main()
 
{
    setlocale ( LC_ALL, "rus" );
sotr sotrudnik[25]; //описываем массив структур, где каждый элемент имеет тип sotr
int god; 
int i,j,n=0;
if(!in) cout<<"Oшибка при открытии файла input.txt\n"; 
else 
{
while(in.peek()!=EOF) //чтение данных из файла 
{
in >>sotrudnik[n].FIO; 
in >>sotrudnik[n].year; 
in >>sotrudnik[n].post; 
in >>sotrudnik[n].salary;
in >>sotrudnik[n].experience;
sotrudnik[n].show(); //вывод прочтенных данных на экран через член-функцию 
n++;
 
}
cout<<n<<endl;
int g=0;//кол-во повторных годов неугодных будем хранить
cout<<" Введите текущий год: "; 
 cin>>god ;
    for (i=0;i<n;i++)
    {
        if (sotrudnik[i].year==god)
        {
            g++;
        }
    }
 
 cout<<"g:"<<g<<endl;
 cout<<"\n"<<" Выполнили очистку сотрудников!"<<endl;
 cout<<"\n";
if(!out) cout<<"Oшибка при открытии файла output.txt\n"; 
else 
{
j=0;
int p=0;
int z=0;//счетчик повтора первоочередности
int r=0;
r=n;
        for(i=0;i<n;i++)
        {
                //поиск структуры по совпадению поля года для удаления 
                if(sotrudnik[i].year==god)
                { p=n;
                
                        if (i==z)
                        {r++;
                            //выполняем сдвиг в массиве на одну позицию
                                    for(j=r-1;j>i+1 ;j--)
                                    {
                                    sotrudnik[j+1]=sotrudnik[j];
                                     //уменьшаем количество сотрудников, избавившись от неугодных
                                    }
                        }
                                            else
                                                        //выполняем сдвиг в массиве на одну позицию
                                                        for(j=i;j<p-1 ;j++)
                                                        {
                                                        sotrudnik[j]=sotrudnik[j+1];
                                                         //уменьшаем количество сотрудников, избавившись от неугодных
                                                        }
                
                }
        z++;
        }
    if (r==n)
        {
        //записываем результата в новый файл 
            for(i=0;i<n-g;i++)
                {
                sotrudnik[i].print();//ввод данных на файл через член-функцию структуры
                }
        }
    else
        {
            for(i=n+g;i<r;i++)
                {
                sotrudnik[i].print();//ввод данных на файл через член-функцию структуры
                }
        }
}
}
in.close();out.close();  
return 0;
}
Укажите, что неправильно сделано, ибо программа не работает?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.06.2014, 21:28     Сделать задачу, используя структуру содержащую члены-данные и члены-функции
Посмотрите здесь:

Указатели на функции-члены C++
C++ Указатели на функции-члены
класс «Строка» (данные-члены класса – строчка, функции-члены класса – операции) C++
C++ Константные функции-члены ?
Упорядочить массив так, чтобы сначала иши упорядоченные положительные члены а потом упорядоченные отрицательные члены C++
C++ Не используя функций определить члены последовательности, являющиеся квадратами четных чисел
C++ Заменить некоторые члены последовательности используя цикл for
Константные функции-члены C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

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