case 3: vedprint(); break;
case 4: break;
default: cout <<”\n неверный пункт меню”;
}
void DBOpen()
{ struct student z;
cout <<”\n Введите название группы:”;
cin>> group;
ifstream fin(group); //создание потока и открытие файла
if (!fin)
{cout<<”\n нельзя открыть файл” ; return;}
while (!fin.read((char*)&z, sizeof(struct student).eof())
{if (Add()!=0)
lastàs=z;}
fin.close();
return;
}
int Add()
{ref=last;
if((last=(struct ELIST*) calloc (1,sizeof(ELIST)))!= Ø)
{lastànext= Ø;
if (head== Ø) //список пуст?
head=ref=last;
else
{refànext=last;
ref=last;}
return1 ;}
else
{last=ref;
cout<<\n нет памяти!”;
return Ø;
}}
void vedprint()
{struct vedomost sved;
char vedfile[10];
strcpy (vedfile, group);
strcpy )vedfile+6, “.txt”);
ofstream fout (vedfile);
if(!fout) {cout <<”\n нельзя открыть файл!”; return;}
fout<<zag<<group; //вывод в файл загаловка таблицы
fout<<line<<shapka<<line //вывод шапки таблицы
for (ref=head; ref!= Ø; ref=refànext)
{sved.num=refàs.num; заполнение структуры
sved.FIO=refàs.FIO; sved типа vedomost
fout<<sved<<line; //вывод строки ведомости
}
fout.close();
}
Задача №4 (проверить, максимальный оклад, минимальный)
ДАНО: Анкетные данные сотрудников предприятия содержат следующие данные:
ф.и.о. |
пол |
возраст |
должность |
оклад |
ТРЕБУЕТСЯ: Составить программу на языке С++ для подсчёта отношения максимального оклада мужчин к максимальному окладу женщин.
РЕШЕНИЕ:
#include <stdio.h>
Struct anketa {
char fio[20];
char pol;
int vozr;
char dolg[10];
int oklad;
} mas[100];
int n=100;
int maxoklad(anketa mas[],int n,char zpol)
{
int i;max=0;
for (i=0;i<n;i++)
if (mas[i].pol==zpol) ff(mas[i].oklad>max))
max=mas[i].oklad;
return max;
}
Void VVODDAN(anketa mas[],int n)
{
int i;
for (i=0;i<n;i++)
{
Printf(“\n Введите ФИО:\n”);
Scanf(“%s”,&mas[i].fio);
Printf(“\n Введите пол:\n”);
Scanf(“%с”,&mas[i].pol);
Printf(“\n Введите возраст:\n”);
Scanf(“%s”,&mas[i].vozr);
Printf(“\n Введите должность:\n”);
Scanf(“%s”,&mas[i].dolg);
Printf(“\n Введите оклад:\n”);
Scanf(“%s”,&mas[i].oklad);
}
}
Main
{
int x=0,y=0;
VVODDAN(mas,n) ;
X=maxoklad (mas,n,’М’);
Y=minoklad (mas,n,’Ж’);
Printf (“\n Отношение максимального оклада мужчин к минимальному окладу женщин равно %f”,x/y);
}
Задача №5
ДАНО: Каждая запись файла сотрудников предприятия. содержит следующую информацию:
табельный номер |
ф.и.о. |
пол |
должность |
дата рождения |
оклад |
ТРЕБУЕТСЯ:
1. Разработать программу на языке С++ для создания и обработки файла сотрудников предприятия.
2. Выдать на печать в виде таблицы анкетные данные сотрудников-инженеров заданного возраста и оклада.
РЕШЕНИЕ:
#include <stdio.h>
#define line printf(“\n -----------------------------------------------------------------------”);
#define shapka printf(“\n|табельный номер|Ф.И.О.|пол| должность|день рождения|оклад|”);
Struct anketa {
int tnum;
char fio[20];
char pol;
char dolg[10];
int dd,mm,yy;
int oklad;
}
char filename[10]=”base.txt”;
file fptz;
void vvodBD( )
{
anketa zap;
fptr=fopen(filename,”a”);
if (fptr= =0)
printf(‘\n Файл %s невозможно открыть”,filename);
exit 1; /*выход по ошибке*/
printf(“\n Введите таб.номер:\t”);
Scanf(“%d”,&zap.tnum);
Printf(“\n Введите ФИО:\t”);
Scanf(“%s”,&zap.fio);
Printf(“\n Введите пол:\t”);
Scanf(“%c”,&zap.pol);
Printf(“\n Введите должность:\t”);
Scanf(“%s”,&zap.dolg);
Printf(“\n Введите дату рождения dd.mm.yy:\t”);
Scanf(“%d%d%d”,&zap.dd,&zap.mm,&zap.yy);
Printf(“\nВведите оклад: \t”);
Scanf(“%d”,&zap.oklad);
fwrite(&zap,sizeof(struct anketa),1,fptr);
fclose(fptr);
return;
}
void printBD( )
{
Struct anketa zap;
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.