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

Программирование комбинированных задач на языке С++ - C++

Восстановить пароль Регистрация
 
Deizven
0 / 0 / 0
Регистрация: 12.06.2013
Сообщений: 4
14.06.2013, 01:46     Программирование комбинированных задач на языке С++ #1
Помогите написать программу с использованием файлов и структур.
Заполнить расчетную ведомость:

Табельный номер ___Фамилия работника_______Всего начислено_____Всего вычтено_________Сальдо
___________________________________________________________________________долг____к выдаче
4215________________Котов_____________________128,15_________132,20____________*______*
4216________________Титов_____________________312,61__________83,72____________*_______*
4218________________Янош______________________147,45__________13,15____________*_______*

Всего_________________________________________________________________________*_______*
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
newyork7776
 Аватар для newyork7776
346 / 339 / 79
Регистрация: 21.05.2013
Сообщений: 1,305
Завершенные тесты: 1
14.06.2013, 02:25     Программирование комбинированных задач на языке С++ #2
А вашего кода нет?
Deizven
0 / 0 / 0
Регистрация: 12.06.2013
Сообщений: 4
14.06.2013, 03:09  [ТС]     Программирование комбинированных задач на языке С++ #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
#include <iostream.h>
#include <stdlib.h>
#include <fstream.h>
char Name[10];
struct ved
{ int tn;
char fam[10];
float nach;
float vich;
float dolg;
float vidach;
} worker;
 
void vvod()
{ofstream out_file(Name);
if(!out_file)
{cout<<"ERROR!!!";
exit(1);
}
int c;
do
{ 
cout<<"tabelniy nomer"<<endl;
cin>>worker.tn>>endl;
cout<<"familia"<<endl;
cin>>worker.fam>>endl;
cout<<"Nachisleno"<<endl;
cin>>worker.nach>>endl;
cout<<"Vichteno"<<endl;
cin>>worker.vich>>endl;
cout<<"Dolg"<<endl;
cin>>worker.dolg>>endl;
cout<<"Vidacha"<<endl;
cin>>worker.vidach>>endl;
cout<<"Prodolzhit?(yes-1!no-0)";
cin>>c;
}
while (c!=0);
cout <endl<<endl<<endl;
out_file.close();
}
newyork7776
 Аватар для newyork7776
346 / 339 / 79
Регистрация: 21.05.2013
Сообщений: 1,305
Завершенные тесты: 1
14.06.2013, 03:11     Программирование комбинированных задач на языке С++ #4
Вот код
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
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
#include <iostream>
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <string.h>
using namespace std;
FILE *fl;
typedef struct
{
    int number;
    char fio[30];
    int nach;
    int vich;
    int dolg;
unsigned char matem;
unsigned char oaip;
} robot;
robot praz[300]; // Масив структур
char name[20]; // Название файла
int vsegod=0;  //Всего долга
int nst=0; // Число введених структур
int menu(); // Меню
void nnf(); // Ввести ім’я файла
void newf(); // Создать новый файл
void spisok(); // Ввести список
void opf(); // Отрить файл
void resc(); // Вивести результат на екран
void resf(); // Вивести результат в файл
void dolg();  //Узнать долг
void vsegodolga(); // Узнать суму
int main()
{
    setlocale(LC_ALL, "Russian");
 
while (true)
{
switch (menu())
{
case 1: nnf(); break;
case 2: newf(); break;
case 3: spisok(); break;
case 4: opf(); break;
case 5: resc(); break;
case 6: resf(); break;
case 7: return 0;
default: "Введите првельно!";
}
puts("Press any key to continue");
getch(); system("cls");
}}
int menu() // Меню
{
cout << "Виберите" << endl;
cout << "1. Ввести имя файла" << endl;
cout << "2. Новый файл" << endl;
cout << "3. Заполнить файл" << endl;
cout << "4. Открыть файл" << endl;
cout << "5. Показать результат" << endl;
cout << "6. Записать в файл" << endl;
cout << "7. Выход" << endl;
int i;
cin >> i;
return i;
}
void nnf() // Ввести ім’я файла
{
cout << "Введите название фйла" << endl;
cin >> name;
}
void newf() // Створити новий файл
{
if ((fl = fopen(name,"wb"))==NULL)
{
cout << "Ошибка при создание"<<endl;
exit(1);
}
cout << "OK" << endl;
fclose(fl);
}
void spisok() // Ввести список
{
if ((fl = fopen(name,"rtb+"))==NULL)
{
cout << "Ошибка при создание"<<endl;
exit(1);
}
cout << "Введите количество cотрудников = ";
cin >> nst;
for (int i=0; i<nst; i++)
{
    cout << "Табельный номер : ";
    cin >> praz[i].number;
    cout << "Фамилия работника : ";
    cin >> praz[i].fio;
    cout << "Всего начислено: ";
    cin >> praz[i].nach;
    cout << "Всего вычтено : ";
    cin >> praz[i].vich;
 
fwrite( &praz[i], sizeof(robot), 1, fl );
}
fclose(fl);
}
void opf() // відкрити файл
{
if ((fl = fopen(name,"rb"))==NULL)
{
cout << "Ошибка при откритее"<<endl;
exit(1);
}
nst=0; robot std;
while(true)
{
int nwrt = fread( &std, sizeof(robot), 1, fl );
if (nwrt!=1) break;
praz[nst]=std;
cout << " Номер = "<<praz[nst].number << "\n     Фамилия работника = " << praz[nst].fio << "\n     Всего начислено = " 
<< praz[nst].nach << "\n     Всего вычтено = " << praz[nst].vich
<< "\n     Долг = " << praz[nst].dolg << endl;
nst++;
}
fclose(fl);
}
void resc() // Вивести результат на екран
{
for (int i=0; i<nst; i++)
praz[i].dolg=(praz[i].nach - praz[i].vich)
cout << " Долг " << praz[i].fio<< " = " <<praz[i].dolg << endl;
}
void resf() // Вивести результат в файл
{
char namet[30];
FILE *ft;
cout << "Введите имя файла" << endl;
cin >> namet;
if ((ft = fopen(namet,"w"))==NULL)
{
cout << "Ошибка при создание "<<endl;
exit(1);
}
char s[80];
for (int i=0; i<nst; i++)
praz[i].dolg=(praz[i].nach - praz[i].vich);
strcpy(s, praz[i].dolg);
strcat(s, "\n"); // Додати роздільник рядків
fputs(s, ft);
fclose(ft);
}
 
void doolg()
{
    for (int i=0;i<nst;i++)
        praz[i].dolg=(praz[i].nach - praz[i].vich)
}
 
 
void vsegodolga()
{
    for(int i=0;i<nst;i++)
        vsegod=praz[i].dolg+vsegod;
}
если у кого-то будет желание то пусть немного подправит, а то дальше я незнаю что можна сделать

Добавлено через 1 минуту
Deizven, подправь мой код пожалуста
Yandex
Объявления
14.06.2013, 03:11     Программирование комбинированных задач на языке С++
Ответ Создать тему
Опции темы

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